mirror of
https://github.com/curl/curl.git
synced 2025-09-22 12:06:47 +03:00
first take at detecting a random device and seeding the random key using data
from it in randomize_key()
This commit is contained in:
parent
2faba57c85
commit
6a674ded0e
|
@ -1276,6 +1276,7 @@ static void natural_mask(struct apattern *pat)
|
||||||
static void randomize_key(unsigned char* key,int key_data_len)
|
static void randomize_key(unsigned char* key,int key_data_len)
|
||||||
{
|
{
|
||||||
int randomized = 0;
|
int randomized = 0;
|
||||||
|
int counter=0;
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
HMODULE lib=LoadLibrary("ADVAPI32.DLL");
|
HMODULE lib=LoadLibrary("ADVAPI32.DLL");
|
||||||
if (lib) {
|
if (lib) {
|
||||||
|
@ -1286,11 +1287,22 @@ static void randomize_key(unsigned char* key,int key_data_len)
|
||||||
|
|
||||||
FreeLibrary(lib);
|
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
|
||||||
|
#endif /* WIN32 */
|
||||||
|
|
||||||
if ( !randomized ) {
|
if ( !randomized ) {
|
||||||
int counter;
|
for (;counter<key_data_len;counter++)
|
||||||
for (counter=0;counter<key_data_len;counter++)
|
|
||||||
key[counter]=rand() % 256;
|
key[counter]=rand() % 256;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -785,4 +785,20 @@ AC_C_BIGENDIAN(
|
||||||
[AC_MSG_WARN([couldn't figure out endianess, assuming little endian!])]
|
[AC_MSG_WARN([couldn't figure out endianess, assuming little endian!])]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
dnl Check for user-specified random device
|
||||||
|
AC_ARG_WITH(random,
|
||||||
|
AC_HELP_STRING([--with-random=FILE],
|
||||||
|
[read randomness from FILE (default=/dev/urandom)]),
|
||||||
|
[ RANDOM_FILE="$withval" ],
|
||||||
|
[
|
||||||
|
dnl Check for random device
|
||||||
|
AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
|
||||||
|
]
|
||||||
|
)
|
||||||
|
if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
|
||||||
|
AC_SUBST(RANDOM_FILE)
|
||||||
|
AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
|
||||||
|
[a suitable file/device to read random data from])
|
||||||
|
fi
|
||||||
|
|
||||||
AC_OUTPUT(Makefile)
|
AC_OUTPUT(Makefile)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user