foo123 / fortuna

Fortuna PRNG in C++11

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 <adam@mizerski.pl>.

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

About

Fortuna PRNG in C++11

License:GNU Lesser General Public License v3.0


Languages

Language:C++ 100.0%Language:Shell 0.0%