From 9afd58432f78ccb027cabc6c7282d42dc3dd874f Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Mon, 12 Jul 2021 21:37:40 +0200 Subject: [PATCH] Use esp_fill_random() to generate random bytes. --- src/crypto.c | 68 ++-------------------------------------------------- 1 file changed, 2 insertions(+), 66 deletions(-) diff --git a/src/crypto.c b/src/crypto.c index 3244a0b..2e0ecca 100644 --- a/src/crypto.c +++ b/src/crypto.c @@ -23,77 +23,13 @@ //TODO: use a strict random source once to seed a PRNG? -#ifndef HAVE_MINGW - -static int random_fd = -1; - -void crypto_init(void) { - assert(random_fd == -1); - - random_fd = open("/dev/urandom", O_RDONLY); - - if(random_fd < 0) { - random_fd = open("/dev/random", O_RDONLY); - } - - if(random_fd < 0) { - fprintf(stderr, "Could not open source of random numbers: %s\n", strerror(errno)); - abort(); - } -} - -void crypto_exit(void) { - assert(random_fd != -1); - - close(random_fd); - random_fd = -1; -} - -void randomize(void *out, size_t outlen) { - assert(outlen); - - char *ptr = out; - - while(outlen) { - size_t len = read(random_fd, ptr, outlen); - - if(len <= 0) { - if(errno == EAGAIN || errno == EINTR) { - continue; - } - - fprintf(stderr, "Could not read random numbers: %s\n", strerror(errno)); - abort(); - } - - ptr += len; - outlen -= len; - } -} - -#else - -#include -HCRYPTPROV prov; - void crypto_init(void) { - if(!CryptAcquireContext(&prov, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) { - fprintf(stderr, "CryptAcquireContext() failed!\n"); - abort(); - } + // TODO: bootloader_random_enable()? } void crypto_exit(void) { - CryptReleaseContext(prov, 0); } void randomize(void *out, size_t outlen) { - assert(outlen); - - if(!CryptGenRandom(prov, outlen, out)) { - fprintf(stderr, "CryptGenRandom() failed\n"); - abort(); - } + esp_fill_random(out, outlen); } - -#endif -- 2.39.5