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.10 2007/02/15 13:40:42 asterix
18 *#* Fix bug in randpool_add and randpool_strir.
20 *#* Revision 1.9 2007/02/13 09:57:12 asterix
21 *#* Add directive #if in struct EntropyPool, and remove #else in randpool_add.
23 *#* Revision 1.8 2007/02/12 09:47:39 asterix
24 *#* Remove randpool_save. Add randpool_pool.
26 *#* Revision 1.6 2007/02/09 15:49:54 asterix
27 *#* Fix bug in randpool_stir and randpool_add. Typos.
29 *#* Revision 1.5 2007/02/09 09:24:38 asterix
30 *#* Typos. Add data_len in randpool_add and n_byte in randpool_push pototypes.
32 *#* Revision 1.4 2007/02/08 17:18:01 asterix
33 *#* Write add_data and stir function. Typos
35 *#* Revision 1.3 2007/02/08 14:25:56 asterix
38 *#* Revision 1.2 2007/02/08 11:53:03 asterix
39 *#* Add EntropyPool struct. Typos.
41 *#* Revision 1.1 2007/02/08 11:13:41 asterix
42 *#* Add function prototypes.
49 #include <cfg/compiler.h>
50 #include <appconfig.h>
54 * Sturct data of entropy pool.
56 typedef struct EntropyPool
58 size_t entropy; ///< Actual value of entropy (byte).
59 size_t pos_add; ///< Number of byte idd in entropy pool.
60 size_t pos_get; ///< Number of byte get in entropy pool.
61 size_t counter; ///< Counter.
63 #if CONFIG_RANDPOOL_TIMER
64 size_t last_counter; ///< Last timer value.
67 uint8_t pool_entropy[CONFIG_SIZE_ENTROPY_POOL]; ///< Entropy pool.
72 void randpool_add(EntropyPool *pool, void *data, size_t entropy);
73 void randpool_init(EntropyPool *pool, void *_data, size_t len);
74 size_t randpool_size(EntropyPool *pool);
75 void randpool_get(EntropyPool *pool, void *data, size_t n_byte);
76 void randpool_getN(EntropyPool *pool, void *data, size_t n_byte);
77 uint8_t *randpool_pool(EntropyPool *pool);
79 #endif /* RANDPOOL_H */