Merge pull request #142 from fperrad/20181228_macros
refactor around macros
This commit is contained in:
commit
adb8d8bd0e
@ -24,7 +24,7 @@ int fast_mp_invmod(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
int res, neg;
|
||||
|
||||
/* 2. [modified] b must be odd */
|
||||
if (mp_iseven(b) == MP_YES) {
|
||||
if (IS_EVEN(b)) {
|
||||
return MP_VAL;
|
||||
}
|
||||
|
||||
@ -44,7 +44,7 @@ int fast_mp_invmod(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
}
|
||||
|
||||
/* if one of x,y is zero return an error! */
|
||||
if ((mp_iszero(&x) == MP_YES) || (mp_iszero(&y) == MP_YES)) {
|
||||
if (IS_ZERO(&x) || IS_ZERO(&y)) {
|
||||
res = MP_VAL;
|
||||
goto LBL_ERR;
|
||||
}
|
||||
@ -60,13 +60,13 @@ int fast_mp_invmod(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
|
||||
top:
|
||||
/* 4. while u is even do */
|
||||
while (mp_iseven(&u) == MP_YES) {
|
||||
while (IS_EVEN(&u)) {
|
||||
/* 4.1 u = u/2 */
|
||||
if ((res = mp_div_2(&u, &u)) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
/* 4.2 if B is odd then */
|
||||
if (mp_isodd(&B) == MP_YES) {
|
||||
if (IS_ODD(&B)) {
|
||||
if ((res = mp_sub(&B, &x, &B)) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
@ -78,13 +78,13 @@ top:
|
||||
}
|
||||
|
||||
/* 5. while v is even do */
|
||||
while (mp_iseven(&v) == MP_YES) {
|
||||
while (IS_EVEN(&v)) {
|
||||
/* 5.1 v = v/2 */
|
||||
if ((res = mp_div_2(&v, &v)) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
/* 5.2 if D is odd then */
|
||||
if (mp_isodd(&D) == MP_YES) {
|
||||
if (IS_ODD(&D)) {
|
||||
/* D = (D-x)/2 */
|
||||
if ((res = mp_sub(&D, &x, &D)) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
@ -118,7 +118,7 @@ top:
|
||||
}
|
||||
|
||||
/* if not zero goto step 4 */
|
||||
if (mp_iszero(&u) == MP_NO) {
|
||||
if (!IS_ZERO(&u)) {
|
||||
goto top;
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,7 @@ int mp_cnt_lsb(const mp_int *a)
|
||||
mp_digit q, qq;
|
||||
|
||||
/* easy out */
|
||||
if (mp_iszero(a) == MP_YES) {
|
||||
if (IS_ZERO(a)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -19,7 +19,7 @@ int mp_count_bits(const mp_int *a)
|
||||
mp_digit q;
|
||||
|
||||
/* shortcut */
|
||||
if (a->used == 0) {
|
||||
if (IS_ZERO(a)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -21,7 +21,7 @@ int mp_div(const mp_int *a, const mp_int *b, mp_int *c, mp_int *d)
|
||||
int res, n, n2;
|
||||
|
||||
/* is divisor zero ? */
|
||||
if (mp_iszero(b) == MP_YES) {
|
||||
if (IS_ZERO(b)) {
|
||||
return MP_VAL;
|
||||
}
|
||||
|
||||
@ -71,11 +71,11 @@ int mp_div(const mp_int *a, const mp_int *b, mp_int *c, mp_int *d)
|
||||
n2 = (a->sign == b->sign) ? MP_ZPOS : MP_NEG;
|
||||
if (c != NULL) {
|
||||
mp_exch(c, &q);
|
||||
c->sign = (mp_iszero(c) == MP_YES) ? MP_ZPOS : n2;
|
||||
c->sign = IS_ZERO(c) ? MP_ZPOS : n2;
|
||||
}
|
||||
if (d != NULL) {
|
||||
mp_exch(d, &ta);
|
||||
d->sign = (mp_iszero(d) == MP_YES) ? MP_ZPOS : n;
|
||||
d->sign = IS_ZERO(d) ? MP_ZPOS : n;
|
||||
}
|
||||
LBL_ERR:
|
||||
mp_clear_multi(&ta, &tb, &tq, &q, NULL);
|
||||
@ -103,7 +103,7 @@ int mp_div(const mp_int *a, const mp_int *b, mp_int *c, mp_int *d)
|
||||
int res, n, t, i, norm, neg;
|
||||
|
||||
/* is divisor zero ? */
|
||||
if (mp_iszero(b) == MP_YES) {
|
||||
if (IS_ZERO(b)) {
|
||||
return MP_VAL;
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,7 @@ int mp_div_d(const mp_int *a, mp_digit b, mp_int *c, mp_digit *d)
|
||||
}
|
||||
|
||||
/* quick outs */
|
||||
if ((b == 1u) || (mp_iszero(a) == MP_YES)) {
|
||||
if ((b == 1u) || IS_ZERO(a)) {
|
||||
if (d != NULL) {
|
||||
*d = 0;
|
||||
}
|
||||
|
@ -86,7 +86,7 @@ int mp_exptmod(const mp_int *G, const mp_int *X, const mp_int *P, mp_int *Y)
|
||||
|
||||
/* if the modulus is odd or dr != 0 use the montgomery method */
|
||||
#ifdef BN_MP_EXPTMOD_FAST_C
|
||||
if ((mp_isodd(P) == MP_YES) || (dr != 0)) {
|
||||
if (IS_ODD(P) || (dr != 0)) {
|
||||
return mp_exptmod_fast(G, X, P, Y, dr);
|
||||
} else {
|
||||
#endif
|
||||
|
@ -37,7 +37,7 @@ int mp_exteuclid(const mp_int *a, const mp_int *b, mp_int *U1, mp_int *U2, mp_in
|
||||
}
|
||||
|
||||
/* loop while v3 != 0 */
|
||||
while (mp_iszero(&v3) == MP_NO) {
|
||||
while (!IS_ZERO(&v3)) {
|
||||
/* q = u3/v3 */
|
||||
if ((err = mp_div(&u3, &v3, &q, NULL)) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
|
@ -19,10 +19,10 @@ int mp_gcd(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
int k, u_lsb, v_lsb, res;
|
||||
|
||||
/* either zero than gcd is the largest */
|
||||
if (mp_iszero(a) == MP_YES) {
|
||||
if (IS_ZERO(a)) {
|
||||
return mp_abs(b, c);
|
||||
}
|
||||
if (mp_iszero(b) == MP_YES) {
|
||||
if (IS_ZERO(b)) {
|
||||
return mp_abs(a, c);
|
||||
}
|
||||
|
||||
@ -67,7 +67,7 @@ int mp_gcd(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
}
|
||||
}
|
||||
|
||||
while (mp_iszero(&v) == MP_NO) {
|
||||
while (!IS_ZERO(&v)) {
|
||||
/* make sure v is the largest */
|
||||
if (mp_cmp_mag(&u, &v) == MP_GT) {
|
||||
/* swap u and v to make sure v is >= u */
|
||||
|
@ -33,7 +33,7 @@ int mp_get_bit(const mp_int *a, int b)
|
||||
* otherwise (limb >= a->used) would be true for a = 0
|
||||
*/
|
||||
|
||||
if (mp_iszero(a) != MP_NO) {
|
||||
if (IS_ZERO(a)) {
|
||||
return MP_NO;
|
||||
}
|
||||
|
||||
|
@ -19,10 +19,10 @@ double mp_get_double(const mp_int *a)
|
||||
for (i = 0; i < DIGIT_BIT; ++i) {
|
||||
fac *= 2.0;
|
||||
}
|
||||
for (i = USED(a); i --> 0;) {
|
||||
for (i = a->used; i --> 0;) {
|
||||
d = (d * fac) + (double)DIGIT(a, i);
|
||||
}
|
||||
return (mp_isneg(a) != MP_NO) ? -d : d;
|
||||
return (a->sign == MP_NEG) ? -d : d;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -18,7 +18,7 @@ unsigned long mp_get_int(const mp_int *a)
|
||||
int i;
|
||||
mp_min_u32 res;
|
||||
|
||||
if (a->used == 0) {
|
||||
if (IS_ZERO(a)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,7 @@ unsigned long mp_get_long(const mp_int *a)
|
||||
int i;
|
||||
unsigned long res;
|
||||
|
||||
if (a->used == 0) {
|
||||
if (IS_ZERO(a)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,7 @@ unsigned long long mp_get_long_long(const mp_int *a)
|
||||
int i;
|
||||
unsigned long long res;
|
||||
|
||||
if (a->used == 0) {
|
||||
if (IS_ZERO(a)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,7 @@ int mp_invmod(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
|
||||
#ifdef BN_FAST_MP_INVMOD_C
|
||||
/* if the modulus is odd we can use a faster routine instead */
|
||||
if ((mp_isodd(b) == MP_YES)) {
|
||||
if (IS_ODD(b)) {
|
||||
return fast_mp_invmod(a, b, c);
|
||||
}
|
||||
#endif
|
||||
|
@ -19,7 +19,7 @@ int mp_invmod_slow(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
int res;
|
||||
|
||||
/* b cannot be negative */
|
||||
if ((b->sign == MP_NEG) || (mp_iszero(b) == MP_YES)) {
|
||||
if ((b->sign == MP_NEG) || IS_ZERO(b)) {
|
||||
return MP_VAL;
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@ int mp_invmod_slow(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
}
|
||||
|
||||
/* 2. [modified] if x,y are both even then return an error! */
|
||||
if ((mp_iseven(&x) == MP_YES) && (mp_iseven(&y) == MP_YES)) {
|
||||
if (IS_EVEN(&x) && IS_EVEN(&y)) {
|
||||
res = MP_VAL;
|
||||
goto LBL_ERR;
|
||||
}
|
||||
@ -55,13 +55,13 @@ int mp_invmod_slow(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
|
||||
top:
|
||||
/* 4. while u is even do */
|
||||
while (mp_iseven(&u) == MP_YES) {
|
||||
while (IS_EVEN(&u)) {
|
||||
/* 4.1 u = u/2 */
|
||||
if ((res = mp_div_2(&u, &u)) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
/* 4.2 if A or B is odd then */
|
||||
if ((mp_isodd(&A) == MP_YES) || (mp_isodd(&B) == MP_YES)) {
|
||||
if (IS_ODD(&A) || IS_ODD(&B)) {
|
||||
/* A = (A+y)/2, B = (B-x)/2 */
|
||||
if ((res = mp_add(&A, &y, &A)) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
@ -80,13 +80,13 @@ top:
|
||||
}
|
||||
|
||||
/* 5. while v is even do */
|
||||
while (mp_iseven(&v) == MP_YES) {
|
||||
while (IS_EVEN(&v)) {
|
||||
/* 5.1 v = v/2 */
|
||||
if ((res = mp_div_2(&v, &v)) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
/* 5.2 if C or D is odd then */
|
||||
if ((mp_isodd(&C) == MP_YES) || (mp_isodd(&D) == MP_YES)) {
|
||||
if (IS_ODD(&C) || IS_ODD(&D)) {
|
||||
/* C = (C+y)/2, D = (D-x)/2 */
|
||||
if ((res = mp_add(&C, &y, &C)) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
@ -134,7 +134,7 @@ top:
|
||||
}
|
||||
|
||||
/* if not zero goto step 4 */
|
||||
if (mp_iszero(&u) == MP_NO)
|
||||
if (!IS_ZERO(&u))
|
||||
goto top;
|
||||
|
||||
/* now a = C, b = D, gcd == g*v */
|
||||
|
@ -49,8 +49,7 @@ int mp_is_square(const mp_int *arg, int *ret)
|
||||
return MP_VAL;
|
||||
}
|
||||
|
||||
/* digits used? (TSD) */
|
||||
if (arg->used == 0) {
|
||||
if (IS_ZERO(arg)) {
|
||||
return MP_OKAY;
|
||||
}
|
||||
|
||||
|
24
bn_mp_iseven.c
Normal file
24
bn_mp_iseven.c
Normal file
@ -0,0 +1,24 @@
|
||||
#include "tommath_private.h"
|
||||
#ifdef BN_MP_ISEVEN_C
|
||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
||||
*
|
||||
* LibTomMath is a library that provides multiple-precision
|
||||
* integer arithmetic as well as number theoretic functionality.
|
||||
*
|
||||
* The library was designed directly after the MPI library by
|
||||
* Michael Fromberger but has been written from scratch with
|
||||
* additional optimizations in place.
|
||||
*
|
||||
* The library is free for all purposes without any express
|
||||
* guarantee it works.
|
||||
*/
|
||||
|
||||
int mp_iseven(const mp_int *a)
|
||||
{
|
||||
return IS_EVEN(a) ? MP_YES : MP_NO;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* ref: $Format:%D$ */
|
||||
/* git commit: $Format:%H$ */
|
||||
/* commit time: $Format:%ai$ */
|
24
bn_mp_isodd.c
Normal file
24
bn_mp_isodd.c
Normal file
@ -0,0 +1,24 @@
|
||||
#include "tommath_private.h"
|
||||
#ifdef BN_MP_ISODD_C
|
||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
||||
*
|
||||
* LibTomMath is a library that provides multiple-precision
|
||||
* integer arithmetic as well as number theoretic functionality.
|
||||
*
|
||||
* The library was designed directly after the MPI library by
|
||||
* Michael Fromberger but has been written from scratch with
|
||||
* additional optimizations in place.
|
||||
*
|
||||
* The library is free for all purposes without any express
|
||||
* guarantee it works.
|
||||
*/
|
||||
|
||||
int mp_isodd(const mp_int *a)
|
||||
{
|
||||
return IS_ODD(a) ? MP_YES : MP_NO;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* ref: $Format:%D$ */
|
||||
/* git commit: $Format:%H$ */
|
||||
/* commit time: $Format:%ai$ */
|
@ -18,7 +18,7 @@
|
||||
int mp_jacobi(const mp_int *a, const mp_int *n, int *c)
|
||||
{
|
||||
/* if a < 0 return MP_VAL */
|
||||
if (mp_isneg(a) == MP_YES) {
|
||||
if (a->sign == MP_NEG) {
|
||||
return MP_VAL;
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@ int mp_kronecker(const mp_int *a, const mp_int *p, int *c)
|
||||
|
||||
static const int table[8] = {0, 1, 0, -1, 0, -1, 0, 1};
|
||||
|
||||
if (mp_iszero(p) != MP_NO) {
|
||||
if (IS_ZERO(p)) {
|
||||
if ((a->used == 1) && (a->dp[0] == 1u)) {
|
||||
*c = 1;
|
||||
return e;
|
||||
@ -45,7 +45,7 @@ int mp_kronecker(const mp_int *a, const mp_int *p, int *c)
|
||||
}
|
||||
}
|
||||
|
||||
if ((mp_iseven(a) != MP_NO) && (mp_iseven(p) != MP_NO)) {
|
||||
if (IS_EVEN(a) && IS_EVEN(p)) {
|
||||
*c = 0;
|
||||
return e;
|
||||
}
|
||||
@ -80,7 +80,7 @@ int mp_kronecker(const mp_int *a, const mp_int *p, int *c)
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
if (mp_iszero(&a1) != MP_NO) {
|
||||
if (IS_ZERO(&a1)) {
|
||||
if (mp_cmp_d(&p1, 1uL) == MP_EQ) {
|
||||
*c = k;
|
||||
goto LBL_KRON;
|
||||
|
@ -22,7 +22,7 @@ int mp_lshd(mp_int *a, int b)
|
||||
return MP_OKAY;
|
||||
}
|
||||
/* no need to shift 0 around */
|
||||
if (mp_iszero(a) == MP_YES) {
|
||||
if (IS_ZERO(a)) {
|
||||
return MP_OKAY;
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,7 @@ int mp_mod(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
return res;
|
||||
}
|
||||
|
||||
if ((mp_iszero(&t) != MP_NO) || (t.sign == b->sign)) {
|
||||
if (IS_ZERO(&t) || (t.sign == b->sign)) {
|
||||
res = MP_OKAY;
|
||||
mp_exch(&t, c);
|
||||
} else {
|
||||
|
@ -22,7 +22,7 @@ int mp_neg(const mp_int *a, mp_int *b)
|
||||
}
|
||||
}
|
||||
|
||||
if (mp_iszero(b) != MP_YES) {
|
||||
if (!IS_ZERO(b)) {
|
||||
b->sign = (a->sign == MP_ZPOS) ? MP_NEG : MP_ZPOS;
|
||||
} else {
|
||||
b->sign = MP_ZPOS;
|
||||
|
@ -180,7 +180,7 @@ int mp_prime_frobenius_underwood(const mp_int *N, int *result)
|
||||
if ((e = mp_mod(&T1z, N, &T1z)) != MP_OKAY) {
|
||||
goto LBL_FU_ERR;
|
||||
}
|
||||
if ((mp_iszero(&sz) != MP_NO) && (mp_cmp(&tz, &T1z) == MP_EQ)) {
|
||||
if (IS_ZERO(&sz) && (mp_cmp(&tz, &T1z) == MP_EQ)) {
|
||||
*result = MP_YES;
|
||||
goto LBL_FU_ERR;
|
||||
}
|
||||
|
@ -51,7 +51,7 @@ int mp_prime_is_prime(const mp_int *a, int t, int *result)
|
||||
}
|
||||
|
||||
/* N must be odd */
|
||||
if (mp_iseven(a) == MP_YES) {
|
||||
if (IS_EVEN(a)) {
|
||||
return MP_OKAY;
|
||||
}
|
||||
/* N is not a perfect square: floor(sqrt(N))^2 != N */
|
||||
|
@ -78,7 +78,7 @@ int mp_prime_next_prime(mp_int *a, int t, int bbs_style)
|
||||
};
|
||||
}
|
||||
} else {
|
||||
if (mp_iseven(a) == MP_YES) {
|
||||
if (IS_EVEN(a)) {
|
||||
/* force odd */
|
||||
if ((err = mp_sub_d(a, 1uL, a)) != MP_OKAY) {
|
||||
return err;
|
||||
|
@ -296,7 +296,7 @@ int mp_prime_strong_lucas_selfridge(const mp_int *a, int *result)
|
||||
if ((e = mp_add(&T1z, &T2z, &Uz)) != MP_OKAY) {
|
||||
goto LBL_LS_ERR;
|
||||
}
|
||||
if (mp_isodd(&Uz) != MP_NO) {
|
||||
if (IS_ODD(&Uz)) {
|
||||
if ((e = mp_add(&Uz, a, &Uz)) != MP_OKAY) {
|
||||
goto LBL_LS_ERR;
|
||||
}
|
||||
@ -306,7 +306,7 @@ int mp_prime_strong_lucas_selfridge(const mp_int *a, int *result)
|
||||
* Thomas R. Nicely used GMP's mpz_fdiv_q_2exp().
|
||||
* But mp_div_2() does not do so, it is truncating instead.
|
||||
*/
|
||||
oddness = mp_isodd(&Uz);
|
||||
oddness = IS_ODD(&Uz) ? MP_YES : MP_NO;
|
||||
if ((e = mp_div_2(&Uz, &Uz)) != MP_OKAY) {
|
||||
goto LBL_LS_ERR;
|
||||
}
|
||||
@ -318,12 +318,12 @@ int mp_prime_strong_lucas_selfridge(const mp_int *a, int *result)
|
||||
if ((e = mp_add(&T3z, &T4z, &Vz)) != MP_OKAY) {
|
||||
goto LBL_LS_ERR;
|
||||
}
|
||||
if (mp_isodd(&Vz) != MP_NO) {
|
||||
if (IS_ODD(&Vz)) {
|
||||
if ((e = mp_add(&Vz, a, &Vz)) != MP_OKAY) {
|
||||
goto LBL_LS_ERR;
|
||||
}
|
||||
}
|
||||
oddness = mp_isodd(&Vz);
|
||||
oddness = IS_ODD(&Vz) ? MP_YES : MP_NO;
|
||||
if ((e = mp_div_2(&Vz, &Vz)) != MP_OKAY) {
|
||||
goto LBL_LS_ERR;
|
||||
}
|
||||
@ -350,7 +350,7 @@ int mp_prime_strong_lucas_selfridge(const mp_int *a, int *result)
|
||||
|
||||
/* If U_d or V_d is congruent to 0 mod N, then N is a prime or a
|
||||
strong Lucas pseudoprime. */
|
||||
if ((mp_iszero(&Uz) != MP_NO) || (mp_iszero(&Vz) != MP_NO)) {
|
||||
if (IS_ZERO(&Uz) || IS_ZERO(&Vz)) {
|
||||
*result = MP_YES;
|
||||
goto LBL_LS_ERR;
|
||||
}
|
||||
@ -381,7 +381,7 @@ int mp_prime_strong_lucas_selfridge(const mp_int *a, int *result)
|
||||
if ((e = mp_mod(&Vz, a, &Vz)) != MP_OKAY) {
|
||||
goto LBL_LS_ERR;
|
||||
}
|
||||
if (mp_iszero(&Vz) != MP_NO) {
|
||||
if (IS_ZERO(&Vz)) {
|
||||
*result = MP_YES;
|
||||
goto LBL_LS_ERR;
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ int mp_radix_size(const mp_int *a, int radix, int *size)
|
||||
return MP_VAL;
|
||||
}
|
||||
|
||||
if (mp_iszero(a) == MP_YES) {
|
||||
if (IS_ZERO(a)) {
|
||||
*size = 2;
|
||||
return MP_OKAY;
|
||||
}
|
||||
@ -54,7 +54,7 @@ int mp_radix_size(const mp_int *a, int radix, int *size)
|
||||
t.sign = MP_ZPOS;
|
||||
|
||||
/* fetch out all of the digits */
|
||||
while (mp_iszero(&t) == MP_NO) {
|
||||
while (!IS_ZERO(&t)) {
|
||||
if ((res = mp_div_d(&t, (mp_digit)radix, &t, &d)) != MP_OKAY) {
|
||||
mp_clear(&t);
|
||||
return res;
|
||||
|
@ -76,7 +76,7 @@ int mp_read_radix(mp_int *a, const char *str, int radix)
|
||||
}
|
||||
|
||||
/* set the sign only if a != 0 */
|
||||
if (mp_iszero(a) != MP_YES) {
|
||||
if (!IS_ZERO(a)) {
|
||||
a->sign = neg;
|
||||
}
|
||||
return MP_OKAY;
|
||||
|
@ -41,8 +41,8 @@ int mp_set_double(mp_int *a, double b)
|
||||
return res;
|
||||
}
|
||||
|
||||
if (((cast.bits >> 63) != 0ULL) && (mp_iszero(a) == MP_NO)) {
|
||||
SIGN(a) = MP_NEG;
|
||||
if (((cast.bits >> 63) != 0ULL) && !IS_ZERO(a)) {
|
||||
a->sign = MP_NEG;
|
||||
}
|
||||
|
||||
return MP_OKAY;
|
||||
|
@ -24,7 +24,7 @@ int mp_sqrt(const mp_int *arg, mp_int *ret)
|
||||
}
|
||||
|
||||
/* easy out */
|
||||
if (mp_iszero(arg) == MP_YES) {
|
||||
if (IS_ZERO(arg)) {
|
||||
mp_zero(ret);
|
||||
return MP_OKAY;
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ int mp_sqrtmod_prime(const mp_int *n, const mp_int *prime, mp_int *ret)
|
||||
/* Q = prime - 1 */
|
||||
mp_zero(&S);
|
||||
/* S = 0 */
|
||||
while (mp_iseven(&Q) != MP_NO) {
|
||||
while (IS_EVEN(&Q)) {
|
||||
if ((res = mp_div_2(&Q, &Q)) != MP_OKAY) goto cleanup;
|
||||
/* Q = Q / 2 */
|
||||
if ((res = mp_add_d(&S, 1uL, &S)) != MP_OKAY) goto cleanup;
|
||||
|
@ -16,10 +16,10 @@
|
||||
int mp_tc_and(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
{
|
||||
int res = MP_OKAY, bits, abits, bbits;
|
||||
int as = mp_isneg(a), bs = mp_isneg(b);
|
||||
int sa = a->sign, sb = b->sign;
|
||||
mp_int *mx = NULL, _mx, acpy, bcpy;
|
||||
|
||||
if ((as != MP_NO) || (bs != MP_NO)) {
|
||||
if ((sa == MP_NEG) || (sb == MP_NEG)) {
|
||||
abits = mp_count_bits(a);
|
||||
bbits = mp_count_bits(b);
|
||||
bits = MAX(abits, bbits);
|
||||
@ -34,7 +34,7 @@ int mp_tc_and(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (as != MP_NO) {
|
||||
if (sa == MP_NEG) {
|
||||
res = mp_init(&acpy);
|
||||
if (res != MP_OKAY) {
|
||||
goto end;
|
||||
@ -47,7 +47,7 @@ int mp_tc_and(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
}
|
||||
a = &acpy;
|
||||
}
|
||||
if (bs != MP_NO) {
|
||||
if (sb == MP_NEG) {
|
||||
res = mp_init(&bcpy);
|
||||
if (res != MP_OKAY) {
|
||||
goto end;
|
||||
@ -64,7 +64,7 @@ int mp_tc_and(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
|
||||
res = mp_and(a, b, c);
|
||||
|
||||
if ((as != MP_NO) && (bs != MP_NO) && (res == MP_OKAY)) {
|
||||
if ((sa == MP_NEG) && (sb == MP_NEG) && (res == MP_OKAY)) {
|
||||
res = mp_sub(c, mx, c);
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
int mp_tc_div_2d(const mp_int *a, int b, mp_int *c)
|
||||
{
|
||||
int res;
|
||||
if (mp_isneg(a) == MP_NO) {
|
||||
if (a->sign == MP_ZPOS) {
|
||||
return mp_div_2d(a, b, c, NULL);
|
||||
}
|
||||
|
||||
|
@ -16,10 +16,10 @@
|
||||
int mp_tc_or(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
{
|
||||
int res = MP_OKAY, bits, abits, bbits;
|
||||
int as = mp_isneg(a), bs = mp_isneg(b);
|
||||
int sa = a->sign, sb = b->sign;
|
||||
mp_int *mx = NULL, _mx, acpy, bcpy;
|
||||
|
||||
if ((as != MP_NO) || (bs != MP_NO)) {
|
||||
if ((sa == MP_NEG) || (sb == MP_NEG)) {
|
||||
abits = mp_count_bits(a);
|
||||
bbits = mp_count_bits(b);
|
||||
bits = MAX(abits, bbits);
|
||||
@ -34,7 +34,7 @@ int mp_tc_or(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (as != MP_NO) {
|
||||
if (sa == MP_NEG) {
|
||||
res = mp_init(&acpy);
|
||||
if (res != MP_OKAY) {
|
||||
goto end;
|
||||
@ -47,7 +47,7 @@ int mp_tc_or(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
}
|
||||
a = &acpy;
|
||||
}
|
||||
if (bs != MP_NO) {
|
||||
if (sb == MP_NEG) {
|
||||
res = mp_init(&bcpy);
|
||||
if (res != MP_OKAY) {
|
||||
goto end;
|
||||
@ -64,7 +64,7 @@ int mp_tc_or(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
|
||||
res = mp_or(a, b, c);
|
||||
|
||||
if (((as != MP_NO) || (bs != MP_NO)) && (res == MP_OKAY)) {
|
||||
if (((sa == MP_NEG) || (sb == MP_NEG)) && (res == MP_OKAY)) {
|
||||
res = mp_sub(c, mx, c);
|
||||
}
|
||||
|
||||
|
@ -16,10 +16,10 @@
|
||||
int mp_tc_xor(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
{
|
||||
int res = MP_OKAY, bits, abits, bbits;
|
||||
int as = mp_isneg(a), bs = mp_isneg(b);
|
||||
int sa = a->sign, sb = b->sign;
|
||||
mp_int *mx = NULL, _mx, acpy, bcpy;
|
||||
|
||||
if ((as != MP_NO) || (bs != MP_NO)) {
|
||||
if ((sa == MP_NEG) || (sb == MP_NEG)) {
|
||||
abits = mp_count_bits(a);
|
||||
bbits = mp_count_bits(b);
|
||||
bits = MAX(abits, bbits);
|
||||
@ -34,7 +34,7 @@ int mp_tc_xor(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (as != MP_NO) {
|
||||
if (sa == MP_NEG) {
|
||||
res = mp_init(&acpy);
|
||||
if (res != MP_OKAY) {
|
||||
goto end;
|
||||
@ -47,7 +47,7 @@ int mp_tc_xor(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
}
|
||||
a = &acpy;
|
||||
}
|
||||
if (bs != MP_NO) {
|
||||
if (sb == MP_NEG) {
|
||||
res = mp_init(&bcpy);
|
||||
if (res != MP_OKAY) {
|
||||
goto end;
|
||||
@ -64,7 +64,7 @@ int mp_tc_xor(const mp_int *a, const mp_int *b, mp_int *c)
|
||||
|
||||
res = mp_xor(a, b, c);
|
||||
|
||||
if ((as != bs) && (res == MP_OKAY)) {
|
||||
if ((sa != sb) && (res == MP_OKAY)) {
|
||||
res = mp_sub(c, mx, c);
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,7 @@ int mp_to_unsigned_bin(const mp_int *a, unsigned char *b)
|
||||
}
|
||||
|
||||
x = 0;
|
||||
while (mp_iszero(&t) == MP_NO) {
|
||||
while (!IS_ZERO(&t)) {
|
||||
#ifndef MP_8BIT
|
||||
b[x++] = (unsigned char)(t.dp[0] & 255u);
|
||||
#else
|
||||
|
@ -26,7 +26,7 @@ int mp_toradix(const mp_int *a, char *str, int radix)
|
||||
}
|
||||
|
||||
/* quick out if its zero */
|
||||
if (mp_iszero(a) == MP_YES) {
|
||||
if (IS_ZERO(a)) {
|
||||
*str++ = '0';
|
||||
*str = '\0';
|
||||
return MP_OKAY;
|
||||
@ -44,7 +44,7 @@ int mp_toradix(const mp_int *a, char *str, int radix)
|
||||
}
|
||||
|
||||
digs = 0;
|
||||
while (mp_iszero(&t) == MP_NO) {
|
||||
while (!IS_ZERO(&t)) {
|
||||
if ((res = mp_div_d(&t, (mp_digit)radix, &t, &d)) != MP_OKAY) {
|
||||
mp_clear(&t);
|
||||
return res;
|
||||
|
@ -29,7 +29,7 @@ int mp_toradix_n(const mp_int *a, char *str, int radix, int maxlen)
|
||||
}
|
||||
|
||||
/* quick out if its zero */
|
||||
if (mp_iszero(a) == MP_YES) {
|
||||
if (IS_ZERO(a)) {
|
||||
*str++ = '0';
|
||||
*str = '\0';
|
||||
return MP_OKAY;
|
||||
@ -53,7 +53,7 @@ int mp_toradix_n(const mp_int *a, char *str, int radix, int maxlen)
|
||||
}
|
||||
|
||||
digs = 0;
|
||||
while (mp_iszero(&t) == MP_NO) {
|
||||
while (!IS_ZERO(&t)) {
|
||||
if (--maxlen < 1) {
|
||||
/* no more room */
|
||||
break;
|
||||
|
@ -2682,6 +2682,12 @@ BN_MP_INVMOD_SLOW_C
|
||||
| +--->BN_MP_CLEAR_C
|
||||
|
||||
|
||||
BN_MP_ISEVEN_C
|
||||
|
||||
|
||||
BN_MP_ISODD_C
|
||||
|
||||
|
||||
BN_MP_IS_SQUARE_C
|
||||
+--->BN_MP_MOD_D_C
|
||||
| +--->BN_MP_DIV_D_C
|
||||
|
@ -536,6 +536,14 @@
|
||||
RelativePath="bn_mp_is_square.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="bn_mp_iseven.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="bn_mp_isodd.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="bn_mp_jacobi.c"
|
||||
>
|
||||
|
23
makefile
23
makefile
@ -35,17 +35,18 @@ bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn
|
||||
bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_bit.o \
|
||||
bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o bn_mp_import.o \
|
||||
bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o \
|
||||
bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_jacobi.o bn_mp_karatsuba_mul.o \
|
||||
bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o \
|
||||
bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul.o \
|
||||
bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o \
|
||||
bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o \
|
||||
bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
|
||||
bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_prime_strong_lucas_selfridge.o \
|
||||
bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o \
|
||||
bn_mp_read_unsigned_bin.o bn_mp_reduce.o bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o \
|
||||
bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o \
|
||||
bn_mp_set.o bn_mp_set_double.o bn_mp_set_int.o bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o \
|
||||
bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_jacobi.o \
|
||||
bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o \
|
||||
bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
|
||||
bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o \
|
||||
bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o bn_mp_or.o bn_mp_prime_fermat.o \
|
||||
bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o bn_mp_prime_is_prime.o \
|
||||
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
|
||||
bn_mp_prime_random_ex.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
|
||||
bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce.o \
|
||||
bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o \
|
||||
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o \
|
||||
bn_mp_set_double.o bn_mp_set_int.o bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o \
|
||||
bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o \
|
||||
bn_mp_sub_d.o bn_mp_submod.o bn_mp_tc_and.o bn_mp_tc_div_2d.o bn_mp_tc_or.o bn_mp_tc_xor.o \
|
||||
bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o \
|
||||
|
@ -38,17 +38,18 @@ bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn
|
||||
bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_bit.o \
|
||||
bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o bn_mp_import.o \
|
||||
bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o \
|
||||
bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_jacobi.o bn_mp_karatsuba_mul.o \
|
||||
bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o \
|
||||
bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul.o \
|
||||
bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o \
|
||||
bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o \
|
||||
bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
|
||||
bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_prime_strong_lucas_selfridge.o \
|
||||
bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o \
|
||||
bn_mp_read_unsigned_bin.o bn_mp_reduce.o bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o \
|
||||
bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o \
|
||||
bn_mp_set.o bn_mp_set_double.o bn_mp_set_int.o bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o \
|
||||
bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_jacobi.o \
|
||||
bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o \
|
||||
bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
|
||||
bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o \
|
||||
bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o bn_mp_or.o bn_mp_prime_fermat.o \
|
||||
bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o bn_mp_prime_is_prime.o \
|
||||
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
|
||||
bn_mp_prime_random_ex.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
|
||||
bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce.o \
|
||||
bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o \
|
||||
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o \
|
||||
bn_mp_set_double.o bn_mp_set_int.o bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o \
|
||||
bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o \
|
||||
bn_mp_sub_d.o bn_mp_submod.o bn_mp_tc_and.o bn_mp_tc_div_2d.o bn_mp_tc_or.o bn_mp_tc_xor.o \
|
||||
bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o \
|
||||
|
@ -30,17 +30,18 @@ bn_mp_dr_setup.obj bn_mp_exch.obj bn_mp_export.obj bn_mp_expt_d.obj bn_mp_expt_d
|
||||
bn_mp_exptmod_fast.obj bn_mp_exteuclid.obj bn_mp_fread.obj bn_mp_fwrite.obj bn_mp_gcd.obj bn_mp_get_bit.obj \
|
||||
bn_mp_get_double.obj bn_mp_get_int.obj bn_mp_get_long.obj bn_mp_get_long_long.obj bn_mp_grow.obj bn_mp_import.obj \
|
||||
bn_mp_init.obj bn_mp_init_copy.obj bn_mp_init_multi.obj bn_mp_init_set.obj bn_mp_init_set_int.obj bn_mp_init_size.obj \
|
||||
bn_mp_invmod.obj bn_mp_invmod_slow.obj bn_mp_is_square.obj bn_mp_jacobi.obj bn_mp_karatsuba_mul.obj \
|
||||
bn_mp_karatsuba_sqr.obj bn_mp_kronecker.obj bn_mp_lcm.obj bn_mp_lshd.obj bn_mp_mod.obj bn_mp_mod_2d.obj bn_mp_mod_d.obj \
|
||||
bn_mp_montgomery_calc_normalization.obj bn_mp_montgomery_reduce.obj bn_mp_montgomery_setup.obj bn_mp_mul.obj \
|
||||
bn_mp_mul_2.obj bn_mp_mul_2d.obj bn_mp_mul_d.obj bn_mp_mulmod.obj bn_mp_n_root.obj bn_mp_n_root_ex.obj bn_mp_neg.obj \
|
||||
bn_mp_or.obj bn_mp_prime_fermat.obj bn_mp_prime_frobenius_underwood.obj bn_mp_prime_is_divisible.obj \
|
||||
bn_mp_prime_is_prime.obj bn_mp_prime_miller_rabin.obj bn_mp_prime_next_prime.obj \
|
||||
bn_mp_prime_rabin_miller_trials.obj bn_mp_prime_random_ex.obj bn_mp_prime_strong_lucas_selfridge.obj \
|
||||
bn_mp_radix_size.obj bn_mp_radix_smap.obj bn_mp_rand.obj bn_mp_read_radix.obj bn_mp_read_signed_bin.obj \
|
||||
bn_mp_read_unsigned_bin.obj bn_mp_reduce.obj bn_mp_reduce_2k.obj bn_mp_reduce_2k_l.obj bn_mp_reduce_2k_setup.obj \
|
||||
bn_mp_reduce_2k_setup_l.obj bn_mp_reduce_is_2k.obj bn_mp_reduce_is_2k_l.obj bn_mp_reduce_setup.obj bn_mp_rshd.obj \
|
||||
bn_mp_set.obj bn_mp_set_double.obj bn_mp_set_int.obj bn_mp_set_long.obj bn_mp_set_long_long.obj bn_mp_shrink.obj \
|
||||
bn_mp_invmod.obj bn_mp_invmod_slow.obj bn_mp_is_square.obj bn_mp_iseven.obj bn_mp_isodd.obj bn_mp_jacobi.obj \
|
||||
bn_mp_karatsuba_mul.obj bn_mp_karatsuba_sqr.obj bn_mp_kronecker.obj bn_mp_lcm.obj bn_mp_lshd.obj bn_mp_mod.obj \
|
||||
bn_mp_mod_2d.obj bn_mp_mod_d.obj bn_mp_montgomery_calc_normalization.obj bn_mp_montgomery_reduce.obj \
|
||||
bn_mp_montgomery_setup.obj bn_mp_mul.obj bn_mp_mul_2.obj bn_mp_mul_2d.obj bn_mp_mul_d.obj bn_mp_mulmod.obj \
|
||||
bn_mp_n_root.obj bn_mp_n_root_ex.obj bn_mp_neg.obj bn_mp_or.obj bn_mp_prime_fermat.obj \
|
||||
bn_mp_prime_frobenius_underwood.obj bn_mp_prime_is_divisible.obj bn_mp_prime_is_prime.obj \
|
||||
bn_mp_prime_miller_rabin.obj bn_mp_prime_next_prime.obj bn_mp_prime_rabin_miller_trials.obj \
|
||||
bn_mp_prime_random_ex.obj bn_mp_prime_strong_lucas_selfridge.obj bn_mp_radix_size.obj bn_mp_radix_smap.obj \
|
||||
bn_mp_rand.obj bn_mp_read_radix.obj bn_mp_read_signed_bin.obj bn_mp_read_unsigned_bin.obj bn_mp_reduce.obj \
|
||||
bn_mp_reduce_2k.obj bn_mp_reduce_2k_l.obj bn_mp_reduce_2k_setup.obj bn_mp_reduce_2k_setup_l.obj \
|
||||
bn_mp_reduce_is_2k.obj bn_mp_reduce_is_2k_l.obj bn_mp_reduce_setup.obj bn_mp_rshd.obj bn_mp_set.obj \
|
||||
bn_mp_set_double.obj bn_mp_set_int.obj bn_mp_set_long.obj bn_mp_set_long_long.obj bn_mp_shrink.obj \
|
||||
bn_mp_signed_bin_size.obj bn_mp_sqr.obj bn_mp_sqrmod.obj bn_mp_sqrt.obj bn_mp_sqrtmod_prime.obj bn_mp_sub.obj \
|
||||
bn_mp_sub_d.obj bn_mp_submod.obj bn_mp_tc_and.obj bn_mp_tc_div_2d.obj bn_mp_tc_or.obj bn_mp_tc_xor.obj \
|
||||
bn_mp_to_signed_bin.obj bn_mp_to_signed_bin_n.obj bn_mp_to_unsigned_bin.obj bn_mp_to_unsigned_bin_n.obj \
|
||||
|
@ -32,17 +32,18 @@ bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn
|
||||
bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_bit.o \
|
||||
bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o bn_mp_import.o \
|
||||
bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o \
|
||||
bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_jacobi.o bn_mp_karatsuba_mul.o \
|
||||
bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o \
|
||||
bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul.o \
|
||||
bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o \
|
||||
bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o \
|
||||
bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
|
||||
bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_prime_strong_lucas_selfridge.o \
|
||||
bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o \
|
||||
bn_mp_read_unsigned_bin.o bn_mp_reduce.o bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o \
|
||||
bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o \
|
||||
bn_mp_set.o bn_mp_set_double.o bn_mp_set_int.o bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o \
|
||||
bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_jacobi.o \
|
||||
bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o \
|
||||
bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
|
||||
bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o \
|
||||
bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o bn_mp_or.o bn_mp_prime_fermat.o \
|
||||
bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o bn_mp_prime_is_prime.o \
|
||||
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
|
||||
bn_mp_prime_random_ex.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
|
||||
bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce.o \
|
||||
bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o \
|
||||
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o \
|
||||
bn_mp_set_double.o bn_mp_set_int.o bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o \
|
||||
bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o \
|
||||
bn_mp_sub_d.o bn_mp_submod.o bn_mp_tc_and.o bn_mp_tc_div_2d.o bn_mp_tc_or.o bn_mp_tc_xor.o \
|
||||
bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o \
|
||||
|
@ -39,17 +39,18 @@ bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn
|
||||
bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_bit.o \
|
||||
bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o bn_mp_import.o \
|
||||
bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o \
|
||||
bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_jacobi.o bn_mp_karatsuba_mul.o \
|
||||
bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o \
|
||||
bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul.o \
|
||||
bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o \
|
||||
bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o \
|
||||
bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
|
||||
bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_prime_strong_lucas_selfridge.o \
|
||||
bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o \
|
||||
bn_mp_read_unsigned_bin.o bn_mp_reduce.o bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o \
|
||||
bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o \
|
||||
bn_mp_set.o bn_mp_set_double.o bn_mp_set_int.o bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o \
|
||||
bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_iseven.o bn_mp_isodd.o bn_mp_jacobi.o \
|
||||
bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o \
|
||||
bn_mp_mod_2d.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
|
||||
bn_mp_montgomery_setup.o bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o \
|
||||
bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o bn_mp_or.o bn_mp_prime_fermat.o \
|
||||
bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o bn_mp_prime_is_prime.o \
|
||||
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
|
||||
bn_mp_prime_random_ex.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
|
||||
bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce.o \
|
||||
bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o \
|
||||
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o \
|
||||
bn_mp_set_double.o bn_mp_set_int.o bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o \
|
||||
bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o \
|
||||
bn_mp_sub_d.o bn_mp_submod.o bn_mp_tc_and.o bn_mp_tc_div_2d.o bn_mp_tc_or.o bn_mp_tc_xor.o \
|
||||
bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o \
|
||||
|
@ -191,8 +191,8 @@ int mp_init_size(mp_int *a, int size);
|
||||
|
||||
/* ---> Basic Manipulations <--- */
|
||||
#define mp_iszero(a) (((a)->used == 0) ? MP_YES : MP_NO)
|
||||
#define mp_iseven(a) ((((a)->used == 0) || (((a)->dp[0] & 1u) == 0u)) ? MP_YES : MP_NO)
|
||||
#define mp_isodd(a) ((((a)->used > 0) && (((a)->dp[0] & 1u) == 1u)) ? MP_YES : MP_NO)
|
||||
int mp_iseven(const mp_int *a);
|
||||
int mp_isodd(const mp_int *a);
|
||||
#define mp_isneg(a) (((a)->sign != MP_ZPOS) ? MP_YES : MP_NO)
|
||||
|
||||
/* set to zero */
|
||||
|
@ -74,6 +74,8 @@
|
||||
# define BN_MP_INVMOD_C
|
||||
# define BN_MP_INVMOD_SLOW_C
|
||||
# define BN_MP_IS_SQUARE_C
|
||||
# define BN_MP_ISEVEN_C
|
||||
# define BN_MP_ISODD_C
|
||||
# define BN_MP_JACOBI_C
|
||||
# define BN_MP_KARATSUBA_MUL_C
|
||||
# define BN_MP_KARATSUBA_SQR_C
|
||||
@ -163,14 +165,11 @@
|
||||
#endif
|
||||
|
||||
#if defined(BN_FAST_MP_INVMOD_C)
|
||||
# define BN_MP_ISEVEN_C
|
||||
# define BN_MP_INIT_MULTI_C
|
||||
# define BN_MP_COPY_C
|
||||
# define BN_MP_MOD_C
|
||||
# define BN_MP_ISZERO_C
|
||||
# define BN_MP_SET_C
|
||||
# define BN_MP_DIV_2_C
|
||||
# define BN_MP_ISODD_C
|
||||
# define BN_MP_SUB_C
|
||||
# define BN_MP_CMP_C
|
||||
# define BN_MP_CMP_D_C
|
||||
@ -259,7 +258,6 @@
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_CNT_LSB_C)
|
||||
# define BN_MP_ISZERO_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_COMPLEMENT_C)
|
||||
@ -275,7 +273,6 @@
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_DIV_C)
|
||||
# define BN_MP_ISZERO_C
|
||||
# define BN_MP_CMP_MAG_C
|
||||
# define BN_MP_COPY_C
|
||||
# define BN_MP_ZERO_C
|
||||
@ -321,7 +318,6 @@
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_DIV_D_C)
|
||||
# define BN_MP_ISZERO_C
|
||||
# define BN_MP_COPY_C
|
||||
# define BN_MP_DIV_2D_C
|
||||
# define BN_MP_DIV_3_C
|
||||
@ -376,7 +372,6 @@
|
||||
# define BN_S_MP_EXPTMOD_C
|
||||
# define BN_MP_DR_IS_MODULUS_C
|
||||
# define BN_MP_REDUCE_IS_2K_C
|
||||
# define BN_MP_ISODD_C
|
||||
# define BN_MP_EXPTMOD_FAST_C
|
||||
#endif
|
||||
|
||||
@ -405,7 +400,6 @@
|
||||
# define BN_MP_INIT_MULTI_C
|
||||
# define BN_MP_SET_C
|
||||
# define BN_MP_COPY_C
|
||||
# define BN_MP_ISZERO_C
|
||||
# define BN_MP_DIV_C
|
||||
# define BN_MP_MUL_C
|
||||
# define BN_MP_SUB_C
|
||||
@ -429,7 +423,6 @@
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_GCD_C)
|
||||
# define BN_MP_ISZERO_C
|
||||
# define BN_MP_ABS_C
|
||||
# define BN_MP_INIT_COPY_C
|
||||
# define BN_MP_CNT_LSB_C
|
||||
@ -442,11 +435,9 @@
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_GET_BIT_C)
|
||||
# define BN_MP_ISZERO_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_GET_DOUBLE_C)
|
||||
# define BN_MP_ISNEG_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_GET_INT_C)
|
||||
@ -498,20 +489,16 @@
|
||||
|
||||
#if defined(BN_MP_INVMOD_C)
|
||||
# define BN_MP_CMP_D_C
|
||||
# define BN_MP_ISODD_C
|
||||
# define BN_FAST_MP_INVMOD_C
|
||||
# define BN_MP_INVMOD_SLOW_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_INVMOD_SLOW_C)
|
||||
# define BN_MP_ISZERO_C
|
||||
# define BN_MP_INIT_MULTI_C
|
||||
# define BN_MP_MOD_C
|
||||
# define BN_MP_COPY_C
|
||||
# define BN_MP_ISEVEN_C
|
||||
# define BN_MP_SET_C
|
||||
# define BN_MP_DIV_2_C
|
||||
# define BN_MP_ISODD_C
|
||||
# define BN_MP_ADD_C
|
||||
# define BN_MP_SUB_C
|
||||
# define BN_MP_CMP_C
|
||||
@ -532,9 +519,14 @@
|
||||
# define BN_MP_CLEAR_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_ISEVEN_C)
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_ISODD_C)
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_JACOBI_C)
|
||||
# define BN_MP_KRONECKER_C
|
||||
# define BN_MP_ISNEG_C
|
||||
# define BN_MP_CMP_D_C
|
||||
#endif
|
||||
|
||||
@ -561,8 +553,6 @@
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_KRONECKER_C)
|
||||
# define BN_MP_ISZERO_C
|
||||
# define BN_MP_ISEVEN_C
|
||||
# define BN_MP_INIT_COPY_C
|
||||
# define BN_MP_CNT_LSB_C
|
||||
# define BN_MP_DIV_2D_C
|
||||
@ -582,7 +572,6 @@
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_LSHD_C)
|
||||
# define BN_MP_ISZERO_C
|
||||
# define BN_MP_GROW_C
|
||||
# define BN_MP_RSHD_C
|
||||
#endif
|
||||
@ -591,7 +580,6 @@
|
||||
# define BN_MP_INIT_SIZE_C
|
||||
# define BN_MP_DIV_C
|
||||
# define BN_MP_CLEAR_C
|
||||
# define BN_MP_ISZERO_C
|
||||
# define BN_MP_EXCH_C
|
||||
# define BN_MP_ADD_C
|
||||
#endif
|
||||
@ -679,7 +667,6 @@
|
||||
|
||||
#if defined(BN_MP_NEG_C)
|
||||
# define BN_MP_COPY_C
|
||||
# define BN_MP_ISZERO_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_OR_C)
|
||||
@ -716,7 +703,6 @@
|
||||
# define BN_MP_MOD_C
|
||||
# define BN_MP_GET_BIT_C
|
||||
# define BN_MP_EXCH_C
|
||||
# define BN_MP_ISZERO_C
|
||||
# define BN_MP_CMP_C
|
||||
# define BN_MP_CLEAR_MULTI_C
|
||||
#endif
|
||||
@ -726,7 +712,6 @@
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_PRIME_IS_PRIME_C)
|
||||
# define BN_MP_ISEVEN_C
|
||||
# define BN_MP_IS_SQUARE_C
|
||||
# define BN_MP_CMP_D_C
|
||||
# define BN_MP_PRIME_IS_DIVISIBLE_C
|
||||
@ -759,7 +744,6 @@
|
||||
# define BN_MP_CMP_D_C
|
||||
# define BN_MP_SET_C
|
||||
# define BN_MP_SUB_D_C
|
||||
# define BN_MP_ISEVEN_C
|
||||
# define BN_MP_MOD_D_C
|
||||
# define BN_MP_INIT_C
|
||||
# define BN_MP_ADD_D_C
|
||||
@ -803,15 +787,12 @@
|
||||
# define BN_MP_SUB_C
|
||||
# define BN_MP_GET_BIT_C
|
||||
# define BN_MP_ADD_C
|
||||
# define BN_MP_ISODD_C
|
||||
# define BN_MP_DIV_2_C
|
||||
# define BN_MP_SUB_D_C
|
||||
# define BN_MP_ISZERO_C
|
||||
# define BN_MP_CLEAR_MULTI_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_RADIX_SIZE_C)
|
||||
# define BN_MP_ISZERO_C
|
||||
# define BN_MP_COUNT_BITS_C
|
||||
# define BN_MP_INIT_COPY_C
|
||||
# define BN_MP_DIV_D_C
|
||||
@ -837,7 +818,6 @@
|
||||
# define BN_MP_S_RMAP_REVERSE_C
|
||||
# define BN_MP_MUL_D_C
|
||||
# define BN_MP_ADD_D_C
|
||||
# define BN_MP_ISZERO_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_READ_SIGNED_BIN_C)
|
||||
@ -933,7 +913,6 @@
|
||||
# define BN_MP_SET_LONG_LONG_C
|
||||
# define BN_MP_DIV_2D_C
|
||||
# define BN_MP_MUL_2D_C
|
||||
# define BN_MP_ISZERO_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_SET_INT_C)
|
||||
@ -971,7 +950,6 @@
|
||||
|
||||
#if defined(BN_MP_SQRT_C)
|
||||
# define BN_MP_N_ROOT_C
|
||||
# define BN_MP_ISZERO_C
|
||||
# define BN_MP_ZERO_C
|
||||
# define BN_MP_INIT_COPY_C
|
||||
# define BN_MP_RSHD_C
|
||||
@ -994,7 +972,6 @@
|
||||
# define BN_MP_EXPTMOD_C
|
||||
# define BN_MP_COPY_C
|
||||
# define BN_MP_SUB_D_C
|
||||
# define BN_MP_ISEVEN_C
|
||||
# define BN_MP_SET_INT_C
|
||||
# define BN_MP_SQRMOD_C
|
||||
# define BN_MP_MULMOD_C
|
||||
@ -1022,7 +999,6 @@
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_TC_AND_C)
|
||||
# define BN_MP_ISNEG_C
|
||||
# define BN_MP_COUNT_BITS_C
|
||||
# define BN_MP_INIT_SET_INT_C
|
||||
# define BN_MP_MUL_2D_C
|
||||
@ -1034,14 +1010,12 @@
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_TC_DIV_2D_C)
|
||||
# define BN_MP_ISNEG_C
|
||||
# define BN_MP_DIV_2D_C
|
||||
# define BN_MP_ADD_D_C
|
||||
# define BN_MP_SUB_D_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_TC_OR_C)
|
||||
# define BN_MP_ISNEG_C
|
||||
# define BN_MP_COUNT_BITS_C
|
||||
# define BN_MP_INIT_SET_INT_C
|
||||
# define BN_MP_MUL_2D_C
|
||||
@ -1053,7 +1027,6 @@
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_TC_XOR_C)
|
||||
# define BN_MP_ISNEG_C
|
||||
# define BN_MP_COUNT_BITS_C
|
||||
# define BN_MP_INIT_SET_INT_C
|
||||
# define BN_MP_MUL_2D_C
|
||||
@ -1075,7 +1048,6 @@
|
||||
|
||||
#if defined(BN_MP_TO_UNSIGNED_BIN_C)
|
||||
# define BN_MP_INIT_COPY_C
|
||||
# define BN_MP_ISZERO_C
|
||||
# define BN_MP_DIV_2D_C
|
||||
# define BN_MP_CLEAR_C
|
||||
#endif
|
||||
@ -1120,7 +1092,6 @@
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_TORADIX_C)
|
||||
# define BN_MP_ISZERO_C
|
||||
# define BN_MP_INIT_COPY_C
|
||||
# define BN_MP_DIV_D_C
|
||||
# define BN_MP_CLEAR_C
|
||||
@ -1128,7 +1099,6 @@
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_TORADIX_N_C)
|
||||
# define BN_MP_ISZERO_C
|
||||
# define BN_MP_INIT_COPY_C
|
||||
# define BN_MP_DIV_D_C
|
||||
# define BN_MP_CLEAR_C
|
||||
|
@ -51,6 +51,11 @@ extern void *XCALLOC(size_t n, size_t s);
|
||||
extern void XFREE(void *p);
|
||||
#endif
|
||||
|
||||
/* ---> Basic Manipulations <--- */
|
||||
#define IS_ZERO(a) ((a)->used == 0)
|
||||
#define IS_EVEN(a) (((a)->used == 0) || (((a)->dp[0] & 1u) == 0u))
|
||||
#define IS_ODD(a) (((a)->used > 0) && (((a)->dp[0] & 1u) == 1u))
|
||||
|
||||
/* lowlevel functions, do not call! */
|
||||
int s_mp_add(const mp_int *a, const mp_int *b, mp_int *c);
|
||||
int s_mp_sub(const mp_int *a, const mp_int *b, mp_int *c);
|
||||
|
Loading…
Reference in New Issue
Block a user