1 0fc65b37 2004-03-21 devnull #include "os.h"
2 0fc65b37 2004-03-21 devnull #include <mp.h>
3 0fc65b37 2004-03-21 devnull #include <libsec.h>
5 cbeb0b26 2006-04-01 devnull /* generate a probable prime. accuracy is the miller-rabin interations */
7 0fc65b37 2004-03-21 devnull genprime(mpint *p, int n, int accuracy)
9 0fc65b37 2004-03-21 devnull mpdigit x;
11 cbeb0b26 2006-04-01 devnull /* generate n random bits with high and low bits set */
12 0fc65b37 2004-03-21 devnull mpbits(p, n);
13 0fc65b37 2004-03-21 devnull genrandom((uchar*)p->p, (n+7)/8);
14 0fc65b37 2004-03-21 devnull p->top = (n+Dbits-1)/Dbits;
16 0fc65b37 2004-03-21 devnull x <<= ((n-1)%Dbits);
17 0fc65b37 2004-03-21 devnull p->p[p->top-1] &= (x-1);
18 0fc65b37 2004-03-21 devnull p->p[p->top-1] |= x;
19 0fc65b37 2004-03-21 devnull p->p[0] |= 1;
21 cbeb0b26 2006-04-01 devnull /* keep icrementing till it looks prime */
23 0fc65b37 2004-03-21 devnull if(probably_prime(p, accuracy))
25 0fc65b37 2004-03-21 devnull mpadd(p, mptwo, p);