Back to index

lightning-sunbird  0.9+nobinonly
secrng.h
Go to the documentation of this file.
00001 /* ***** BEGIN LICENSE BLOCK *****
00002  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00003  *
00004  * The contents of this file are subject to the Mozilla Public License Version
00005  * 1.1 (the "License"); you may not use this file except in compliance with
00006  * the License. You may obtain a copy of the License at
00007  * http://www.mozilla.org/MPL/
00008  *
00009  * Software distributed under the License is distributed on an "AS IS" basis,
00010  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00011  * for the specific language governing rights and limitations under the
00012  * License.
00013  *
00014  * The Original Code is the Netscape security libraries.
00015  *
00016  * The Initial Developer of the Original Code is
00017  * Netscape Communications Corporation.
00018  * Portions created by the Initial Developer are Copyright (C) 1994-2000
00019  * the Initial Developer. All Rights Reserved.
00020  *
00021  * Contributor(s):
00022  *
00023  * Alternatively, the contents of this file may be used under the terms of
00024  * either the GNU General Public License Version 2 or later (the "GPL"), or
00025  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00026  * in which case the provisions of the GPL or the LGPL are applicable instead
00027  * of those above. If you wish to allow use of your version of this file only
00028  * under the terms of either the GPL or the LGPL, and not to allow others to
00029  * use your version of this file under the terms of the MPL, indicate your
00030  * decision by deleting the provisions above and replace them with the notice
00031  * and other provisions required by the GPL or the LGPL. If you do not delete
00032  * the provisions above, a recipient may use your version of this file under
00033  * the terms of any one of the MPL, the GPL or the LGPL.
00034  *
00035  * ***** END LICENSE BLOCK ***** */
00036 
00037 #ifndef _SECRNG_H_
00038 #define _SECRNG_H_
00039 /*
00040  * secrng.h - public data structures and prototypes for the secure random
00041  *           number generator
00042  *
00043  * $Id: secrng.h,v 1.5.28.1 2006/10/12 02:18:38 wtchang%redhat.com Exp $
00044  */
00045 
00046 /******************************************/
00047 /*
00048 ** Random number generation. A cryptographically strong random number
00049 ** generator.
00050 */
00051 
00052 #include "blapi.h"
00053 
00054 /* the number of bytes to read from the system random number generator */
00055 #define SYSTEM_RNG_SEED_COUNT 1024
00056 
00057 SEC_BEGIN_PROTOS
00058 
00059 /*
00060 ** The following functions are provided by the security library
00061 ** but are differently implemented for the UNIX, Win, and OS/2
00062 ** versions
00063 */
00064 
00065 /*
00066 ** Get the "noisiest" information available on the system.
00067 ** The amount of data returned depends on the system implementation.
00068 ** It will not exceed maxbytes, but may be (much) less.
00069 ** Returns number of noise bytes copied into buf, or zero if error.
00070 */
00071 extern size_t RNG_GetNoise(void *buf, size_t maxbytes);
00072 
00073 /*
00074 ** RNG_SystemInfoForRNG should be called before any use of SSL. It
00075 ** gathers up the system specific information to help seed the
00076 ** state of the global random number generator.
00077 */
00078 extern void RNG_SystemInfoForRNG(void);
00079 
00080 /* 
00081 ** Use the contents (and stat) of a file to help seed the
00082 ** global random number generator.
00083 */
00084 extern void RNG_FileForRNG(const char *filename);
00085 
00086 /*
00087 ** Get maxbytes bytes of random data from the system random number
00088 ** generator.
00089 ** Returns the number of bytes copied into buf -- maxbytes if success
00090 ** or zero if error.
00091 ** Errors:
00092 **   PR_NOT_IMPLEMENTED_ERROR   There is no system RNG on the platform.
00093 **   SEC_ERROR_NEED_RANDOM      The system RNG failed.
00094 */
00095 extern size_t RNG_SystemRNG(void *buf, size_t maxbytes);
00096 
00097 SEC_END_PROTOS
00098 
00099 #endif /* _SECRNG_H_ */