IPINTS-GENPRIME(2) IPINTS-GENPRIME(2) NAME ipints: genprime, gensafeprime, genstrongprime, DSAprimes, probably_prime - prime number generation SYNOPSIS include "ipints.m"; ipints := load IPints IPints->PATH; IPint: import ipints; probably_prime: fn(n: ref IPint, nrep: int): int; genprime: fn(nbits: int, nrep: int): ref IPint; gensafeprime: fn(nbits: int, nrep: int): (ref IPint, ref IPint); # p, alpha genstrongprime: fn(nbits: int, nrep: int): ref IPint; DSAprimes: fn(): (ref IPint, ref IPint, array of byte); # q, p, seed DESCRIPTION This set of functions in IPints (see ipints(2)) helps Limbo applications generate and test large prime numbers with rel- ative efficiency. The numbers are all represented by IPint. Probably_prime uses the Miller-Rabin test to test n. It returns true (non-zero) if P is probably prime. The proba- bility of n not being prime is 1/4**nrep. If probably_prime returns false (zero), n is certainly not prime. Genprime returns a random prime of length nbits. Since it uses the Miller-Rabin test, nrep is the repetition count passed to probably_prime. Gensafeprime returns a tuple (p, alpha), where p is a prime of length nbits and alpha is a generator of the multiplica- tive group of integers mod p; there is a prime q such that p-1=2*q. Genstrongprime returns a prime p with the following proper- ties: - (p-1)/2 is prime. Therefore p-1 has a large prime fac- tor, p'. - p'-1 has a large prime factor - p+1 has a large prime factor DSAprimes uses the NIST recommended algorithm for generating DSA primes and returns a tuple (q, p, seed), where p and q are primes, and q divides p-1. The random seed used is also returned, so that sceptics can later confirm the computa- tion. Page 1 Plan 9 (printed 12/22/24) IPINTS-GENPRIME(2) IPINTS-GENPRIME(2) SOURCE /libinterp/ipint.c /libsec/port/probably_prime.c /libsec/port/dsaprimes.c /libsec/port/genprime.c /libsec/port/gensafeprime.c /libsec/port/genstrongprime.c SEE ALSO crypt-intro(2), crypt-crypt(2), crypt-dsagen(2), crypt- gensk(2), ipints(2) Page 2 Plan 9 (printed 12/22/24)