Merge branch '20151025_lint' into develop

This closes #38
This commit is contained in:
Steffen Jaeckel 2015-11-12 01:33:57 +01:00
commit 489bf69f65
36 changed files with 373 additions and 352 deletions

View File

@ -27,7 +27,7 @@ int fast_mp_invmod (mp_int * a, mp_int * b, mp_int * c)
int res, neg; int res, neg;
/* 2. [modified] b must be odd */ /* 2. [modified] b must be odd */
if (mp_iseven (b) == 1) { if (mp_iseven (b) == MP_YES) {
return MP_VAL; return MP_VAL;
} }
@ -57,13 +57,13 @@ int fast_mp_invmod (mp_int * a, mp_int * b, mp_int * c)
top: top:
/* 4. while u is even do */ /* 4. while u is even do */
while (mp_iseven (&u) == 1) { while (mp_iseven (&u) == MP_YES) {
/* 4.1 u = u/2 */ /* 4.1 u = u/2 */
if ((res = mp_div_2 (&u, &u)) != MP_OKAY) { if ((res = mp_div_2 (&u, &u)) != MP_OKAY) {
goto LBL_ERR; goto LBL_ERR;
} }
/* 4.2 if B is odd then */ /* 4.2 if B is odd then */
if (mp_isodd (&B) == 1) { if (mp_isodd (&B) == MP_YES) {
if ((res = mp_sub (&B, &x, &B)) != MP_OKAY) { if ((res = mp_sub (&B, &x, &B)) != MP_OKAY) {
goto LBL_ERR; goto LBL_ERR;
} }
@ -75,13 +75,13 @@ top:
} }
/* 5. while v is even do */ /* 5. while v is even do */
while (mp_iseven (&v) == 1) { while (mp_iseven (&v) == MP_YES) {
/* 5.1 v = v/2 */ /* 5.1 v = v/2 */
if ((res = mp_div_2 (&v, &v)) != MP_OKAY) { if ((res = mp_div_2 (&v, &v)) != MP_OKAY) {
goto LBL_ERR; goto LBL_ERR;
} }
/* 5.2 if D is odd then */ /* 5.2 if D is odd then */
if (mp_isodd (&D) == 1) { if (mp_isodd (&D) == MP_YES) {
/* D = (D-x)/2 */ /* D = (D-x)/2 */
if ((res = mp_sub (&D, &x, &D)) != MP_OKAY) { if ((res = mp_sub (&D, &x, &D)) != MP_OKAY) {
goto LBL_ERR; goto LBL_ERR;
@ -115,7 +115,7 @@ top:
} }
/* if not zero goto step 4 */ /* if not zero goto step 4 */
if (mp_iszero (&u) == 0) { if (mp_iszero (&u) == MP_NO) {
goto top; goto top;
} }

View File

@ -26,12 +26,12 @@ int mp_cnt_lsb(mp_int *a)
mp_digit q, qq; mp_digit q, qq;
/* easy out */ /* easy out */
if (mp_iszero(a) == 1) { if (mp_iszero(a) == MP_YES) {
return 0; return 0;
} }
/* scan lower digits until non-zero */ /* scan lower digits until non-zero */
for (x = 0; x < a->used && a->dp[x] == 0; x++); for (x = 0; x < a->used && a->dp[x] == 0; x++) {}
q = a->dp[x]; q = a->dp[x];
x *= DIGIT_BIT; x *= DIGIT_BIT;

View File

@ -24,7 +24,7 @@ int mp_div(mp_int * a, mp_int * b, mp_int * c, mp_int * d)
int res, n, n2; int res, n, n2;
/* is divisor zero ? */ /* is divisor zero ? */
if (mp_iszero (b) == 1) { if (mp_iszero (b) == MP_YES) {
return MP_VAL; return MP_VAL;
} }
@ -106,7 +106,7 @@ int mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d)
int res, n, t, i, norm, neg; int res, n, t, i, norm, neg;
/* is divisor zero ? */ /* is divisor zero ? */
if (mp_iszero (b) == 1) { if (mp_iszero (b) == MP_YES) {
return MP_VAL; return MP_VAL;
} }
@ -196,8 +196,9 @@ int mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d)
tmp = ((mp_word) x.dp[i]) << ((mp_word) DIGIT_BIT); tmp = ((mp_word) x.dp[i]) << ((mp_word) DIGIT_BIT);
tmp |= ((mp_word) x.dp[i - 1]); tmp |= ((mp_word) x.dp[i - 1]);
tmp /= ((mp_word) y.dp[t]); tmp /= ((mp_word) y.dp[t]);
if (tmp > (mp_word) MP_MASK) if (tmp > (mp_word) MP_MASK) {
tmp = MP_MASK; tmp = MP_MASK;
}
q.dp[i - t - 1] = (mp_digit) (tmp & (mp_word) (MP_MASK)); q.dp[i - t - 1] = (mp_digit) (tmp & (mp_word) (MP_MASK));
} }
@ -269,7 +270,9 @@ int mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d)
} }
if (d != NULL) { if (d != NULL) {
mp_div_2d (&x, norm, &x, NULL); if ((res = mp_div_2d (&x, norm, &x, NULL)) != MP_OKAY) {
goto LBL_Y;
}
mp_exch (&x, d); mp_exch (&x, d);
} }

