refactor with new private macro MP_MAXFAST
This commit is contained in:
parent
556219aa5b
commit
7d4e8363e0
@ -18,8 +18,7 @@ int mp_montgomery_reduce(mp_int *x, const mp_int *n, mp_digit rho)
|
|||||||
digs = (n->used * 2) + 1;
|
digs = (n->used * 2) + 1;
|
||||||
if ((digs < (int)MP_WARRAY) &&
|
if ((digs < (int)MP_WARRAY) &&
|
||||||
(x->used <= (int)MP_WARRAY) &&
|
(x->used <= (int)MP_WARRAY) &&
|
||||||
(n->used <
|
(n->used < MP_MAXFAST)) {
|
||||||
(int)(1u << (MP_SIZEOF_BITS(mp_word) - (2u * (size_t)MP_DIGIT_BIT))))) {
|
|
||||||
return s_mp_montgomery_reduce_fast(x, n, rho);
|
return s_mp_montgomery_reduce_fast(x, n, rho);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,8 +66,7 @@ GO_ON:
|
|||||||
|
|
||||||
#ifdef BN_S_MP_MUL_DIGS_FAST_C
|
#ifdef BN_S_MP_MUL_DIGS_FAST_C
|
||||||
if ((digs < (int)MP_WARRAY) &&
|
if ((digs < (int)MP_WARRAY) &&
|
||||||
(MP_MIN(a->used, b->used) <=
|
(MP_MIN(a->used, b->used) <= MP_MAXFAST)) {
|
||||||
(int)(1u << (MP_SIZEOF_BITS(mp_word) - (2u * (size_t)MP_DIGIT_BIT))))) {
|
|
||||||
res = s_mp_mul_digs_fast(a, b, c, digs);
|
res = s_mp_mul_digs_fast(a, b, c, digs);
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
|
@ -24,8 +24,7 @@ int mp_sqr(const mp_int *a, mp_int *b)
|
|||||||
#ifdef BN_S_MP_SQR_FAST_C
|
#ifdef BN_S_MP_SQR_FAST_C
|
||||||
/* can we use the fast comba multiplier? */
|
/* can we use the fast comba multiplier? */
|
||||||
if ((((a->used * 2) + 1) < (int)MP_WARRAY) &&
|
if ((((a->used * 2) + 1) < (int)MP_WARRAY) &&
|
||||||
(a->used <
|
(a->used < (MP_MAXFAST / 2))) {
|
||||||
(int)(1u << ((MP_SIZEOF_BITS(mp_word) - (2u * (size_t)MP_DIGIT_BIT)) - 1u)))) {
|
|
||||||
res = s_mp_sqr_fast(a, b);
|
res = s_mp_sqr_fast(a, b);
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
|
@ -85,7 +85,7 @@ int s_mp_exptmod_fast(const mp_int *G, const mp_int *X, const mp_int *P, mp_int
|
|||||||
/* automatically pick the comba one if available (saves quite a few calls/ifs) */
|
/* automatically pick the comba one if available (saves quite a few calls/ifs) */
|
||||||
#ifdef BN_S_MP_MONTGOMERY_REDUCE_FAST_C
|
#ifdef BN_S_MP_MONTGOMERY_REDUCE_FAST_C
|
||||||
if ((((P->used * 2) + 1) < (int)MP_WARRAY) &&
|
if ((((P->used * 2) + 1) < (int)MP_WARRAY) &&
|
||||||
(P->used < (1 << (MP_SIZEOF_BITS(mp_word) - (2 * MP_DIGIT_BIT))))) {
|
(P->used < MP_MAXFAST)) {
|
||||||
redux = s_mp_montgomery_reduce_fast;
|
redux = s_mp_montgomery_reduce_fast;
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
|
@ -17,8 +17,7 @@ int s_mp_mul_digs(const mp_int *a, const mp_int *b, mp_int *c, int digs)
|
|||||||
|
|
||||||
/* can we use the fast multiplier? */
|
/* can we use the fast multiplier? */
|
||||||
if ((digs < (int)MP_WARRAY) &&
|
if ((digs < (int)MP_WARRAY) &&
|
||||||
(MP_MIN(a->used, b->used) <
|
(MP_MIN(a->used, b->used) < MP_MAXFAST)) {
|
||||||
(int)(1u << (MP_SIZEOF_BITS(mp_word) - (2u * (size_t)MP_DIGIT_BIT))))) {
|
|
||||||
return s_mp_mul_digs_fast(a, b, c, digs);
|
return s_mp_mul_digs_fast(a, b, c, digs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ int s_mp_mul_high_digs(const mp_int *a, const mp_int *b, mp_int *c, int digs)
|
|||||||
/* can we use the fast multiplier? */
|
/* can we use the fast multiplier? */
|
||||||
#ifdef BN_S_MP_MUL_HIGH_DIGS_FAST_C
|
#ifdef BN_S_MP_MUL_HIGH_DIGS_FAST_C
|
||||||
if (((a->used + b->used + 1) < (int)MP_WARRAY)
|
if (((a->used + b->used + 1) < (int)MP_WARRAY)
|
||||||
&& (MP_MIN(a->used, b->used) < (int)(1u << (MP_SIZEOF_BITS(mp_word) - (2u * (size_t)MP_DIGIT_BIT))))) {
|
&& (MP_MIN(a->used, b->used) < MP_MAXFAST)) {
|
||||||
return s_mp_mul_high_digs_fast(a, b, c, digs);
|
return s_mp_mul_high_digs_fast(a, b, c, digs);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -67,6 +67,7 @@ extern void MP_FREE(void *mem, size_t size);
|
|||||||
#define MP_IS_ODD(a) (((a)->used > 0) && (((a)->dp[0] & 1u) == 1u))
|
#define MP_IS_ODD(a) (((a)->used > 0) && (((a)->dp[0] & 1u) == 1u))
|
||||||
|
|
||||||
#define MP_SIZEOF_BITS(type) (CHAR_BIT * sizeof(type))
|
#define MP_SIZEOF_BITS(type) (CHAR_BIT * sizeof(type))
|
||||||
|
#define MP_MAXFAST (int)(1u << (MP_SIZEOF_BITS(mp_word) - (2u * (size_t)MP_DIGIT_BIT)))
|
||||||
|
|
||||||
/* random number source */
|
/* random number source */
|
||||||
extern int (*s_rand_source)(void *, size_t);
|
extern int (*s_rand_source)(void *, size_t);
|
||||||
|
Loading…
Reference in New Issue
Block a user