117 memset(Random,
'\0',
sizeof(Random));
144 const int total =
sizeof(Random) * CHAR_BIT;
145 if (SeedBits < total) {
146 return(total - SeedBits);
170 char * ptr = ((
char *)&Random[0]) + ((SeedBits / CHAR_BIT) %
sizeof(Random));
171 char frac = (char)(1 << (SeedBits & (CHAR_BIT-1)));
178 if (SeedBits == (
sizeof(Random) * CHAR_BIT)) {
200 for (
int index = 0; index < CHAR_BIT; index++) {
223 for (
int index = 0; index < (
sizeof(seed)*CHAR_BIT); index++) {
246 for (
int index = 0; index < (
sizeof(seed)*CHAR_BIT); index++) {
271void RandomStraw::Scramble_Seed(
void)
275 for (
int index = 0; index <
sizeof(
Random); index++) {
281 int tocopy =
sizeof(digest) < (
sizeof(
Random)-index) ?
sizeof(digest) : (sizeof(
Random)-index);
282 memmove(((
char *)&
Random[0]) + index, digest, tocopy);
307 if (source ==
NULL || slen < 1) {
313 *(
char *)source = (
char)(Random[Current++]());
314 Current = Current % (
sizeof(Random) /
sizeof(Random[0]));
315 source = (
char*)source +
sizeof(
char);
int Seed_Bits_Needed(void) const
void Seed_Short(short seed)
virtual ~RandomStraw(void)
virtual int Get(void *source, int slen)
void Seed_Long(long seed)
void Seed_Byte(char seed)
void Hash(void const *data, long length)
int Result(void *result) const
virtual int Get(void *buffer, int slen)