\input texinfo @c -*-texinfo-*- @c %**start of header @setfilename krandom.info @settitle krandom @afourpaper @documentencoding UTF-8 @documentlanguage en @finalout @c %**end of header @dircategory Utilities @direntry * krandom: (krandom). Keccak-based userspace pseudorandom number generator @end direntry @copying Copyright @copyright{} 2014 Mattias Andrée @quotation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. @end quotation @end copying @ifnottex @node Top @top krandom -- Keccak-based userspace pseudorandom number generator @insertcopying @end ifnottex @titlepage @title krandom @subtitle Keccak-based userspace pseudorandom number generator @author by Mattias Andrée (maandree) @page @c @center `' @vskip 0pt plus 1filll @insertcopying @end titlepage @contents @menu * Overview:: Brief overview of @command{krandom}. * Invoking:: Invocation of @command{krandom}. * GNU Free Documentation License:: Copying and sharing this manual. @end menu @node Overview @chapter Overview @command{krandom} is a tunable userspace pseudorandom number generator based on the Keccak hash-algorithm. With @command{krandom} default parameters it is about twice as fast as Linux's @file{/dev/urandom}, but it's performance can be tuned both up and down. @command{krandom} creates a Keccak sponge and initialises its state @footnote{(25 @command{int_fast64_t}:s)} with random data from @file{/dev/urandom}. This simulate it absorption phase of Keccak from a random message. It then performance the squeezing phase continuously until the standard output pipe breaks, that is, when the program it pipes into exits or closes standard input. On a more technical level, @command{krandom} will pause automatically if the other program does not read its input, and resume when it does. This is because the pipe will become full and block writting for @command{krandom}. @node Invoking @chapter Invoking @command{krandom} recognises the following options: @table @option @item -h @itemx --help Display a summary of options. @item -v @itemx --verbose Print extra information. @item -R @itemx --bitrate @itemx --rate RATE Change the rate. @item -C @itemx --capacity CAPACITY Change the capacity. @item -N @itemx -O @itemx --output-size @itemx --output SIZE Change the output size. This is the size of a squeezed block, the total output is unlimited. @item -S @itemx -B @itemx --state-size @itemx --state SIZE Change the state size. @item -W @itemx --word-size @itemx --word SIZE Change the word size. @end table @node GNU Free Documentation License @appendix GNU Free Documentation License @include fdl.texinfo @bye