X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=entropium.c;h=ed56607e2bb9af802f19c96095667897e6dbc242;hb=e5a49deb52521f019e37779d6e9d81ec4f02aba4;hp=1bbf5839fc90be05ca9dcdcca2d8d8665eff9853;hpb=96ebafd201c9e8441c7677577b24aa402c1defc6;p=avr-crypto-lib.git diff --git a/entropium.c b/entropium.c index 1bbf583..ed56607 100644 --- a/entropium.c +++ b/entropium.c @@ -1,6 +1,6 @@ /* entropium.c */ /* - This file is part of the Crypto-avr-lib/microcrypt-lib. + This file is part of the AVR-Crypto-Lib. Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de) This program is free software: you can redistribute it and/or modify @@ -17,52 +17,33 @@ along with this program. If not, see . */ /** - * \file entropium.c - * \author Daniel Otte - * \date 17.05.2006 - * \par License: - * GPL + * \file entropium.c + * \author Daniel Otte + * \email daniel.otte@rub.de + * \date 2006-05-17 + * \license GPLv3 or later * \brief This file contains an implementaition of a pseudo-random-number generator. * * Extension 1: * rndCore is expanded to 512 bits for more security. * - * \verbatim - * ################################################################################################ - * # # - * # +---------------------------+ # - * # | | +---+ # - * # V | | | # - * # (concat) | | V # - * +---------------+ # o---------o (xor)+---------+ o---------o | o----o o---------o # +--------------+ - * | entropy Block | -----> | sha-256 | --(offset)-< | rndCore | ---> | sha-256 | --+--+-| +1 |---> | sha-256 | -----> | random Block | - * +---------------+ # o---------o (xor)+---------+ o---------o | o----o o---------o # +--------------+ - * # (xor) (xor) | # - * # ^ ^ | # - * # \ / | # - * # (offset)---------------------+ # - * # # - * ################################################################################################ - * \endverbatim - */ - - /* \verbatim - * ################################################################################################ - * # # - * # +---------------------------+ # - * # | | +---+ # - * # V | | | # - * # (concat) | | V # - * +---------------+ # o---------o (xor)+---------+ o---------o | o----o o---------o # +--------------+ - * | entropy Block | -----> | sha-256 | --(offset)-< | rndCore | ---> | sha-256 | --+--+-| +1 |---> | sha-256 | -----> | random Block | - * +---------------+ # o---------o (xor)+---------+ o---------o | o----o o---------o # +--------------+ - * # (xor) (xor) | # - * # ^ ^ | # - * # \ / | # - * # (offset)---------------------+ # - * # # - * ################################################################################################ - * \endverbatim + \verbatim + ################################################################################################ + # # + # +---------------------------+ # + # | | # + # V | # + # (concat) | # + +---------------+ # o---------o (xor)+---------+ o---------o o----o o---------o # +--------------+ + | entropy Block | -----> | sha-256 | --(offset)-< | rndCore | ---> | sha-256 | --+----| +1 |---> | sha-256 | -----> | random Block | + +---------------+ # o---------o (xor)+---------+ o---------o | o----o o---------o # +--------------+ + # (xor) (xor) | # + # ^ ^ | # + # \ / | # + # (offset)---------------------+ # + # # + ################################################################################################ + \endverbatim */ #include @@ -78,12 +59,6 @@ uint32_t rndCore[16]; /*************************************************************************/ -/** - * \brief This function adds entropy to the central entropy pool - * - * @param length This ist the length of the random data in BITS. - * @param data This is the random data which should be added to the entropy pool -*/ /* idea is: hash the message and add it via xor to rndCore * * length in bits @@ -109,10 +84,7 @@ void entropium_addEntropy(unsigned length_b, const void* data){ } /*************************************************************************/ -/** - * \brief This function fills a given buffer with 32 random bytes - * @param b Pointer to buffer wich is to fill - */ + void entropium_getRandomBlock(void *b){ sha256_ctx_t s; uint8_t offset=8; @@ -132,11 +104,7 @@ void entropium_getRandomBlock(void *b){ } /*************************************************************************/ - -/** - * \brief This function simply returns a random byte - * @return a random byte - */ + uint8_t entropium_getRandomByte(void){ static uint8_t block[32]; static uint8_t i=32; @@ -148,13 +116,6 @@ uint8_t entropium_getRandomByte(void){ return block[i++]; } -/*************************************************************************/ - -/** - * \brief This function fills the given bock with length random bytes - * @return a random byte - */ - void entropium_fillBlockRandom(void* block, unsigned length_B){ while(length_B>ENTROPIUM_RANDOMBLOCK_SIZE){ entropium_getRandomBlock(block);