Import from 1.9a8 tarball
[mozilla-nss.git] / security / nss / lib / freebl / secrng.h
blob5cff943ee15bf8d2f9e7649243f42c37cb3eeb6d
1 /* ***** BEGIN LICENSE BLOCK *****
2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4 * The contents of this file are subject to the Mozilla Public License Version
5 * 1.1 (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 * http://www.mozilla.org/MPL/
9 * Software distributed under the License is distributed on an "AS IS" basis,
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 * for the specific language governing rights and limitations under the
12 * License.
14 * The Original Code is the Netscape security libraries.
16 * The Initial Developer of the Original Code is
17 * Netscape Communications Corporation.
18 * Portions created by the Initial Developer are Copyright (C) 1994-2000
19 * the Initial Developer. All Rights Reserved.
21 * Contributor(s):
23 * Alternatively, the contents of this file may be used under the terms of
24 * either the GNU General Public License Version 2 or later (the "GPL"), or
25 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26 * in which case the provisions of the GPL or the LGPL are applicable instead
27 * of those above. If you wish to allow use of your version of this file only
28 * under the terms of either the GPL or the LGPL, and not to allow others to
29 * use your version of this file under the terms of the MPL, indicate your
30 * decision by deleting the provisions above and replace them with the notice
31 * and other provisions required by the GPL or the LGPL. If you do not delete
32 * the provisions above, a recipient may use your version of this file under
33 * the terms of any one of the MPL, the GPL or the LGPL.
35 * ***** END LICENSE BLOCK ***** */
37 #ifndef _SECRNG_H_
38 #define _SECRNG_H_
40 * secrng.h - public data structures and prototypes for the secure random
41 * number generator
43 * $Id: secrng.h,v 1.6 2006/10/12 02:23:49 wtchang%redhat.com Exp $
46 /******************************************/
48 ** Random number generation. A cryptographically strong random number
49 ** generator.
52 #include "blapi.h"
54 /* the number of bytes to read from the system random number generator */
55 #define SYSTEM_RNG_SEED_COUNT 1024
57 SEC_BEGIN_PROTOS
60 ** The following functions are provided by the security library
61 ** but are differently implemented for the UNIX, Win, and OS/2
62 ** versions
66 ** Get the "noisiest" information available on the system.
67 ** The amount of data returned depends on the system implementation.
68 ** It will not exceed maxbytes, but may be (much) less.
69 ** Returns number of noise bytes copied into buf, or zero if error.
71 extern size_t RNG_GetNoise(void *buf, size_t maxbytes);
74 ** RNG_SystemInfoForRNG should be called before any use of SSL. It
75 ** gathers up the system specific information to help seed the
76 ** state of the global random number generator.
78 extern void RNG_SystemInfoForRNG(void);
80 /*
81 ** Use the contents (and stat) of a file to help seed the
82 ** global random number generator.
84 extern void RNG_FileForRNG(const char *filename);
87 ** Get maxbytes bytes of random data from the system random number
88 ** generator.
89 ** Returns the number of bytes copied into buf -- maxbytes if success
90 ** or zero if error.
91 ** Errors:
92 ** PR_NOT_IMPLEMENTED_ERROR There is no system RNG on the platform.
93 ** SEC_ERROR_NEED_RANDOM The system RNG failed.
95 extern size_t RNG_SystemRNG(void *buf, size_t maxbytes);
97 SEC_END_PROTOS
99 #endif /* _SECRNG_H_ */