vibe.d beta banner
get vibe.d
0.10.0

Asynchronous I/O that doesn’t get in your way, written in D

Class SystemRNG

Operating system specific cryptography secure random number generator.

class SystemRNG
  : RandomNumberStream ;

It uses the "CryptGenRandom" function for Windows; the "arc4random_buf" function (not based on RC4 but on a modern and cryptographically secure cipher) for macOS/OpenBSD/NetBSD; the "getrandom" syscall for Linux 3.17 and later; and "/dev/urandom" for other Posix platforms. It's recommended to combine the output use additional processing generated random numbers via provided functions for systems where security matters.

Constructors

NameDescription
this () Creates new system random generator

Fields

NameTypeDescription
hCryptProv HCRYPTPROV

Properties

NameTypeDescription
dataAvailableForRead[get] bool(Scheduled for deprecation) Queries if there is data available for immediate, non-blocking read.
empty[get] boolReturns true iff the end of the input stream has been reached.
leastSize[get] ulong(Scheduled for deprecation) Returns the maximum number of bytes that are known to remain available for read.

Methods

NameDescription
peek () Returns a temporary reference to the data that is currently buffered.
read (buffer, mode)
read (dst, mode) Fills the buffer new random numbers.
read (dst) Fills the preallocated array 'bytes' with data from the stream.

Aliases

NameDescription
read

Remarks

Windows "CryptGenRandom" RNG has known security vulnerabilities on Windows 2000 and Windows XP (assuming the attacker has control of the machine). Fixed for Windows XP Service Pack 3 and Windows Vista.

See Also

http://en.wikipedia.org/wiki/CryptGenRandom

Authors

Ilya Shipunov

Copyright

© 2013 RejectedSoftware e.K.

License

Subject to the terms of the MIT license, as written in the included LICENSE.txt file.