mirror of
				https://gitcode.com/gh_mirrors/re/react-native-pushy.git
				synced 2025-10-31 05:13:11 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			83 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /*
 | |
|  ---------------------------------------------------------------------------
 | |
|  Copyright (c) 2002, Dr Brian Gladman <                 >, Worcester, UK.
 | |
|  All rights reserved.
 | |
| 
 | |
|  LICENSE TERMS
 | |
| 
 | |
|  The free distribution and use of this software in both source and binary
 | |
|  form is allowed (with or without changes) provided that:
 | |
| 
 | |
|    1. distributions of this source code include the above copyright
 | |
|       notice, this list of conditions and the following disclaimer;
 | |
| 
 | |
|    2. distributions in binary form include the above copyright
 | |
|       notice, this list of conditions and the following disclaimer
 | |
|       in the documentation and/or other associated materials;
 | |
| 
 | |
|    3. the copyright holder's name is not used to endorse products
 | |
|       built using this software without specific written permission.
 | |
| 
 | |
|  ALTERNATIVELY, provided that this notice is retained in full, this product
 | |
|  may be distributed under the terms of the GNU General Public License (GPL),
 | |
|  in which case the provisions of the GPL apply INSTEAD OF those given above.
 | |
| 
 | |
|  DISCLAIMER
 | |
| 
 | |
|  This software is provided 'as is' with no explicit or implied warranties
 | |
|  in respect of its properties, including, but not limited to, correctness
 | |
|  and/or fitness for purpose.
 | |
|  ---------------------------------------------------------------------------
 | |
|  Issue Date: 24/01/2003
 | |
| 
 | |
|  This is the header file for an implementation of a random data pool based on
 | |
|  the use of an external entropy function (inspired by Peter Gutmann's work).
 | |
| */
 | |
| 
 | |
| #ifndef _PRNG_H
 | |
| #define _PRNG_H
 | |
| 
 | |
| #include "sha1.h"
 | |
| 
 | |
| #define PRNG_POOL_LEN    256    /* minimum random pool size             */
 | |
| #define PRNG_MIN_MIX      20    /* min initial pool mixing iterations   */
 | |
| 
 | |
| /* ensure that pool length is a multiple of the SHA1 digest size        */
 | |
| 
 | |
| #define PRNG_POOL_SIZE  (SHA1_DIGEST_SIZE * (1 + (PRNG_POOL_LEN - 1) / SHA1_DIGEST_SIZE))
 | |
| 
 | |
| #if defined(__cplusplus)
 | |
| extern "C"
 | |
| {
 | |
| #endif
 | |
| 
 | |
| /* A function for providing entropy is a parameter in the prng_init()   */
 | |
| /* call.  This function has the following form and returns a maximum    */
 | |
| /* of 'len' bytes of pseudo random data in the buffer 'buf'.  It can    */
 | |
| /* return less than 'len' bytes but will be repeatedly called for more  */
 | |
| /* data in this case.                                                   */
 | |
| 
 | |
| typedef int (*prng_entropy_fn)(unsigned char buf[], unsigned int len);
 | |
| 
 | |
| typedef struct
 | |
| {   unsigned char   rbuf[PRNG_POOL_SIZE];   /* the random pool          */
 | |
|     unsigned char   obuf[PRNG_POOL_SIZE];   /* pool output buffer       */
 | |
|     unsigned int    pos;                    /* output buffer position   */
 | |
|     prng_entropy_fn entropy;                /* entropy function pointer */
 | |
| } prng_ctx;
 | |
| 
 | |
| /* initialise the random stream generator   */
 | |
| void prng_init(prng_entropy_fn fun, prng_ctx ctx[1]);
 | |
| 
 | |
| /* obtain random bytes from the generator   */
 | |
| void prng_rand(unsigned char data[], unsigned int data_len, prng_ctx ctx[1]);
 | |
| 
 | |
| /* close the random stream generator        */
 | |
| void prng_end(prng_ctx ctx[1]);
 | |
| 
 | |
| #if defined(__cplusplus)
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif
 | 
