From 234882677d32f4a59133c5451422ee2339a4cc97 Mon Sep 17 00:00:00 2001 From: provos <> Date: Tue, 15 Apr 1997 13:06:54 +0000 Subject: [PATCH] documentation for arc4random. this is out of memory, might need some corrections. --- src/lib/libc/crypt/Makefile.inc | 5 +- src/lib/libc/crypt/arc4random.3 | 82 +++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 src/lib/libc/crypt/arc4random.3 diff --git a/src/lib/libc/crypt/Makefile.inc b/src/lib/libc/crypt/Makefile.inc index af67278f..d3532362 100644 --- a/src/lib/libc/crypt/Makefile.inc +++ b/src/lib/libc/crypt/Makefile.inc @@ -1,11 +1,12 @@ -# $OpenBSD: Makefile.inc,v 1.7 1997/02/16 20:58:11 provos Exp $ +# $OpenBSD: Makefile.inc,v 1.8 1997/04/15 13:06:54 provos Exp $ .PATH: ${.CURDIR}/arch/${MACHINE_ARCH}/crypt ${.CURDIR}/crypt SRCS+= crypt.c morecrypt.c md5crypt.c arc4random.c blowfish.c SRCS+= bcrypt.c -MAN+= crypt.3 blowfish.3 +MAN+= crypt.3 blowfish.3 arc4random.3 MLINKS+=crypt.3 encrypt.3 crypt.3 setkey.3 crypt.3 des_cipher.3 MLINKS+=crypt.3 des_setkey.3 blowfish.3 blf_key.3 blowfish.3 blf_enc.3 MLINKS+=blowfish.3 blf_dec.3 +MLINKS+=arc4ranom.3 arc4random_stir.3 arc4random.3 arc4random_addrandom.3 diff --git a/src/lib/libc/crypt/arc4random.3 b/src/lib/libc/crypt/arc4random.3 new file mode 100644 index 00000000..71a3c003 --- /dev/null +++ b/src/lib/libc/crypt/arc4random.3 @@ -0,0 +1,82 @@ +.\" $OpenBSD: arc4random.3,v 1.1 1997/04/15 13:06:54 provos Exp $ +.\" Copyright 1997 Niels Provos +.\" 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. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by Niels Provos. +.\" 4. The name of the author may not be used to endorse or promote products +.\" derived from this software without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. +.\" +.\" Manual page, using -mandoc macros +.\" +.Dd April 15, 1997 +.Dt ARC4RANDOM 3 +.Os "OpenBSD 2.0" +.Sh NAME +.Nm arc4random, +.Nm arc4random_stir, +.Nm arc4random_addrandom +.Nd arc4 random number generator. +.Sh SYNOPSIS +.Fd #include +.Ft void +.Fn arc4random "void" +.Ft void +.Fn arc4random_stir "void" +.Ft void +.Fn arc4random_addrandom "u_char *dat" "int datlen" +.Sh DESCRIPTION +The +.Fn arc4random +function uses the key stream generator employed by the +arc4 cipher, which uses 8*8 8 bit S-Boxes. The S-Boxes +can be in about +.if t 2\u\s71700\s10\d +.if n (2**1700) +states. +.Pp +The +.Fn arc4random_stir +function reads data from +.Pa /dev/arandom +and uses it to permutate the S-Boxes via +.Fn arc4random_addrandom . +.Pp +There is no need to call +.Fn arc4random_stir +before using +.Fn arc4random , +since +.Fn arc4random +automatically initalizes itself. +.Sh SEE ALSO +.Xr rand 3 , +.Xr random 3 +.Sh HISTORY +.Pa RC4 +has been designed by RSA Data Security, Inc. It was posted anonymously +to the USENET and was confirmed to be equivalent by several sources who +had access to the original cipher. Since +.Pa RC4 +used to by a trade secret, the cipher is now refered to as +.Pa ARC4 .