along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
- * \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 <stdint.h>
/*************************************************************************/
-/**
- * \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
}
/*************************************************************************/
-/**
- * \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;
}
/*************************************************************************/
-
-/**
- * \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;
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);