Use the BN_is_odd() macro in place of code that (inconsistently) does much
the same thing. Also, I have some stuff on the back-burner related to some BN_CTX notes from Peter Gutmann about his cryptlib hacks to the bignum code. The BN_CTX comments are there to remind me of some relevant points in the code.
This commit is contained in:
parent
2ae1ea3788
commit
82b2f57e30
@ -361,6 +361,7 @@ int BN_mod_exp_mont(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
|
|||||||
int start=1,ts=0;
|
int start=1,ts=0;
|
||||||
BIGNUM *d,*r;
|
BIGNUM *d,*r;
|
||||||
const BIGNUM *aa;
|
const BIGNUM *aa;
|
||||||
|
/* TODO: BN_CTX??? */
|
||||||
BIGNUM val[TABLE_SIZE];
|
BIGNUM val[TABLE_SIZE];
|
||||||
BN_MONT_CTX *mont=NULL;
|
BN_MONT_CTX *mont=NULL;
|
||||||
|
|
||||||
@ -368,7 +369,7 @@ int BN_mod_exp_mont(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
|
|||||||
bn_check_top(p);
|
bn_check_top(p);
|
||||||
bn_check_top(m);
|
bn_check_top(m);
|
||||||
|
|
||||||
if (!(m->d[0] & 1))
|
if (!BN_is_odd(m))
|
||||||
{
|
{
|
||||||
BNerr(BN_F_BN_MOD_EXP_MONT,BN_R_CALLED_WITH_EVEN_MODULUS);
|
BNerr(BN_F_BN_MOD_EXP_MONT,BN_R_CALLED_WITH_EVEN_MODULUS);
|
||||||
return(0);
|
return(0);
|
||||||
@ -524,7 +525,7 @@ int BN_mod_exp_mont_word(BIGNUM *rr, BN_ULONG a, const BIGNUM *p,
|
|||||||
bn_check_top(p);
|
bn_check_top(p);
|
||||||
bn_check_top(m);
|
bn_check_top(m);
|
||||||
|
|
||||||
if (m->top == 0 || !(m->d[0] & 1))
|
if (!BN_is_odd(m))
|
||||||
{
|
{
|
||||||
BNerr(BN_F_BN_MOD_EXP_MONT_WORD,BN_R_CALLED_WITH_EVEN_MODULUS);
|
BNerr(BN_F_BN_MOD_EXP_MONT_WORD,BN_R_CALLED_WITH_EVEN_MODULUS);
|
||||||
return(0);
|
return(0);
|
||||||
@ -640,13 +641,13 @@ err:
|
|||||||
|
|
||||||
|
|
||||||
/* The old fallback, simple version :-) */
|
/* The old fallback, simple version :-) */
|
||||||
int BN_mod_exp_simple(BIGNUM *r,
|
int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
|
||||||
const BIGNUM *a, const BIGNUM *p, const BIGNUM *m,
|
const BIGNUM *m, BN_CTX *ctx)
|
||||||
BN_CTX *ctx)
|
|
||||||
{
|
{
|
||||||
int i,j,bits,ret=0,wstart,wend,window,wvalue,ts=0;
|
int i,j,bits,ret=0,wstart,wend,window,wvalue,ts=0;
|
||||||
int start=1;
|
int start=1;
|
||||||
BIGNUM *d;
|
BIGNUM *d;
|
||||||
|
/* TODO: BN_CTX?? */
|
||||||
BIGNUM val[TABLE_SIZE];
|
BIGNUM val[TABLE_SIZE];
|
||||||
|
|
||||||
bits=BN_num_bits(p);
|
bits=BN_num_bits(p);
|
||||||
|
@ -123,6 +123,7 @@ int BN_mod_exp2_mont(BIGNUM *rr, const BIGNUM *a1, const BIGNUM *p1,
|
|||||||
int r_is_one=1,ts1=0,ts2=0;
|
int r_is_one=1,ts1=0,ts2=0;
|
||||||
BIGNUM *d,*r;
|
BIGNUM *d,*r;
|
||||||
const BIGNUM *a_mod_m;
|
const BIGNUM *a_mod_m;
|
||||||
|
/* TODO: BN_CTX??? */
|
||||||
BIGNUM val1[TABLE_SIZE], val2[TABLE_SIZE];
|
BIGNUM val1[TABLE_SIZE], val2[TABLE_SIZE];
|
||||||
BN_MONT_CTX *mont=NULL;
|
BN_MONT_CTX *mont=NULL;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user