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 0fc65b37 2004-03-21 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 0fc65b37 2004-03-21 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 0fc65b37 2004-03-21 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);