projects
/
oweals
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
don't violate the bn_check_top assertion in BN_mod_inverse_no_branch()
[oweals/openssl.git]
/
crypto
/
bn
/
bn_mod.c
diff --git
a/crypto/bn/bn_mod.c
b/crypto/bn/bn_mod.c
index 92fe11684c8c914a7a006fc72f5693841c8fcb87..77d6ddb91a5fc9fe1b89ec1caa9579d1c95baa10 100644
(file)
--- a/
crypto/bn/bn_mod.c
+++ b/
crypto/bn/bn_mod.c
@@
-149,9
+149,9
@@
int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, BN_
* and less than m */
int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m)
{
* and less than m */
int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m)
{
- if (!BN_add(r, a, b)) return 0;
- if (BN_cmp(r, m) >= 0)
- return BN_sub(r, r, m);
+ if (!BN_
u
add(r, a, b)) return 0;
+ if (BN_
u
cmp(r, m) >= 0)
+ return BN_
u
sub(r, r, m);
return 1;
}
return 1;
}
@@
-192,6
+192,7
@@
int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
else
{ if (!BN_mul(t,a,b,ctx)) goto err; }
if (!BN_nnmod(r,t,m,ctx)) goto err;
else
{ if (!BN_mul(t,a,b,ctx)) goto err; }
if (!BN_nnmod(r,t,m,ctx)) goto err;
+ bn_check_top(r);
ret=1;
err:
BN_CTX_end(ctx);
ret=1;
err:
BN_CTX_end(ctx);
@@
-210,6
+211,7
@@
int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx)
int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx)
{
if (!BN_lshift1(r, a)) return 0;
int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx)
{
if (!BN_lshift1(r, a)) return 0;
+ bn_check_top(r);
return BN_nnmod(r, r, m, ctx);
}
return BN_nnmod(r, r, m, ctx);
}
@@
-219,6
+221,7
@@
int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx)
int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m)
{
if (!BN_lshift1(r, a)) return 0;
int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m)
{
if (!BN_lshift1(r, a)) return 0;
+ bn_check_top(r);
if (BN_cmp(r, m) >= 0)
return BN_sub(r, r, m);
return 1;
if (BN_cmp(r, m) >= 0)
return BN_sub(r, r, m);
return 1;
@@
-240,6
+243,7
@@
int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m, BN_CTX *ct
}
ret = BN_mod_lshift_quick(r, r, n, (abs_m ? abs_m : m));
}
ret = BN_mod_lshift_quick(r, r, n, (abs_m ? abs_m : m));
+ bn_check_top(r);
if (abs_m)
BN_free(abs_m);
if (abs_m)
BN_free(abs_m);
@@
-291,6
+295,7
@@
int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m)
if (!BN_sub(r, r, m)) return 0;
}
}
if (!BN_sub(r, r, m)) return 0;
}
}
+ bn_check_top(r);
return 1;
}
return 1;
}