Skip to content

Commit 7453edd

Browse files
committed
improve ltc_math_descriptor a bit
* introduce LTC_MILLER_RABIN_REPS which is used as default value in the isprime() implementations
1 parent 6f85293 commit 7453edd

5 files changed

Lines changed: 15 additions & 7 deletions

File tree

src/headers/tomcrypt_math.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@
2424
typedef void rsa_key;
2525
#endif
2626

27+
#ifndef LTC_MILLER_RABIN_REPS
28+
/* Number of rounds of the Miller-Rabin test
29+
* "Reasonable values of reps are between 15 and 50." c.f. gmp doc of mpz_probab_prime_p() */
30+
#define LTC_MILLER_RABIN_REPS 35
31+
#endif
32+
2733
/** math descriptor */
2834
typedef struct {
2935
/** Name of the math provider */
@@ -345,7 +351,7 @@ typedef struct {
345351

346352
/** Primality testing
347353
@param a The integer to test
348-
@param b The number of tests that shall be executed
354+
@param b The number of Miller-Rabin tests that shall be executed
349355
@param c The destination of the result (FP_YES if prime)
350356
@return CRYPT_OK on success
351357
*/
@@ -472,13 +478,13 @@ typedef struct {
472478
int (*submod)(void *a, void *b, void *c, void *d);
473479

474480
/* ---- misc stuff ---- */
481+
475482
/** Make a pseudo-random mpi
476483
@param a The mpi to make random
477484
@param size The desired length
478485
@return CRYPT_OK on success
479486
*/
480487
int (*rand)(void *a, int size);
481-
482488
} ltc_math_descriptor;
483489

484490
extern ltc_math_descriptor ltc_mp;

src/math/gmp_desc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@ static int isprime(void *a, int b, int *c)
446446
LTC_ARGCHK(a != NULL);
447447
LTC_ARGCHK(c != NULL);
448448
if (b == 0) {
449-
b = 8;
449+
b = LTC_MILLER_RABIN_REPS;
450450
} /* if */
451451
*c = mpz_probab_prime_p(a, b) > 0 ? LTC_MP_YES : LTC_MP_NO;
452452
return CRYPT_OK;

src/math/ltm_desc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ static int isprime(void *a, int b, int *c)
404404
LTC_ARGCHK(a != NULL);
405405
LTC_ARGCHK(c != NULL);
406406
if (b == 0) {
407-
b = 8;
407+
b = LTC_MILLER_RABIN_REPS;
408408
} /* if */
409409
err = mpi_to_ltc_error(mp_prime_is_prime(a, b, c));
410410
*c = (*c == MP_YES) ? LTC_MP_YES : LTC_MP_NO;

src/math/rand_prime.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ int rand_prime(void *N, long len, prng_state *prng, int wprng)
6666
}
6767

6868
/* test */
69-
if ((err = mp_prime_is_prime(N, 8, &res)) != CRYPT_OK) {
69+
if ((err = mp_prime_is_prime(N, LTC_MILLER_RABIN_REPS, &res)) != CRYPT_OK) {
7070
XFREE(buf);
7171
return err;
7272
}

src/math/tfm_desc.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -415,8 +415,10 @@ static int isprime(void *a, int b, int *c)
415415
{
416416
LTC_ARGCHK(a != NULL);
417417
LTC_ARGCHK(c != NULL);
418-
(void)b;
419-
*c = (fp_isprime(a) == FP_YES) ? LTC_MP_YES : LTC_MP_NO;
418+
if (b == 0) {
419+
b = LTC_MILLER_RABIN_REPS;
420+
} /* if */
421+
*c = (fp_isprime_ex(a, b) == FP_YES) ? LTC_MP_YES : LTC_MP_NO;
420422
return CRYPT_OK;
421423
}
422424

0 commit comments

Comments
 (0)