/** Read the system RNG @param out Destination @param outlen Length desired (octets) @param callback Pointer to void function to act as "callback" when RNG is slow. This can be NULL @return Number of octets read */ unsigned long rng_get_bytes(unsigned char *out, unsigned long outlen, void (*callback)(void)) { unsigned long x; LTC_ARGCHK(out != NULL); #if defined(DEVRANDOM) x = rng_nix(out, outlen, callback); if (x != 0) { return x; } #endif #ifdef WIN32 x = rng_win32(out, outlen, callback); if (x != 0) { return x; } #endif return 0; }
unsigned long rng_get_bytes(unsigned char *buf, unsigned long len, void (*callback)(void)) { unsigned long x; _ARGCHK(buf != NULL); #if defined(DEVRANDOM) x = rng_nix(buf, len, callback); if (x != 0) { return x; } #endif #ifdef WIN32 x = rng_win32(buf, len, callback); if (x != 0) { return x; } #endif #ifdef ANSI_RNG x = rng_ansic(buf, len, callback); if (x != 0) { return x; } #endif return 0; }