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_rng.h"
|
||||||
|
#include "botan_util.h"
|
||||||
|
|
||||||
#include <botan/build.h>
|
#include <botan/build.h>
|
||||||
|
|
||||||
|
@ -83,29 +84,12 @@ METHOD(rng_t, destroy, void,
|
||||||
botan_random_t *botan_rng_create(rng_quality_t quality)
|
botan_random_t *botan_rng_create(rng_quality_t quality)
|
||||||
{
|
{
|
||||||
private_botan_random_t *this;
|
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:
|
return NULL;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
INIT(this,
|
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);
|
botan_pk_op_key_agreement_destroy(ka);
|
||||||
return TRUE;
|
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);
|
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_ @}*/
|
#endif /** BOTAN_UTIL_H_ @}*/
|
||||||
|
|
Loading…
Reference in New Issue