X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=gcrypt.c;h=ff4dab37ea4f5323e7545f5a755c38c105fdc6c0;hb=7e611b37e41f0ec7ec6d3173b7e88ed5b9b3a276;hp=5c05ba20badce165aa1f1369136ab90e5d9b41d9;hpb=aa066efd962198bbeed8e5bcee57572f9e15455a;p=paraslash.git diff --git a/gcrypt.c b/gcrypt.c index 5c05ba20..ff4dab37 100644 --- a/gcrypt.c +++ b/gcrypt.c @@ -66,10 +66,29 @@ void crypt_init(void) req_ver, gcry_check_version(NULL)); exit(EXIT_FAILURE); } + + /* + * Allocate a pool of secure memory. This also drops privileges where + * needed. + */ + gcry_control(GCRYCTL_INIT_SECMEM, 65536, 0); + + /* Tell Libgcrypt that initialization has completed. */ + gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0); + get_random_bytes_or_die((unsigned char *)&seed, sizeof(seed)); srandom(seed); } +void crypt_shutdown(void) +{ + /* + * WK does not see a way to apply a patch for the sake of Valgrind, so + * as of 2018 libgrypt has no deinitialization routine to free the + * resources on exit. + */ +} + /** S-expression for the public part of an RSA key. */ #define RSA_PUBKEY_SEXP "(public-key (rsa (n %m) (e %m)))" /** S-expression for a private RSA key. */