X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=algos%2Frandpool.c;h=6881bc4896fb5943f59604ab416e138655e90330;hb=45fb90739a9806843719dc9f64b11518e0278ac0;hp=63a2716a6fa8a9b89145e1aef5b34eed1f1c0984;hpb=bd5a6de1603564daa55869e9dc524bb20be79556;p=bertos.git diff --git a/algos/randpool.c b/algos/randpool.c index 63a2716a..6881bc48 100755 --- a/algos/randpool.c +++ b/algos/randpool.c @@ -13,8 +13,11 @@ /*#* *#* $Log$ - *#* Revision 1.11 2007/02/12 09:40:43 asterix - *#* Remove randpool_load function. Add *data in randpool_init prototype. + *#* Revision 1.13 2007/02/12 18:25:34 asterix + *#* Fix bug in randpool_getN. + *#* + *#* Revision 1.12 2007/02/12 09:47:39 asterix + *#* Remove randpool_save. Add randpool_pool. *#* *#* Revision 1.10 2007/02/12 09:03:32 asterix *#* Add CONFIG_RANDPOOL_TIMER macro to swich on or off timer support @@ -207,20 +210,24 @@ void randpool_get(EntropyPool *pool, void *data, size_t n_byte) * to generate pseudocasual value from previous state of * pool. */ -void randpool_getN(EntropyPool *pool, void *data, size_t n_byte) +void randpool_getN(EntropyPool *pool, void *_data, size_t n_byte) { Md2Context context; size_t i = pool->pos_get; int n = n_byte; size_t len = MIN((size_t)CONFIG_MD2_BLOCK_LEN, n_byte); + uint8_t *data; + + data = (uint8_t *)_data; /* Test if i + CONFIG_MD2_BLOCK_LEN is inside of entropy pool.*/ ASSERT((CONFIG_MD2_BLOCK_LEN + i) < CONFIG_SIZE_ENTROPY_POOL); md2_init(&context); - while(n < 0) + while(n > 0) { + /*Hash previous state of pool*/ md2_update(&context, &pool->pool_entropy[i], CONFIG_MD2_BLOCK_LEN); @@ -247,9 +254,14 @@ void randpool_getN(EntropyPool *pool, void *data, size_t n_byte) /*If we get all entropy entropy is 0*/ if(pool->entropy < 0) pool->entropy = 0; + } -bool randpool_save(void *data) +/** + * Return a pointer to entropy pool. + */ +uint8_t *randpool_pool(EntropyPool *pool) { + return pool->pool_entropy; }