Skip to content

Commit 3e59b83

Browse files
Only keep /dev/urandom open, close /dev/random after each use.
Improve logic for opening RNG seed FD.
1 parent b0b840a commit 3e59b83

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

wolfcrypt/src/random.c

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3568,7 +3568,7 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
35683568
#ifndef NO_FILESYSTEM
35693569
#ifndef NO_DEV_URANDOM /* way to disable use of /dev/urandom */
35703570
#ifdef WOLFSSL_KEEP_RNG_SEED_FD_OPEN
3571-
if (os->fd == -1 && !os->seedFdOpen)
3571+
if (!os->seedFdOpen)
35723572
#endif
35733573
{
35743574
os->fd = open("/dev/urandom", O_RDONLY);
@@ -3585,10 +3585,18 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
35853585
#endif
35863586
if (os->fd == -1)
35873587
return OPEN_RAN_E;
3588+
#ifdef WOLFSSL_KEEP_RNG_SEED_FD_OPEN
3589+
else {
3590+
os->keepSeedFdOpen = 0;
3591+
os->seedFdOpen = 1;
3592+
}
3593+
#endif
35883594
}
35893595
#ifdef WOLFSSL_KEEP_RNG_SEED_FD_OPEN
3590-
if (os->fd != -1)
3596+
else {
3597+
os->keepSeedFdOpen = 1;
35913598
os->seedFdOpen = 1;
3599+
}
35923600
#endif
35933601
}
35943602
#if defined(DEBUG_WOLFSSL)
@@ -3613,7 +3621,14 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
36133621
#endif
36143622
}
36153623
}
3616-
#ifndef WOLFSSL_KEEP_RNG_SEED_FD_OPEN
3624+
#ifdef WOLFSSL_KEEP_RNG_SEED_FD_OPEN
3625+
if (!os->keepSeedFdOpen && os->seedFdOpen)
3626+
{
3627+
close(os->fd);
3628+
os->fd = -1;
3629+
os->seedFdOpen = 0;
3630+
}
3631+
#else
36173632
close(os->fd);
36183633
#endif
36193634
#else

wolfssl/wolfcrypt/random.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ struct OS_Seed {
158158
int fd;
159159
#if defined(WOLFSSL_KEEP_RNG_SEED_FD_OPEN)
160160
byte seedFdOpen:1;
161+
byte keepSeedFdOpen:1;
161162
#endif
162163
#endif
163164
#if defined(WOLF_CRYPTO_CB)

0 commit comments

Comments
 (0)