botan: Extract helper function to map RNG quality to Botan RNG names
This commit is contained in:
parent
eb399fb438
commit
5ffc1ec423
|
@ -22,6 +22,7 @@
|
|||
*/
|
||||
|
||||
#include "botan_rng.h"
|
||||
#include "botan_util.h"
|
||||
|
||||
#include <botan/build.h>
|
||||
|
||||
|
@ -83,29 +84,12 @@ METHOD(rng_t, destroy, void,
|
|||
botan_random_t *botan_rng_create(rng_quality_t quality)
|
||||
{
|
||||
private_botan_random_t *this;
|
||||
const char* rng_name;
|
||||
const char *rng_name;
|
||||
|
||||
switch (quality)
|
||||
rng_name = botan_map_rng_quality(quality);
|
||||
if (!rng_name)
|
||||
{
|
||||
case RNG_WEAK:
|
||||
case RNG_STRONG:
|
||||
/* some rng_t instances of this class (e.g. in the ike-sa-manager)
|
||||
* may be called concurrently by different threads. the Botan RNGs
|
||||
* are not reentrant, by default, so use the threadsafe version.
|
||||
* because we build without threading support when running tests
|
||||
* with leak-detective (lots of reports of frees of unknown memory)
|
||||
* there is a fallback to the default */
|
||||
#ifdef BOTAN_TARGET_OS_HAS_THREADS
|
||||
rng_name = "user-threadsafe";
|
||||
#else
|
||||
rng_name = "user";
|
||||
#endif
|
||||
break;
|
||||
case RNG_TRUE:
|
||||
rng_name = "system";
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
INIT(this,
|
||||
|
|
|
@ -313,3 +313,35 @@ bool botan_dh_key_derivation(botan_privkey_t key, chunk_t pub, chunk_t *secret)
|
|||
botan_pk_op_key_agreement_destroy(ka);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Described in header
|
||||
*/
|
||||
const char *botan_map_rng_quality(rng_quality_t quality)
|
||||
{
|
||||
const char *rng_name;
|
||||
|
||||
switch (quality)
|
||||
{
|
||||
case RNG_WEAK:
|
||||
case RNG_STRONG:
|
||||
/* some rng_t instances of this class (e.g. in the ike-sa-manager)
|
||||
* may be called concurrently by different threads. the Botan RNGs
|
||||
* are not reentrant, by default, so use the threadsafe version.
|
||||
* because we build without threading support when running tests
|
||||
* with leak-detective (lots of reports of frees of unknown memory)
|
||||
* there is a fallback to the default */
|
||||
#ifdef BOTAN_TARGET_OS_HAS_THREADS
|
||||
rng_name = "user-threadsafe";
|
||||
#else
|
||||
rng_name = "user";
|
||||
#endif
|
||||
break;
|
||||
case RNG_TRUE:
|
||||
rng_name = "system";
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
return rng_name;
|
||||
}
|
||||
|
|
|
@ -125,4 +125,12 @@ bool botan_verify_signature(botan_pubkey_t key, const char* scheme,
|
|||
*/
|
||||
bool botan_dh_key_derivation(botan_privkey_t key, chunk_t pub, chunk_t *secret);
|
||||
|
||||
/**
|
||||
* Map the given RNG quality to a name as used by Botan.
|
||||
*
|
||||
* @param quality RNG quality
|
||||
* @return name of the Botan RNG
|
||||
*/
|
||||
const char *botan_map_rng_quality(rng_quality_t quality);
|
||||
|
||||
#endif /** BOTAN_UTIL_H_ @}*/
|
||||
|
|
Loading…
Reference in New Issue