On shutdown, mark openssl as uninitialized.
This causes openssl to get completely reinitialized on startup, which is probably a good idea.
This commit is contained in:
parent
18ea91ee6b
commit
42751e2123
|
@ -283,11 +283,12 @@ crypto_force_rand_ssleay(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int have_seeded_siphash = 0;
|
||||
|
||||
/** Set up the siphash key if we haven't already done so. */
|
||||
int
|
||||
crypto_init_siphash_key(void)
|
||||
{
|
||||
static int have_seeded_siphash = 0;
|
||||
struct sipkey key;
|
||||
if (have_seeded_siphash)
|
||||
return 0;
|
||||
|
@ -3495,6 +3496,12 @@ crypto_global_cleanup(void)
|
|||
|
||||
tor_free(crypto_openssl_version_str);
|
||||
tor_free(crypto_openssl_header_version_str);
|
||||
|
||||
crypto_early_initialized_ = 0;
|
||||
crypto_global_initialized_ = 0;
|
||||
have_seeded_siphash = 0;
|
||||
siphash_unset_global_key();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -123,3 +123,9 @@ void siphash_set_global_key(const struct sipkey *key)
|
|||
the_siphash_key.k1 = key->k1;
|
||||
the_siphash_key_is_set = 1;
|
||||
}
|
||||
|
||||
void siphash_unset_global_key(void)
|
||||
{
|
||||
the_siphash_key_is_set = 0;
|
||||
memset(&the_siphash_key, 0, sizeof(the_siphash_key));
|
||||
}
|
||||
|
|
|
@ -9,5 +9,6 @@ uint64_t siphash24(const void *src, unsigned long src_sz, const struct sipkey *k
|
|||
|
||||
void siphash_set_global_key(const struct sipkey *key);
|
||||
uint64_t siphash24g(const void *src, unsigned long src_sz);
|
||||
void siphash_unset_global_key(void);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue