commit
3d16ed9c02
@ -2952,19 +2952,22 @@ int mp_prime_is_prime_ex(mp_int* a, int t, int* result, WC_RNG* rng)
|
|||||||
* give a (1/4)^t chance of a false prime. */
|
* give a (1/4)^t chance of a false prime. */
|
||||||
if (ret == FP_YES) {
|
if (ret == FP_YES) {
|
||||||
fp_int b, c;
|
fp_int b, c;
|
||||||
/* FP_MAX_BITS is 2 times the modulus size. The modulus size is
|
|
||||||
* 2 times the prime size. */
|
|
||||||
word32 baseSz;
|
word32 baseSz;
|
||||||
#ifndef WOLFSSL_SMALL_STACK
|
#ifndef WOLFSSL_SMALL_STACK
|
||||||
byte base[FP_MAX_BITS/32];
|
byte base[FP_MAX_PRIME_SIZE];
|
||||||
#else
|
#else
|
||||||
byte* base;
|
byte* base;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
baseSz = fp_count_bits(a);
|
baseSz = fp_count_bits(a);
|
||||||
|
/* The base size is the number of bits / 8. One is added if the number
|
||||||
|
* of bits isn't an even 8. */
|
||||||
baseSz = (baseSz / 8) + ((baseSz % 8) ? 1 : 0);
|
baseSz = (baseSz / 8) + ((baseSz % 8) ? 1 : 0);
|
||||||
|
|
||||||
#ifdef WOLFSSL_SMALL_STACK
|
#ifndef WOLFSSL_SMALL_STACK
|
||||||
|
if (baseSz > sizeof(base))
|
||||||
|
return FP_MEM;
|
||||||
|
#else
|
||||||
base = (byte*)XMALLOC(baseSz, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
base = (byte*)XMALLOC(baseSz, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
if (base == NULL)
|
if (base == NULL)
|
||||||
return FP_MEM;
|
return FP_MEM;
|
||||||
|
@ -279,6 +279,12 @@
|
|||||||
#define FP_DIGIT_MAX FP_MASK
|
#define FP_DIGIT_MAX FP_MASK
|
||||||
#define FP_SIZE (FP_MAX_SIZE/DIGIT_BIT)
|
#define FP_SIZE (FP_MAX_SIZE/DIGIT_BIT)
|
||||||
|
|
||||||
|
#define FP_MAX_PRIME_SIZE (FP_MAX_BITS/(2*CHAR_BIT))
|
||||||
|
/* In terms of FP_MAX_BITS, it is double the size possible for a number
|
||||||
|
* to allow for multiplication, divide that 2 out. Also divide by CHAR_BIT
|
||||||
|
* to convert from bits to bytes. (Note, FP_PRIME_SIZE is the number of
|
||||||
|
* values in the canned prime number list.) */
|
||||||
|
|
||||||
/* signs */
|
/* signs */
|
||||||
#define FP_ZPOS 0
|
#define FP_ZPOS 0
|
||||||
#define FP_NEG 1
|
#define FP_NEG 1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user