first take at detecting a random device and seeding the random key using data

from it in randomize_key()
This commit is contained in:
Daniel Stenberg
2007-05-30 21:37:17 +00:00
parent 7a77f24d26
commit 49fdeb1de4
2 changed files with 30 additions and 2 deletions
+14 -2
View File
@@ -1276,6 +1276,7 @@ static void natural_mask(struct apattern *pat)
static void randomize_key(unsigned char* key,int key_data_len)
{
int randomized = 0;
int counter=0;
#ifdef WIN32
HMODULE lib=LoadLibrary("ADVAPI32.DLL");
if (lib) {
@@ -1286,11 +1287,22 @@ static void randomize_key(unsigned char* key,int key_data_len)
FreeLibrary(lib);
}
#else /* !WIN32 */
#ifdef RANDOM_FILE
char buffer[256];
FILE *f = fopen(RANDOM_FILE, "rb");
if(f) {
size_t i;
size_t rc = fread(buffer, key_data_len, 1, f);
for(i=0; i<rc && counter < key_data_len; i++)
key[counter++]=buffer[i];
fclose(f);
}
#endif
#endif /* WIN32 */
if ( !randomized ) {
int counter;
for (counter=0;counter<key_data_len;counter++)
for (;counter<key_data_len;counter++)
key[counter]=rand() % 256;
}
}