Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/foo123/fortuna

Fortuna PRNG in C++11
https://github.com/foo123/fortuna

Last synced: about 1 month ago
JSON representation

Fortuna PRNG in C++11

Awesome Lists containing this project

README

        

General Information
===================

This is implementation of Fortuna PRNG (https://en.wikipedia.org/wiki/Fortuna_%28PRNG%29) in C++11 using Boost and Crypto++ libraries, written by Adam Mizerski .

Components:
- libfortuna - Implementation of Fortuna algorithm.
- fortunad - Daemon which contains Accumulator.
- libfortuna_daemon - Libraries implementing communication layer with daemon for entropy sources and clients.
- fortuna_client - Client which reads random data from daemon.

Licensing:
- Libraries (libfortuna, libfortuna_daemon) are released under LGPLv3 or later.
- Programs (everything else) are released under GPLv3 or later.

Tested with:
- g++ 4.9.2
- clang++ 3.5.0
- autoconf 2.69
- automake 1.13.4
- libtool 2.4.2
- Boost 1.54.0
- Crypto++ 5.6.2

Notes about libfortuna
======================
- You must provide the seed file. For example by 'dd if=/dev/random of=./fortuna.seed bs=64 count=1'. Please note that it's not safe when done at first boot on a virtual machine without entropy provided by host.
- SHA3 (Keccak) is used instead of double SHA2.
- Random data is generated in blocks of bytes. User must allocate enough memory to store whole blocks.
In Accumulator there are output_block_length variable and bytes_to_blocks method, which helps with this task.

Contributing
============
- Patches, bug reports, improvements and new features are welcome and appreciated.
- As is sending Bitcoins at 15yFjvHc8BZehVHcammmAvd4qZ6ArFMJRF