|
|
1.1 ! root 1: /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ ! 2: /* ! 3: * The contents of this file are subject to the Mozilla Public ! 4: * License Version 1.1 (the "License"); you may not use this file ! 5: * except in compliance with the License. You may obtain a copy of ! 6: * the License at http://www.mozilla.org/MPL/ ! 7: * ! 8: * Software distributed under the License is distributed on an "AS ! 9: * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or ! 10: * implied. See the License for the specific language governing ! 11: * rights and limitations under the License. ! 12: * ! 13: * The Original Code is the Netscape Portable Runtime (NSPR). ! 14: * ! 15: * The Initial Developer of the Original Code is Netscape ! 16: * Communications Corporation. Portions created by Netscape are ! 17: * Copyright (C) 1999-2000 Netscape Communications Corporation. All ! 18: * Rights Reserved. ! 19: * ! 20: * Contributor(s): ! 21: * ! 22: * Alternatively, the contents of this file may be used under the ! 23: * terms of the GNU General Public License Version 2 or later (the ! 24: * "GPL"), in which case the provisions of the GPL are applicable ! 25: * instead of those above. If you wish to allow use of your ! 26: * version of this file only under the terms of the GPL and not to ! 27: * allow others to use your version of this file under the MPL, ! 28: * indicate your decision by deleting the provisions above and ! 29: * replace them with the notice and other provisions required by ! 30: * the GPL. If you do not delete the provisions above, a recipient ! 31: * may use your version of this file under either the MPL or the ! 32: * GPL. ! 33: */ ! 34: ! 35: ! 36: /* ! 37: ** prrng.h -- NSPR Random Number Generator ! 38: ** ! 39: ** ! 40: ** lth. 29-Oct-1999. ! 41: */ ! 42: ! 43: #ifndef prrng_h___ ! 44: #define prrng_h___ ! 45: ! 46: #include "prtypes.h" ! 47: ! 48: PR_BEGIN_EXTERN_C ! 49: ! 50: /* ! 51: ** PR_GetRandomNoise() -- Get random noise from the host platform ! 52: ** ! 53: ** Description: ! 54: ** PR_GetRandomNoise() provides, depending on platform, a random value. ! 55: ** The length of the random value is dependent on platform and the ! 56: ** platform's ability to provide a random value at that moment. ! 57: ** ! 58: ** The intent of PR_GetRandomNoise() is to provide a "seed" value for a ! 59: ** another random number generator that may be suitable for ! 60: ** cryptographic operations. This implies that the random value ! 61: ** provided may not be, by itself, cryptographically secure. The value ! 62: ** generated by PR_GetRandomNoise() is at best, extremely difficult to ! 63: ** predict and is as non-deterministic as the underlying platfrom can ! 64: ** provide. ! 65: ** ! 66: ** Inputs: ! 67: ** buf -- pointer to a caller supplied buffer to contain the ! 68: ** generated random number. buf must be at least as large as ! 69: ** is specified in the 'size' argument. ! 70: ** ! 71: ** size -- the requested size of the generated random number ! 72: ** ! 73: ** Outputs: ! 74: ** a random number provided in 'buf'. ! 75: ** ! 76: ** Returns: ! 77: ** PRSize value equal to the size of the random number actually ! 78: ** generated, or zero. The generated size may be less than the size ! 79: ** requested. A return value of zero means that PR_GetRandomNoise() is ! 80: ** not implemented on this platform, or there is no available noise ! 81: ** available to be returned at the time of the call. ! 82: ** ! 83: ** Restrictions: ! 84: ** Calls to PR_GetRandomNoise() may use a lot of CPU on some platforms. ! 85: ** Some platforms may block for up to a few seconds while they ! 86: ** accumulate some noise. Busy machines generate lots of noise, but ! 87: ** care is advised when using PR_GetRandomNoise() frequently in your ! 88: ** application. ! 89: ** ! 90: ** History: ! 91: ** Parts of the model dependent implementation for PR_GetRandomNoise() ! 92: ** were taken in whole or part from code previously in Netscape's NSS ! 93: ** component. ! 94: ** ! 95: */ ! 96: NSPR_API(PRSize) PR_GetRandomNoise( ! 97: void *buf, ! 98: PRSize size ! 99: ); ! 100: ! 101: PR_END_EXTERN_C ! 102: ! 103: #endif /* prrng_h___ */ ! 104: /* end prrng.h */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.