25 #ifndef LCRNG_ORIGINAL_NUMBERS 26 const word32 LC_RNG::m=2147483647L;
27 const word32 LC_RNG::q=44488L;
29 const word16 LC_RNG::a=(
unsigned int)48271L;
30 const word16 LC_RNG::r=3399;
32 const word32 LC_RNG::m=2147483647L;
33 const word32 LC_RNG::q=127773L;
35 const word16 LC_RNG::a=16807;
36 const word16 LC_RNG::r=2836;
46 long test = a*lo - r*hi;
53 *output++ = byte((GETBYTE(seed, 0) ^ GETBYTE(seed, 1) ^ GETBYTE(seed, 2) ^ GETBYTE(seed, 3)));
59 #ifndef CRYPTOPP_IMPORTS 67 m_deterministicTimeVector(deterministicTimeVector, deterministicTimeVector ? S : 0)
69 if (!deterministicTimeVector)
71 time_t tstamp1 = time(0);
74 clock_t tstamp2 = clock();
88 if (m_deterministicTimeVector.
size())
97 time_t t = time(NULL);
103 xorbuf(randseed, dtbuf, S);
107 if (memcmp(m_lastBlock, randseed, S) == 0)
108 throw SelfTestFailure(
"X917RNG: Continuous random number generator test failed.");
116 memcpy(m_lastBlock, randseed, S);
117 xorbuf(randseed, dtbuf, S);
124 MaurerRandomnessTest::MaurerRandomnessTest()
127 for (
unsigned i=0; i<V; i++)
135 byte inByte = *inString++;
137 sum += log(
double(n - tab[inByte]));
144 double MaurerRandomnessTest::GetTestValue()
const 146 if (BytesNeeded() > 0)
149 double fTu = (sum/(n-Q))/log(2.0);
151 double value = fTu * 0.1392;
152 return value > 1.0 ? 1.0 : value;
Base class for all exceptions thrown by Crypto++.
void IncrementCounterByOne(byte *inout, unsigned int size)
Performs an addition with carry on a block of bytes.
virtual void GenerateBlock(byte *output, size_t size)
Generate random array of bytes.
size_type size() const
Provides the count of elements in the SecBlock.
Some other error occurred not belong to any of the above categories.
size_t Put2(const byte *inString, size_t length, int messageEnd, bool blocking)
Input multiple bytes for processing.
Exception thrown when a crypto algorithm is used after a self test fails.
const T1 UnsignedMin(const T1 &a, const T2 &b)
Safe comparison of values that could be neagtive and incorrectly promoted.
void GenerateBlock(byte *output, size_t size)
Generate random array of bytes.
Miscellaneous classes for RNGs.
void GenerateIntoBufferedTransformation(BufferedTransformation &target, const std::string &channel, lword size)
Generate random bytes into a BufferedTransformation.
const char * BlockSize()
int, in bytes
X917RNG(BlockTransformation *cipher, const byte *seed, const byte *deterministicTimeVector=0)
Construct a X917RNG.
Classes and functions for the FIPS 140-2 validated library.
void xorbuf(byte *buf, const byte *mask, size_t count)
Performs an XOR of a buffer with a mask.
std::string IntToString(T value, unsigned int base=10)
Converts a value to a string.
Crypto++ library namespace.