botan: Remove unused drbg_t instance when building without testable KE

This commit is contained in:
Tobias Brunner 2025-05-23 11:33:32 +02:00
parent 37ec770758
commit 07a9926464

View File

@ -76,12 +76,16 @@ struct private_key_exchange_t {
*/ */
chunk_t shared_secret; chunk_t shared_secret;
#ifdef TESTABLE_KE
/** /**
* DRBG for testing. * DRBG for testing.
*/ */
drbg_t *drbg; drbg_t *drbg;
#endif
}; };
#ifdef TESTABLE_KE
CALLBACK(get_random, int, CALLBACK(get_random, int,
drbg_t *drbg, uint8_t *out, size_t out_len) drbg_t *drbg, uint8_t *out, size_t out_len)
{ {
@ -92,17 +96,21 @@ CALLBACK(get_random, int,
return 0; return 0;
} }
#endif /* TESTABLE_KE */
/** /**
* Initializes the given RNG, either based on a DRBG during testing or using * Initializes the given RNG, either based on a DRBG during testing or using
* the plugin's configured RNG. * the plugin's configured RNG.
*/ */
static bool get_rng(private_key_exchange_t *this, botan_rng_t *rng) static bool get_rng(private_key_exchange_t *this, botan_rng_t *rng)
{ {
#ifdef TESTABLE_KE
if (this->drbg) if (this->drbg)
{ {
return !botan_rng_init_custom(rng, "kem-drbg", this->drbg, return !botan_rng_init_custom(rng, "kem-drbg", this->drbg,
get_random, NULL, NULL); get_random, NULL, NULL);
} }
#endif
return botan_get_rng(rng, RNG_STRONG); return botan_get_rng(rng, RNG_STRONG);
} }
@ -121,6 +129,7 @@ CALLBACK(botan_view_to_chunk, int,
*/ */
static bool generate_keypair(private_key_exchange_t *this) static bool generate_keypair(private_key_exchange_t *this)
{ {
#ifdef TESTABLE_KE
if (this->drbg) if (this->drbg)
{ {
uint8_t random[ML_KEM_SEED_LEN]; uint8_t random[ML_KEM_SEED_LEN];
@ -135,6 +144,7 @@ static bool generate_keypair(private_key_exchange_t *this)
} }
} }
else else
#endif /* TESTABLE_KE */
{ {
botan_rng_t rng = NULL; botan_rng_t rng = NULL;
@ -313,7 +323,9 @@ METHOD(key_exchange_t, destroy, void,
chunk_clear(&this->shared_secret); chunk_clear(&this->shared_secret);
chunk_free(&this->ciphertext); chunk_free(&this->ciphertext);
botan_privkey_destroy(this->kem); botan_privkey_destroy(this->kem);
#ifdef TESTABLE_KE
DESTROY_IF(this->drbg); DESTROY_IF(this->drbg);
#endif
free(this->name); free(this->name);
free(this); free(this);
} }