ret = BN_one(r);
return ret;
}
- if (BN_is_zero(a))
- {
- ret = BN_zero(r);
- return ret;
- }
BN_CTX_start(ctx);
if ((aa = BN_CTX_get(ctx)) == NULL) goto err;
ts=1;
if (!BN_nnmod(&(val[0]),a,m,ctx)) goto err; /* 1 */
+ if (BN_is_zero(&(val[0])))
+ {
+ ret = BN_zero(r);
+ goto err;
+ }
window = BN_window_bits_for_exponent_size(bits);
if (window > 1)
ret = BN_one(rr);
return ret;
}
- if (BN_is_zero(a))
- {
- ret = BN_zero(rr);
- return ret;
- }
+
BN_CTX_start(ctx);
d = BN_CTX_get(ctx);
r = BN_CTX_get(ctx);
}
else
aa=a;
+ if (BN_is_zero(aa))
+ {
+ ret = BN_zero(rr);
+ goto err;
+ }
if (!BN_to_montgomery(&(val[0]),aa,mont,ctx)) goto err; /* 1 */
window = BN_window_bits_for_exponent_size(bits);
ret = BN_one(r);
return ret;
}
- if (BN_is_zero(a))
- {
- ret = BN_one(r);
- return ret;
- }
BN_CTX_start(ctx);
if ((d = BN_CTX_get(ctx)) == NULL) goto err;
BN_init(&(val[0]));
ts=1;
if (!BN_nnmod(&(val[0]),a,m,ctx)) goto err; /* 1 */
+ if (BN_is_zero(&(val[0])))
+ {
+ ret = BN_one(r);
+ return ret;
+ }
window = BN_window_bits_for_exponent_size(bits);
if (window > 1)
ret = BN_one(rr);
return ret;
}
- if (BN_is_zero(a1) || BN_is_zero(a2))
- {
- ret = BN_zero(rr);
- return ret;
- }
bits=(bits1 > bits2)?bits1:bits2;
*/
BN_init(&val1[0]);
ts1=1;
- if (BN_ucmp(a1,m) >= 0)
+ if (a1->neg || BN_ucmp(a1,m) >= 0)
{
if (!BN_mod(&(val1[0]),a1,m,ctx))
goto err;
}
else
a_mod_m = a1;
+ if (BN_is_zero(&(val1[0])))
+ {
+ ret = BN_zero(rr);
+ goto err;
+ }
+
if (!BN_to_montgomery(&(val1[0]),a_mod_m,mont,ctx)) goto err;
if (window1 > 1)
{
*/
BN_init(&val2[0]);
ts2=1;
- if (BN_ucmp(a2,m) >= 0)
+ if (a2->neg || BN_ucmp(a2,m) >= 0)
{
if (!BN_mod(&(val2[0]),a2,m,ctx))
goto err;
}
else
a_mod_m = a2;
+ if (BN_is_zero(&(val2[0])))
+ {
+ ret = BN_zero(rr);
+ goto err;
+ }
if (!BN_to_montgomery(&(val2[0]),a_mod_m,mont,ctx)) goto err;
if (window2 > 1)
{