43 static unsigned int randseed;
44 static bool seeded =
FALSE;
47 char *force_entropy =
getenv(
"CURL_ENTROPY");
50 unsigned int seed = 0;
51 size_t elen = strlen(force_entropy);
52 size_t clen =
sizeof(seed);
53 size_t min = elen < clen ? elen : clen;
54 memcpy((
char *)&seed, force_entropy, min);
55 randseed = ntohl(seed);
80 ssize_t nread = read(fd, &randseed,
sizeof(randseed));
81 if(nread ==
sizeof(randseed))
90 infof(data,
"WARNING: Using weak random seed\n");
91 randseed += (
unsigned int)now.
tv_usec + (
unsigned int)now.
tv_sec;
92 randseed = randseed * 1103515245 + 12345;
93 randseed = randseed * 1103515245 + 12345;
94 randseed = randseed * 1103515245 + 12345;
99 r = randseed = randseed * 1103515245 + 12345;
100 *rnd = (r << 16) | ((r >> 16) & 0xFFFF);
128 size_t left = num <
sizeof(
unsigned int) ? num :
sizeof(
unsigned int);
130 result =
randit(data, &r);
135 *rnd++ = (
unsigned char)(r & 0xFF);
155 const char *hex =
"0123456789abcdef";
156 unsigned char buffer[128];
157 unsigned char *bufp =
buffer;
160 if((num/2 >=
sizeof(buffer)) || !(num&1))
171 *rnd++ = hex[(*bufp & 0xF0)>>4];
172 *rnd++ = hex[*bufp & 0x0F];
#define Curl_ssl_random(x, y, z)
struct curltime curlx_tvnow(void)
UNITTEST_START int result
static CURLcode randit(struct Curl_easy *data, unsigned int *rnd)
memcpy(filename, filename1, strlen(filename1))
CURLcode Curl_rand_hex(struct Curl_easy *data, unsigned char *rnd, size_t num)
double min(double a, double b)
CURLcode Curl_rand(struct Curl_easy *data, unsigned char *rnd, size_t num)