diff options
author | markm <markm@FreeBSD.org> | 2000-10-14 16:16:42 +0000 |
---|---|---|
committer | markm <markm@FreeBSD.org> | 2000-10-14 16:16:42 +0000 |
commit | 1beb657e46e57fde773c6c9f5c36583729327bd1 (patch) | |
tree | 54497b1c246e5025730255a2c5f2d05be762269a /share/man/man9/random.9 | |
parent | afe5dc9e12094f0fa2d3bf890491ae3fb38eb537 (diff) | |
download | FreeBSD-src-1beb657e46e57fde773c6c9f5c36583729327bd1.zip FreeBSD-src-1beb657e46e57fde773c6c9f5c36583729327bd1.tar.gz |
Add a man page for part of the PRNG API.
Diffstat (limited to 'share/man/man9/random.9')
-rw-r--r-- | share/man/man9/random.9 | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/share/man/man9/random.9 b/share/man/man9/random.9 new file mode 100644 index 0000000..a347f18 --- /dev/null +++ b/share/man/man9/random.9 @@ -0,0 +1,135 @@ +.\" +.\" Copyright (c) 2000 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR +.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, +.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" " +.Dd September 25, 2000 +.Os +.Dt RANDOM 9 +.Sh NAME +.Nm srandom, +.Nm random, +.Nm arc4random, +.Nm read_random +.Nd supply pseudo-random numbers. +.Sh SYNOPSIS +.Fd #include <sys/libkern.h> +.Ft void +.Fn srandom "u_long seed" +.Ft u_long +.Fn random "void" +.Ft u_int32_t +.Fn arc4random "void" +.Pp +.Fd #include <sys/random.h> +.Ft u_int +.Fn read_random "void *buffer" "u_int count" +.Sh DESCRIPTION +The +.Fn random +function will by default produce a sequence of numbers that can be duplicated +by calling +.Fn srandom +with +.Ql 1 +as the +.Ar seed . +The +.Fn srandom +function may be called with any arbitrary +.Ar seed +value to get slightly more unpredictable numbers. +It is important to remember that the +.Fn random +function is entirely predictable, and is therefore not of use where +knowledge of the sequence of numbers may be of benefit to an attacker. +.Pp +The +.Fn arc4random +function will return very good quality random numbers, slightly better +suited for security-related purposes. +The random numbers from +.Fn arc4random +are seeded from the entropy device if it is available. +.Pp +The +.Fn read_random +function is used to return entropy directly from the entropy device +if it has been loaded. If the entropy device is not loaded, then +the +.Ar buffer +is filled with output generated by +.Fn random . +The +.Ar buffer +is filled with no more than +.Ar count +bytes. It is advised that +.Fn read_random +is not used; instead use +.Fn arc4random . +.Pp +All the bits generated by +.Fn random , +.Fn arc4random +and +.Fn read_random +are usable. For example, +.Sq Li random()&01 +will produce a random binary value. +.Sh RETURN VALUES +The +.Fn random +function +uses a non-linear additive feedback random number generator employing a +default table of size 31 long integers to return successive pseudo-random +numbers in the range from 0 to +.if t 2\u\s731\s10\d\(mi1. +.if n (2**31)\(mi1. +The period of this random number generator is very large, approximately +.if t 16\(mu(2\u\s731\s10\d\(mi1). +.if n 16*((2**31)\(mi1). +.Pp +The +.Fn arc4random +function +uses the RC4 algorithm to generate successive pseudo-random +numbers in the range from 0 to +.if t 2\u\s732\s10\d\(mi1. +.if n (2**32)\(mi1. +.Pp +The +.Fn read_random +function returns the number of bytes placed in +.Ar buffer . +.Pp +.Sh AUTHORS +.An Dan Moschuk +wrote +.Fn arc4random . +.An Mark R V Murray +wrote +.Fn read_random . |