summaryrefslogtreecommitdiff
path: root/random/random-drbg.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <gniibe@fsij.org>2021-11-15 14:45:57 +0900
committerNIIBE Yutaka <gniibe@fsij.org>2021-11-15 14:45:57 +0900
commitec671cfa239888b67fcafda40b19006b61d9bbf2 (patch)
tree57669068d247d7d57f63aa89379697fa39fd33fa /random/random-drbg.c
parente562e34c824dda9ce1c4a0af58e8366699a3d88b (diff)
downloadlibgcrypt-ec671cfa239888b67fcafda40b19006b61d9bbf2.tar.gz
random: Include getentropy random module.
* random/rand-internal.h (_gcry_rndgetentropy_gather_random): Add. * random/random-csprng.c [USE_RNDLINUX] (_gcry_rngcsprng_close_fds) (getfnc_gather_random): Support getentropy random module. * random/random-drbg.c: Likewise. * random/random-fips.c: Likewise. * random/random-system.c: Likewise. * src/global.c [USE_RNDLINUX] (print_config): Show getentropy. -- GnuPG-bug-id: 5636 Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
Diffstat (limited to 'random/random-drbg.c')
-rw-r--r--random/random-drbg.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/random/random-drbg.c b/random/random-drbg.c
index 6124f5fb..dc8c7044 100644
--- a/random/random-drbg.c
+++ b/random/random-drbg.c
@@ -618,7 +618,10 @@ drbg_get_entropy (drbg_state_t drbg, unsigned char *buffer,
read_cb_buffer = buffer;
read_cb_size = len;
read_cb_len = 0;
-#if USE_RNDLINUX
+#if USE_RNDGETENTROPY
+ rc = _gcry_rndgetentropy_gather_random (drbg_read_cb, 0, len,
+ GCRY_VERY_STRONG_RANDOM);
+#elif USE_RNDLINUX
rc = _gcry_rndlinux_gather_random (drbg_read_cb, 0, len,
GCRY_VERY_STRONG_RANDOM);
#elif USE_RNDUNIX
@@ -1865,11 +1868,13 @@ _gcry_rngdrbg_reinit (const char *flagstr, gcry_buffer_t *pers, int npers)
void
_gcry_rngdrbg_close_fds (void)
{
-#if USE_RNDLINUX
drbg_lock ();
+#if USE_RNDGETENTROPY
+ _gcry_rndgetentropy_gather_random (NULL, 0, 0, 0);
+#elif USE_RNDLINUX
_gcry_rndlinux_gather_random (NULL, 0, 0, 0);
- drbg_unlock ();
#endif
+ drbg_unlock ();
}
/* Print some statistics about the RNG. */