plan9port/man/man3/prime.3
Russ Cox 977b25a76a tmac: introduce real manual reference macro instead of overloading IR
The overloading of IR emits magic \X'...' sequences that turn into HTML manual links.
But not all such IR invocations should be manual links;
those had to be written to avoid the IR macro before.
Worse, the \X'...' ending the IR causes troff to emit only a single space after a period.

Defining a new IM macro for manual references fixes both problems.

Fixes #441.
2020-08-13 23:43:43 -04:00

100 lines
1.9 KiB
Groff

.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
.IM aes (3)
.IM blowfish (3) ,
.IM des (3) ,
.IM elgamal (3) ,
.IM rsa (3) ,