Home | History | Annotate | Download | only in libtommath
      1 #include <tommath.h>
      2 #ifdef BN_MP_PRIME_RABIN_MILLER_TRIALS_C
      3 /* LibTomMath, multiple-precision integer library -- Tom St Denis
      4  *
      5  * LibTomMath is a library that provides multiple-precision
      6  * integer arithmetic as well as number theoretic functionality.
      7  *
      8  * The library was designed directly after the MPI library by
      9  * Michael Fromberger but has been written from scratch with
     10  * additional optimizations in place.
     11  *
     12  * The library is free for all purposes without any express
     13  * guarantee it works.
     14  *
     15  * Tom St Denis, tomstdenis (at) gmail.com, http://math.libtomcrypt.com
     16  */
     17 
     18 
     19 static const struct {
     20    int k, t;
     21 } sizes[] = {
     22 {   128,    28 },
     23 {   256,    16 },
     24 {   384,    10 },
     25 {   512,     7 },
     26 {   640,     6 },
     27 {   768,     5 },
     28 {   896,     4 },
     29 {  1024,     4 }
     30 };
     31 
     32 /* returns # of RM trials required for a given bit size */
     33 int mp_prime_rabin_miller_trials(int size)
     34 {
     35    int x;
     36 
     37    for (x = 0; x < (int)(sizeof(sizes)/(sizeof(sizes[0]))); x++) {
     38        if (sizes[x].k == size) {
     39           return sizes[x].t;
     40        } else if (sizes[x].k > size) {
     41           return (x == 0) ? sizes[0].t : sizes[x - 1].t;
     42        }
     43    }
     44    return sizes[x-1].t + 1;
     45 }
     46 
     47 
     48 #endif
     49 
     50 /* $Source: /cvs/libtom/libtommath/bn_mp_prime_rabin_miller_trials.c,v $ */
     51 /* $Revision: 1.3 $ */
     52 /* $Date: 2006/03/31 14:18:44 $ */
     53