4 * Copyright 2007 Develer S.r.l. (http://www.develer.com/);
5 * This file is part of DevLib - See README.devlib for information.
8 * \brief API function for to manage entropy pool.
12 * \author Daniele Basile <asterix@develer.com>
17 *#* Revision 1.9 2007/02/13 09:57:12 asterix
18 *#* Add directive #if in struct EntropyPool, and remove #else in randpool_add.
20 *#* Revision 1.8 2007/02/12 09:47:39 asterix
21 *#* Remove randpool_save. Add randpool_pool.
23 *#* Revision 1.6 2007/02/09 15:49:54 asterix
24 *#* Fix bug in randpool_stir and randpool_add. Typos.
26 *#* Revision 1.5 2007/02/09 09:24:38 asterix
27 *#* Typos. Add data_len in randpool_add and n_byte in randpool_push pototypes.
29 *#* Revision 1.4 2007/02/08 17:18:01 asterix
30 *#* Write add_data and stir function. Typos
32 *#* Revision 1.3 2007/02/08 14:25:56 asterix
35 *#* Revision 1.2 2007/02/08 11:53:03 asterix
36 *#* Add EntropyPool struct. Typos.
38 *#* Revision 1.1 2007/02/08 11:13:41 asterix
39 *#* Add function prototypes.
46 #include <cfg/compiler.h>
47 #include <appconfig.h>
49 #define NUM_STIR_LOOP CONFIG_SIZE_ENTROPY_POOL / CONFIG_MD2_BLOCK_LEN
52 * Sturct data of entropy pool.
54 typedef struct EntropyPool
56 size_t entropy; ///< Actual value of entropy (byte).
57 size_t pos_add; ///< Number of byte idd in entropy pool.
58 size_t pos_get; ///< Number of byte get in entropy pool.
59 size_t counter; ///< Counter.
61 #if CONFIG_RANDPOOL_TIMER
62 size_t last_counter; ///< Last timer value.
65 uint8_t pool_entropy[CONFIG_SIZE_ENTROPY_POOL]; ///< Entropy pool.
70 void randpool_add(EntropyPool *pool, void *data, size_t data_len, size_t entropy);
71 void randpool_init(EntropyPool *pool, void *_data, size_t len);
72 size_t randpool_size(EntropyPool *pool);
73 void randpool_get(EntropyPool *pool, void *data, size_t n_byte);
74 void randpool_getN(EntropyPool *pool, void *data, size_t n_byte);
75 uint8_t *randpool_pool(EntropyPool *pool);
77 #endif /* RANDPOOL_H */