View File

@ -20,7 +20,7 @@ static int s_is_power_of_two(mp_digit b, int *p)
int x; int x;
/* fast return if no power of two */ /* fast return if no power of two */
if ((b==0) || (b & (b-1))) { if ((b == 0) || ((b & (b-1)) != 0)) {
return 0; return 0;
} }
@ -47,7 +47,7 @@ int mp_div_d (mp_int * a, mp_digit b, mp_int * c, mp_digit * d)
} }
/* quick outs */ /* quick outs */
if (b == 1 || mp_iszero(a) == 1) { if (b == 1 || mp_iszero(a) == MP_YES) {
if (d != NULL) { if (d != NULL) {
*d = 0; *d = 0;
} }

View File

@ -82,7 +82,9 @@ top:
* Each successive "recursion" makes the input smaller and smaller. * Each successive "recursion" makes the input smaller and smaller.
*/ */
if (mp_cmp_mag (x, n) != MP_LT) { if (mp_cmp_mag (x, n) != MP_LT) {
s_mp_sub(x, n, x); if ((err = s_mp_sub(x, n, x)) != MP_OKAY) {
return err;
}
goto top; goto top;
} }
return MP_OKAY; return MP_OKAY;

View File

@ -34,7 +34,8 @@ int mp_export(void* rop, size_t* countp, int order, size_t size,
union { union {
unsigned int i; unsigned int i;
char c[4]; char c[4];
} lint = {0x01020304}; } lint;
lint.i = 0x01020304;
endian = (lint.c[0] == 4 ? -1 : 1); endian = (lint.c[0] == 4 ? -1 : 1);
} }
@ -47,7 +48,7 @@ int mp_export(void* rop, size_t* countp, int order, size_t size,
nail_bytes = nails / 8; nail_bytes = nails / 8;
bits = mp_count_bits(&t); bits = mp_count_bits(&t);
count = bits / (size * 8 - nails) + (bits % (size * 8 - nails) ? 1 : 0); count = bits / (size * 8 - nails) + ((bits % (size * 8 - nails) != 0) ? 1 : 0);
for (i = 0; i < count; ++i) { for (i = 0; i < count; ++i) {
for (j = 0; j < size; ++j) { for (j = 0; j < size; ++j) {
@ -73,7 +74,7 @@ int mp_export(void* rop, size_t* countp, int order, size_t size,
mp_clear(&t); mp_clear(&t);
if (countp) { if (countp != NULL) {
*countp = count; *countp = count;
} }

View File

@ -30,10 +30,10 @@ int mp_expt_d_ex (mp_int * a, mp_digit b, mp_int * c, int fast)
/* set initial result */ /* set initial result */
mp_set (c, 1); mp_set (c, 1);
if (fast) { if (fast != 0) {
while (b > 0) { while (b > 0) {
/* if the bit is set multiply */ /* if the bit is set multiply */
if (b & 1) { if ((b & 1) != 0) {
if ((res = mp_mul (c, &g, c)) != MP_OKAY) { if ((res = mp_mul (c, &g, c)) != MP_OKAY) {
mp_clear (&g); mp_clear (&g);
return res; return res;
@ -41,10 +41,12 @@ int mp_expt_d_ex (mp_int * a, mp_digit b, mp_int * c, int fast)
} }
/* square */ /* square */
if (b > 1 && (res = mp_sqr (&g, &g)) != MP_OKAY) { if (b > 1) {
if ((res = mp_sqr (&g, &g)) != MP_OKAY) {
mp_clear (&g); mp_clear (&g);
return res; return res;
} }
}
/* shift to next bit */ /* shift to next bit */
b >>= 1; b >>= 1;

View File

@ -89,7 +89,7 @@ int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y)
/* if the modulus is odd or dr != 0 use the montgomery method */ /* if the modulus is odd or dr != 0 use the montgomery method */
#ifdef BN_MP_EXPTMOD_FAST_C #ifdef BN_MP_EXPTMOD_FAST_C
if (mp_isodd (P) == 1 || dr != 0) { if (mp_isodd (P) == MP_YES || dr != 0) {
return mp_exptmod_fast (G, X, P, Y, dr); return mp_exptmod_fast (G, X, P, Y, dr);
} else { } else {
#endif #endif

View File

@ -61,9 +61,9 @@ int mp_exteuclid(mp_int *a, mp_int *b, mp_int *U1, mp_int *U2, mp_int *U3)
/* make sure U3 >= 0 */ /* make sure U3 >= 0 */
if (u3.sign == MP_NEG) { if (u3.sign == MP_NEG) {
mp_neg(&u1, &u1); if ((err = mp_neg(&u1, &u1)) != MP_OKAY) { goto _ERR; }
mp_neg(&u2, &u2); if ((err = mp_neg(&u2, &u2)) != MP_OKAY) { goto _ERR; }
mp_neg(&u3, &u3); if ((err = mp_neg(&u3, &u3)) != MP_OKAY) { goto _ERR; }
} }
/* copy result out */ /* copy result out */

View File

@ -70,7 +70,7 @@ int mp_gcd (mp_int * a, mp_int * b, mp_int * c)
} }
} }
while (mp_iszero(&v) == 0) { while (mp_iszero(&v) == MP_NO) {
/* make sure v is the largest */ /* make sure v is the largest */
if (mp_cmp_mag(&u, &v) == MP_GT) { if (mp_cmp_mag(&u, &v) == MP_GT) {
/* swap u and v to make sure v is >= u */ /* swap u and v to make sure v is >= u */

View File

@ -31,7 +31,7 @@ unsigned long mp_get_long(mp_int * a)
/* get most significant digit of result */ /* get most significant digit of result */
res = DIGIT(a,i); res = DIGIT(a,i);
#if ULONG_MAX != 0xfffffffful || DIGIT_BIT < 32 #if ULONG_MAX != 0xffffffffuL || DIGIT_BIT < 32
while (--i >= 0) { while (--i >= 0) {
res = (res << DIGIT_BIT) | DIGIT(a,i); res = (res << DIGIT_BIT) | DIGIT(a,i);
} }

View File

@ -30,7 +30,8 @@ int mp_import(mp_int* rop, size_t count, int order, size_t size,
union { union {
unsigned int i; unsigned int i;
char c[4]; char c[4];
} lint = {0x01020304}; } lint;
lint.i = 0x01020304;
endian = (lint.c[0] == 4 ? -1 : 1); endian = (lint.c[0] == 4 ? -1 : 1);
} }

View File

@ -37,7 +37,7 @@ int mp_init_multi(mp_int *mp, ...)
/* now start cleaning up */ /* now start cleaning up */
cur_arg = mp; cur_arg = mp;
va_start(clean_args, mp); va_start(clean_args, mp);
while (n--) { while (n-- != 0) {
mp_clear(cur_arg); mp_clear(cur_arg);
cur_arg = va_arg(clean_args, mp_int*); cur_arg = va_arg(clean_args, mp_int*);
} }

View File

@ -19,13 +19,13 @@
int mp_invmod (mp_int * a, mp_int * b, mp_int * c) int mp_invmod (mp_int * a, mp_int * b, mp_int * c)
{ {
/* b cannot be negative */ /* b cannot be negative */
if (b->sign == MP_NEG || mp_iszero(b) == 1) { if (b->sign == MP_NEG || mp_iszero(b) == MP_YES) {
return MP_VAL; return MP_VAL;
} }
#ifdef BN_FAST_MP_INVMOD_C #ifdef BN_FAST_MP_INVMOD_C
/* if the modulus is odd we can use a faster routine instead */ /* if the modulus is odd we can use a faster routine instead */
if (mp_isodd (b) == 1) { if (mp_isodd (b) == MP_YES) {
return fast_mp_invmod (a, b, c); return fast_mp_invmod (a, b, c);
} }
#endif #endif

View File

@ -22,7 +22,7 @@ int mp_invmod_slow (mp_int * a, mp_int * b, mp_int * c)
int res; int res;
/* b cannot be negative */ /* b cannot be negative */
if (b->sign == MP_NEG || mp_iszero(b) == 1) { if (b->sign == MP_NEG || mp_iszero(b) == MP_YES) {
return MP_VAL; return MP_VAL;
} }
@ -41,7 +41,7 @@ int mp_invmod_slow (mp_int * a, mp_int * b, mp_int * c)
} }
/* 2. [modified] if x,y are both even then return an error! */ /* 2. [modified] if x,y are both even then return an error! */
if (mp_iseven (&x) == 1 && mp_iseven (&y) == 1) { if (mp_iseven (&x) == MP_YES && mp_iseven (&y) == MP_YES) {
res = MP_VAL; res = MP_VAL;
goto LBL_ERR; goto LBL_ERR;
} }
@ -58,13 +58,13 @@ int mp_invmod_slow (mp_int * a, mp_int * b, mp_int * c)
top: top:
/* 4. while u is even do */ /* 4. while u is even do */
while (mp_iseven (&u) == 1) { while (mp_iseven (&u) == MP_YES) {
/* 4.1 u = u/2 */ /* 4.1 u = u/2 */
if ((res = mp_div_2 (&u, &u)) != MP_OKAY) { if ((res = mp_div_2 (&u, &u)) != MP_OKAY) {
goto LBL_ERR; goto LBL_ERR;
} }
/* 4.2 if A or B is odd then */ /* 4.2 if A or B is odd then */
if (mp_isodd (&A) == 1 || mp_isodd (&B) == 1) { if (mp_isodd (&A) == MP_YES || mp_isodd (&B) == MP_YES) {
/* A = (A+y)/2, B = (B-x)/2 */ /* A = (A+y)/2, B = (B-x)/2 */
if ((res = mp_add (&A, &y, &A)) != MP_OKAY) { if ((res = mp_add (&A, &y, &A)) != MP_OKAY) {
goto LBL_ERR; goto LBL_ERR;
@ -83,13 +83,13 @@ top:
} }
/* 5. while v is even do */ /* 5. while v is even do */
while (mp_iseven (&v) == 1) { while (mp_iseven (&v) == MP_YES) {
/* 5.1 v = v/2 */ /* 5.1 v = v/2 */
if ((res = mp_div_2 (&v, &v)) != MP_OKAY) { if ((res = mp_div_2 (&v, &v)) != MP_OKAY) {
goto LBL_ERR; goto LBL_ERR;
} }
/* 5.2 if C or D is odd then */ /* 5.2 if C or D is odd then */
if (mp_isodd (&C) == 1 || mp_isodd (&D) == 1) { if (mp_isodd (&C) == MP_YES || mp_isodd (&D) == MP_YES) {
/* C = (C+y)/2, D = (D-x)/2 */ /* C = (C+y)/2, D = (D-x)/2 */
if ((res = mp_add (&C, &y, &C)) != MP_OKAY) { if ((res = mp_add (&C, &y, &C)) != MP_OKAY) {
goto LBL_ERR; goto LBL_ERR;
@ -137,7 +137,7 @@ top:
} }
/* if not zero goto step 4 */ /* if not zero goto step 4 */
if (mp_iszero (&u) == 0) if (mp_iszero (&u) == MP_NO)
goto top; goto top;
/* now a = C, b = D, gcd == g*v */ /* now a = C, b = D, gcd == g*v */

View File

@ -82,13 +82,13 @@ int mp_is_square(mp_int *arg,int *ret)
* free "t" so the easiest way is to goto ERR. We know that res * free "t" so the easiest way is to goto ERR. We know that res
* is already equal to MP_OKAY from the mp_mod call * is already equal to MP_OKAY from the mp_mod call
*/ */
if ( (1L<<(r%11)) & 0x5C4L ) goto ERR; if (((1L<<(r%11)) & 0x5C4L) != 0L) goto ERR;
if ( (1L<<(r%13)) & 0x9E4L ) goto ERR; if (((1L<<(r%13)) & 0x9E4L) != 0L) goto ERR;
if ( (1L<<(r%17)) & 0x5CE8L ) goto ERR; if (((1L<<(r%17)) & 0x5CE8L) != 0L) goto ERR;
if ( (1L<<(r%19)) & 0x4F50CL ) goto ERR; if (((1L<<(r%19)) & 0x4F50CL) != 0L) goto ERR;
if ( (1L<<(r%23)) & 0x7ACCA0L ) goto ERR; if (((1L<<(r%23)) & 0x7ACCA0L) != 0L) goto ERR;
if ( (1L<<(r%29)) & 0xC2EDD0CL ) goto ERR; if (((1L<<(r%29)) & 0xC2EDD0CL) != 0L) goto ERR;
if ( (1L<<(r%31)) & 0x6DE2B848L ) goto ERR; if (((1L<<(r%31)) & 0x6DE2B848L) != 0L) goto ERR;
/* Final check - is sqr(sqrt(arg)) == arg ? */ /* Final check - is sqr(sqrt(arg)) == arg ? */
if ((res = mp_sqrt(arg,&t)) != MP_OKAY) { if ((res = mp_sqrt(arg,&t)) != MP_OKAY) {

View File

@ -30,7 +30,7 @@ int mp_jacobi (mp_int * a, mp_int * p, int *c)
} }
/* step 1. if a == 0, return 0 */ /* step 1. if a == 0, return 0 */
if (mp_iszero (a) == 1) { if (mp_iszero (a) == MP_YES) {
*c = 0; *c = 0;
return MP_OKAY; return MP_OKAY;
} }

View File

@ -31,7 +31,7 @@ mp_mod (mp_int * a, mp_int * b, mp_int * c)
return res; return res;
} }
if (mp_iszero(&t) || t.sign == b->sign) { if (mp_iszero(&t) != MP_NO || t.sign == b->sign) {
res = MP_OKAY; res = MP_OKAY;
mp_exch (&t, c); mp_exch (&t, c);
} else { } else {

View File

@ -85,7 +85,7 @@ mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho)
/* propagate carries upwards as required*/ /* propagate carries upwards as required*/
while (u) { while (u != 0) {
*tmpx += u; *tmpx += u;
u = *tmpx >> DIGIT_BIT; u = *tmpx >> DIGIT_BIT;
*tmpx++ &= MP_MASK; *tmpx++ &= MP_MASK;

View File

@ -49,12 +49,13 @@ int mp_mul (mp_int * a, mp_int * b, mp_int * c)
res = fast_s_mp_mul_digs (a, b, c, digs); res = fast_s_mp_mul_digs (a, b, c, digs);
} else } else
#endif #endif
{
#ifdef BN_S_MP_MUL_DIGS_C #ifdef BN_S_MP_MUL_DIGS_C
res = s_mp_mul (a, b, c); /* uses s_mp_mul_digs */ res = s_mp_mul (a, b, c); /* uses s_mp_mul_digs */
#else #else
res = MP_VAL; res = MP_VAL;
#endif #endif
}
} }
c->sign = (c->used > 0) ? neg : MP_ZPOS; c->sign = (c->used > 0) ? neg : MP_ZPOS;
return res; return res;

View File

@ -84,7 +84,7 @@ int mp_prime_next_prime(mp_int *a, int t, int bbs_style)
if ((err = mp_sub_d(a, (a->dp[0] & 3) + 1, a)) != MP_OKAY) { return err; }; if ((err = mp_sub_d(a, (a->dp[0] & 3) + 1, a)) != MP_OKAY) { return err; };
} }
} else { } else {
if (mp_iseven(a) == 1) { if (mp_iseven(a) == MP_YES) {
/* force odd */ /* force odd */
if ((err = mp_sub_d(a, 1, a)) != MP_OKAY) { if ((err = mp_sub_d(a, 1, a)) != MP_OKAY) {
return err; return err;

View File

@ -41,7 +41,7 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback
} }
/* LTM_PRIME_SAFE implies LTM_PRIME_BBS */ /* LTM_PRIME_SAFE implies LTM_PRIME_BBS */
if (flags & LTM_PRIME_SAFE) { if ((flags & LTM_PRIME_SAFE) != 0) {
flags |= LTM_PRIME_BBS; flags |= LTM_PRIME_BBS;
} }
@ -60,13 +60,13 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback
/* calc the maskOR_msb */ /* calc the maskOR_msb */
maskOR_msb = 0; maskOR_msb = 0;
maskOR_msb_offset = ((size & 7) == 1) ? 1 : 0; maskOR_msb_offset = ((size & 7) == 1) ? 1 : 0;
if (flags & LTM_PRIME_2MSB_ON) { if ((flags & LTM_PRIME_2MSB_ON) != 0) {
maskOR_msb |= 0x80 >> ((9 - size) & 7); maskOR_msb |= 0x80 >> ((9 - size) & 7);
} }
/* get the maskOR_lsb */ /* get the maskOR_lsb */
maskOR_lsb = 1; maskOR_lsb = 1;
if (flags & LTM_PRIME_BBS) { if ((flags & LTM_PRIME_BBS) != 0) {
maskOR_lsb |= 3; maskOR_lsb |= 3;
} }
@ -94,7 +94,7 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback
continue; continue;
} }
if (flags & LTM_PRIME_SAFE) { if ((flags & LTM_PRIME_SAFE) != 0) {
/* see if (a-1)/2 is prime */ /* see if (a-1)/2 is prime */
if ((err = mp_sub_d(a, 1, a)) != MP_OKAY) { goto error; } if ((err = mp_sub_d(a, 1, a)) != MP_OKAY) { goto error; }
if ((err = mp_div_2(a, a)) != MP_OKAY) { goto error; } if ((err = mp_div_2(a, a)) != MP_OKAY) { goto error; }
@ -104,7 +104,7 @@ int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback
} }
} while (res == MP_NO); } while (res == MP_NO);
if (flags & LTM_PRIME_SAFE) { if ((flags & LTM_PRIME_SAFE) != 0) {
/* restore a to the original value */ /* restore a to the original value */
if ((err = mp_mul_2(a, a)) != MP_OKAY) { goto error; } if ((err = mp_mul_2(a, a)) != MP_OKAY) { goto error; }
if ((err = mp_add_d(a, 1, a)) != MP_OKAY) { goto error; } if ((err = mp_add_d(a, 1, a)) != MP_OKAY) { goto error; }

View File

@ -43,12 +43,12 @@ int mp_read_radix (mp_int * a, const char *str, int radix)
mp_zero (a); mp_zero (a);
/* process each digit of the string */ /* process each digit of the string */
while (*str) { while (*str != '\0') {
/* if the radix <= 36 the conversion is case insensitive /* if the radix <= 36 the conversion is case insensitive
* this allows numbers like 1AB and 1ab to represent the same value * this allows numbers like 1AB and 1ab to represent the same value
* [e.g. in hex] * [e.g. in hex]
*/ */
ch = (char) ((radix <= 36) ? toupper ((int)*str) : *str); ch = (radix <= 36) ? (char)toupper((int)*str) : *str;
for (y = 0; y < 64; y++) { for (y = 0; y < 64; y++) {
if (ch == mp_s_rmap[y]) { if (ch == mp_s_rmap[y]) {
break; break;
@ -73,7 +73,7 @@ int mp_read_radix (mp_int * a, const char *str, int radix)
} }
/* set the sign only if a != 0 */ /* set the sign only if a != 0 */
if (mp_iszero(a) != 1) { if (mp_iszero(a) != MP_YES) {
a->sign = neg; a->sign = neg;
} }
return MP_OKAY; return MP_OKAY;

View File

@ -45,7 +45,9 @@ top:
} }
if (mp_cmp_mag(a, n) != MP_LT) { if (mp_cmp_mag(a, n) != MP_LT) {
s_mp_sub(a, n, a); if ((res = s_mp_sub(a, n, a)) != MP_OKAY) {
goto ERR;
}
goto top; goto top;
} }

View File

@ -46,7 +46,9 @@ top:
} }
if (mp_cmp_mag(a, n) != MP_LT) { if (mp_cmp_mag(a, n) != MP_LT) {
s_mp_sub(a, n, a); if ((res = s_mp_sub(a, n, a)) != MP_OKAY) {
goto ERR;
}
goto top; goto top;
} }

View File

@ -21,8 +21,9 @@ int mp_shrink (mp_int * a)
mp_digit *tmp; mp_digit *tmp;
int used = 1; int used = 1;
if(a->used > 0) if(a->used > 0) {
used = a->used; used = a->used;
}
if (a->alloc != used) { if (a->alloc != used) {
if ((tmp = OPT_CAST(mp_digit) XREALLOC (a->dp, sizeof (mp_digit) * used)) == NULL) { if ((tmp = OPT_CAST(mp_digit) XREALLOC (a->dp, sizeof (mp_digit) * used)) == NULL) {

View File

@ -29,7 +29,7 @@ mp_sqr (mp_int * a, mp_int * b)
} else } else
#endif #endif
#ifdef BN_MP_KARATSUBA_SQR_C #ifdef BN_MP_KARATSUBA_SQR_C
if (a->used >= KARATSUBA_SQR_CUTOFF) { if (a->used >= KARATSUBA_SQR_CUTOFF) {
res = mp_karatsuba_sqr (a, b); res = mp_karatsuba_sqr (a, b);
} else } else
#endif #endif
@ -42,12 +42,14 @@ if (a->used >= KARATSUBA_SQR_CUTOFF) {
res = fast_s_mp_sqr (a, b); res = fast_s_mp_sqr (a, b);
} else } else
#endif #endif
{
#ifdef BN_S_MP_SQR_C #ifdef BN_S_MP_SQR_C
res = s_mp_sqr (a, b); res = s_mp_sqr (a, b);
#else #else
res = MP_VAL; res = MP_VAL;
#endif #endif
} }
}
b->sign = MP_ZPOS; b->sign = MP_ZPOS;
return res; return res;
} }

View File

@ -23,7 +23,7 @@ int mp_to_signed_bin (mp_int * a, unsigned char *b)
if ((res = mp_to_unsigned_bin (a, b + 1)) != MP_OKAY) { if ((res = mp_to_unsigned_bin (a, b + 1)) != MP_OKAY) {
return res; return res;
} }
b[0] = (unsigned char) ((a->sign == MP_ZPOS) ? 0 : 1); b[0] = (a->sign == MP_ZPOS) ? (unsigned char)0 : (unsigned char)1;
return MP_OKAY; return MP_OKAY;
} }
#endif #endif

View File

@ -26,7 +26,7 @@ int mp_to_unsigned_bin (mp_int * a, unsigned char *b)
} }
x = 0; x = 0;
while (mp_iszero (&t) == 0) { while (mp_iszero (&t) == MP_NO) {
#ifndef MP_8BIT #ifndef MP_8BIT
b[x++] = (unsigned char) (t.dp[0] & 255); b[x++] = (unsigned char) (t.dp[0] & 255);
#else #else

View File

@ -46,7 +46,9 @@ int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c)
goto ERR; goto ERR;
} }
mp_rshd(&a1, B); mp_rshd(&a1, B);
mp_mod_2d(&a1, DIGIT_BIT * B, &a1); if ((res = mp_mod_2d(&a1, DIGIT_BIT * B, &a1)) != MP_OKAY) {
goto ERR;
}
if ((res = mp_copy(a, &a2)) != MP_OKAY) { if ((res = mp_copy(a, &a2)) != MP_OKAY) {
goto ERR; goto ERR;
@ -62,7 +64,7 @@ int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c)
goto ERR; goto ERR;
} }
mp_rshd(&b1, B); mp_rshd(&b1, B);
mp_mod_2d(&b1, DIGIT_BIT * B, &b1); (void)mp_mod_2d(&b1, DIGIT_BIT * B, &b1);
if ((res = mp_copy(b, &b2)) != MP_OKAY) { if ((res = mp_copy(b, &b2)) != MP_OKAY) {
goto ERR; goto ERR;

View File

@ -39,7 +39,9 @@ mp_toom_sqr(mp_int *a, mp_int *b)
goto ERR; goto ERR;
} }
mp_rshd(&a1, B); mp_rshd(&a1, B);
mp_mod_2d(&a1, DIGIT_BIT * B, &a1); if ((res = mp_mod_2d(&a1, DIGIT_BIT * B, &a1)) != MP_OKAY) {
goto ERR;
}
if ((res = mp_copy(a, &a2)) != MP_OKAY) { if ((res = mp_copy(a, &a2)) != MP_OKAY) {
goto ERR; goto ERR;

View File

@ -29,7 +29,7 @@ int mp_toradix (mp_int * a, char *str, int radix)
} }
/* quick out if its zero */ /* quick out if its zero */
if (mp_iszero(a) == 1) { if (mp_iszero(a) == MP_YES) {
*str++ = '0'; *str++ = '0';
*str = '\0'; *str = '\0';
return MP_OKAY; return MP_OKAY;
@ -47,7 +47,7 @@ int mp_toradix (mp_int * a, char *str, int radix)
} }
digs = 0; digs = 0;
while (mp_iszero (&t) == 0) { while (mp_iszero (&t) == MP_NO) {
if ((res = mp_div_d (&t, (mp_digit) radix, &t, &d)) != MP_OKAY) { if ((res = mp_div_d (&t, (mp_digit) radix, &t, &d)) != MP_OKAY) {
mp_clear (&t); mp_clear (&t);
return res; return res;

View File

@ -56,7 +56,7 @@ int mp_toradix_n(mp_int * a, char *str, int radix, int maxlen)
} }
digs = 0; digs = 0;
while (mp_iszero (&t) == 0) { while (mp_iszero (&t) == MP_NO) {
if (--maxlen < 1) { if (--maxlen < 1) {
/* no more room */ /* no more room */
break; break;

View File

@ -25,11 +25,11 @@
#include <tommath_class.h> #include <tommath_class.h>
#ifndef MIN #ifndef MIN
#define MIN(x,y) ((x)<(y)?(x):(y)) #define MIN(x,y) (((x) < (y)) ? (x) : (y))
#endif #endif
#ifndef MAX #ifndef MAX
#define MAX(x,y) ((x)>(y)?(x):(y)) #define MAX(x,y) (((x) > (y)) ? (x) : (y))
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
@ -200,7 +200,7 @@ extern int KARATSUBA_MUL_CUTOFF,
#endif #endif
/* size of comba arrays, should be at least 2 * 2**(BITS_PER_WORD - BITS_PER_DIGIT*2) */ /* size of comba arrays, should be at least 2 * 2**(BITS_PER_WORD - BITS_PER_DIGIT*2) */
#define MP_WARRAY (1 << (sizeof(mp_word) * CHAR_BIT - 2 * DIGIT_BIT + 1)) #define MP_WARRAY (1 << (((sizeof(mp_word) * CHAR_BIT) - (2 * DIGIT_BIT)) + 1))
/* the infamous mp_int structure */ /* the infamous mp_int structure */
typedef struct { typedef struct {
@ -246,9 +246,9 @@ int mp_init_size(mp_int *a, int size);
/* ---> Basic Manipulations <--- */ /* ---> Basic Manipulations <--- */
#define mp_iszero(a) (((a)->used == 0) ? MP_YES : MP_NO) #define mp_iszero(a) (((a)->used == 0) ? MP_YES : MP_NO)
#define mp_iseven(a) (((a)->used > 0 && (((a)->dp[0] & 1) == 0)) ? MP_YES : MP_NO) #define mp_iseven(a) ((((a)->used > 0) && (((a)->dp[0] & 1) == 0)) ? MP_YES : MP_NO)
#define mp_isodd(a) (((a)->used > 0 && (((a)->dp[0] & 1) == 1)) ? MP_YES : MP_NO) #define mp_isodd(a) ((((a)->used > 0) && (((a)->dp[0] & 1) == 1)) ? MP_YES : MP_NO)
#define mp_isneg(a) (((a)->sign) ? MP_YES : MP_NO) #define mp_isneg(a) (((a)->sign != MP_ZPOS) ? MP_YES : MP_NO)
/* set to zero */ /* set to zero */
void mp_zero(mp_int *a); void mp_zero(mp_int *a);
@ -504,7 +504,7 @@ int mp_exptmod(mp_int *a, mp_int *b, mp_int *c, mp_int *d);
#endif #endif
/* table of first PRIME_SIZE primes */ /* table of first PRIME_SIZE primes */
extern const mp_digit ltm_prime_tab[]; extern const mp_digit ltm_prime_tab[PRIME_SIZE];
/* result=1 if a is divisible by one of the first PRIME_SIZE primes */ /* result=1 if a is divisible by one of the first PRIME_SIZE primes */
int mp_prime_is_divisible(mp_int *a, int *result); int mp_prime_is_divisible(mp_int *a, int *result);
@ -639,14 +639,14 @@ int func_name (mp_int * a, type b) \
mp_zero (a); \ mp_zero (a); \
\ \
/* set four bits at a time */ \ /* set four bits at a time */ \
for (x = 0; x < sizeof(type) * 2; x++) { \ for (x = 0; x < (sizeof(type) * 2); x++) { \
/* shift the number up four bits */ \ /* shift the number up four bits */ \
if ((res = mp_mul_2d (a, 4, a)) != MP_OKAY) { \ if ((res = mp_mul_2d (a, 4, a)) != MP_OKAY) { \
return res; \ return res; \
} \ } \
\ \
/* OR in the top four bits of the source */ \ /* OR in the top four bits of the source */ \
a->dp[0] |= (b >> ((sizeof(type)) * 8 - 4)) & 15; \ a->dp[0] |= (b >> ((sizeof(type) * 8) - 4)) & 15; \
\ \
/* shift the source up to the next four bits */ \ /* shift the source up to the next four bits */ \
b <<= 4; \ b <<= 4; \