a
This commit is contained in:
27
libsec/genprime.c
Normal file
27
libsec/genprime.c
Normal file
@ -0,0 +1,27 @@
|
||||
#include "os.h"
|
||||
#include <mp.h>
|
||||
#include <libsec.h>
|
||||
|
||||
// generate a probable prime. accuracy is the miller-rabin interations
|
||||
void
|
||||
genprime(mpint *p, int n, int accuracy)
|
||||
{
|
||||
mpdigit x;
|
||||
|
||||
// generate n random bits with high and low bits set
|
||||
mpbits(p, n);
|
||||
genrandom((uchar*)p->p, (n+7)/8);
|
||||
p->top = (n+Dbits-1)/Dbits;
|
||||
x = 1;
|
||||
x <<= ((n-1)%Dbits);
|
||||
p->p[p->top-1] &= (x-1);
|
||||
p->p[p->top-1] |= x;
|
||||
p->p[0] |= 1;
|
||||
|
||||
// keep icrementing till it looks prime
|
||||
for(;;){
|
||||
if(probably_prime(p, accuracy))
|
||||
break;
|
||||
mpadd(p, mptwo, p);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user