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