This causes openssl to get completely reinitialized on startup,
which is probably a good idea.
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;
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;
}
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));
+}
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