|  | 
 NAME     
 |  |  |  | genprime, gensafeprime, genstrongprime, DSAprimes, probably_prime,
    smallprimetest – prime number generation 
 | 
 SYNOPSIS     
 |  |  |  | #include <u.h> #include <libc.h>
 #include <mp.h>
 #include <libsec.h> 
    
    
    int    smallprimetest(mpint *p) 
    
    
    int    probably_prime(mpint *p, int nrep) 
    
    
    void    genprime(mpint *p, int n, int nrep) 
    
    
    void    gensafeprime(mpint *p, mpint *alpha, int n, int accuracy)
    
    
    
    void    genstrongprime(mpint *p, int n, int nrep) 
    
    
    void    DSAprimes(mpint *q, mpint *p, uchar seed[SHA1dlen])
 
 | 
 DESCRIPTION     
 |  |  |  | Public key algorithms abound in prime numbers. The following routines
    generate primes or test numbers for primality. 
    
    
    Smallprimetest checks for divisibility by the first 10000 primes.
    It returns 0 if p is not divisible by the primes and –1 if it is.
    
    
    
    Probably_prime uses the Miller-Rabin test to test p. It returns
    non-zero if P is probably prime. The probability of it not being
    prime is 1/4**nrep. 
    
    
    Genprime generates a random n bit prime. Since it uses the Miller-Rabin
    test, nrep is the repetition count passed to probably_prime. Gensafegprime
    generates an n-bit prime p and a generator alpha of the multiplicative
    group of integers mod p; there is a prime q such that p-1=2*q.
    Genstrongprime generates a prime, p, with the following properties:
    –     (p-1)/2 is prime. Therefore p-1 has a large prime factor, p’. –p’-1 has a large prime factor
 –p+1 has a large prime factor 
    
    
    DSAprimes generates two primes, q and p, using the NIST recommended
    algorithm for DSA primes. q divides p-1. The random seed used
    is also returned, so that skeptics can later confirm the computation.
    Be patient; this is a slow algorithm.
 
 | 
 SOURCE     
 SEE ALSO    
 |  |