mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2025-11-11 11:08:02 -06:00
Windows: Use Hardware RNG based on CPU timing jitter "Jitterentropy" by Stephan Mueller as a good alternative to RDRAND (http://www.chronox.de/jent.html, smueller@chronox.de)
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
#include "Crc.h"
|
||||
#include "Random.h"
|
||||
#include "Crypto\cpu.h"
|
||||
#include "Crypto\jitterentropy.h"
|
||||
#include "Crypto\rdrand.h"
|
||||
#include <Strsafe.h>
|
||||
|
||||
@@ -776,6 +777,19 @@ BOOL SlowPoll (void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* use JitterEntropy library to get good quality random bytes based on CPU timing jitter */
|
||||
if (0 == jent_entropy_init ())
|
||||
{
|
||||
struct rand_data *ec = jent_entropy_collector_alloc (1, 0);
|
||||
if (ec)
|
||||
{
|
||||
ssize_t rndLen = jent_read_entropy (ec, (char*) buffer, sizeof (buffer));
|
||||
if (rndLen > 0)
|
||||
RandaddBuf (buffer, (int) rndLen);
|
||||
jent_entropy_collector_free (ec);
|
||||
}
|
||||
}
|
||||
|
||||
// use RDSEED or RDRAND from CPU as source of entropy if present
|
||||
if ( IsCpuRngEnabled() &&
|
||||
( (HasRDSEED() && RDSEED_getBytes (buffer, sizeof (buffer)))
|
||||
@@ -908,6 +922,19 @@ BOOL FastPoll (void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* use JitterEntropy library to get good quality random bytes based on CPU timing jitter */
|
||||
if (0 == jent_entropy_init ())
|
||||
{
|
||||
struct rand_data *ec = jent_entropy_collector_alloc (1, 0);
|
||||
if (ec)
|
||||
{
|
||||
ssize_t rndLen = jent_read_entropy (ec, (char*) buffer, sizeof (buffer));
|
||||
if (rndLen > 0)
|
||||
RandaddBuf (buffer, (int) rndLen);
|
||||
jent_entropy_collector_free (ec);
|
||||
}
|
||||
}
|
||||
|
||||
// use RDSEED or RDRAND from CPU as source of entropy if enabled
|
||||
if ( IsCpuRngEnabled() &&
|
||||
( (HasRDSEED() && RDSEED_getBytes (buffer, sizeof (buffer)))
|
||||
|
||||
Reference in New Issue
Block a user