X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fnolegacy%2Fcrypto.c;h=4e6f427adbfbc20f6694bbb5b4c130b925bc6855;hb=c45a3fd7319d03bd147448a017f5aaed3b46fdfe;hp=d9df82881c3fb8e8291e10276a7a03b83f2d5caa;hpb=28b7a53b693f6b4e70218a926e68a36ece54cda1;p=tinc diff --git a/src/nolegacy/crypto.c b/src/nolegacy/crypto.c index d9df8288..4e6f427a 100644 --- a/src/nolegacy/crypto.c +++ b/src/nolegacy/crypto.c @@ -1,6 +1,6 @@ /* crypto.c -- Cryptographic miscellaneous functions and initialisation - Copyright (C) 2007-2021 Guus Sliepen + Copyright (C) 2007-2022 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,80 +17,8 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include "../system.h" - #include "../crypto.h" -#ifndef HAVE_MINGW - -static int random_fd = -1; - -static void random_init(void) { - 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(); - } -} - -static void random_exit(void) { - close(random_fd); -} - -void randomize(void *vout, size_t outlen) { - uint8_t *out = vout; - - while(outlen) { - ssize_t len = read(random_fd, out, outlen); - - if(len <= 0) { - if(len == -1 && (errno == EAGAIN || errno == EINTR)) { - continue; - } - - fprintf(stderr, "Could not read random numbers: %s\n", strerror(errno)); - abort(); - } - - out += len; - outlen -= len; - } -} - -#else - -#include -HCRYPTPROV prov; - -static void random_init(void) { - if(!CryptAcquireContext(&prov, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) { - fprintf(stderr, "CryptAcquireContext() failed!\n"); - abort(); - } -} - -static void random_exit(void) { - CryptReleaseContext(prov, 0); -} - -void randomize(void *out, size_t outlen) { - if(!CryptGenRandom(prov, outlen, out)) { - fprintf(stderr, "CryptGenRandom() failed\n"); - abort(); - } -} - -#endif - -void crypto_init(void) { - random_init(); -} - -void crypto_exit(void) { - random_exit(); -} +// No-op for those cryptographic libraries that +// do not require any additional initialization. +void crypto_init(void) {}