diff options
author | lloyd <[email protected]> | 2008-05-24 17:05:16 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2008-05-24 17:05:16 +0000 |
commit | b8768fa4372eaeb0b816db7bc55813261bc35c2a (patch) | |
tree | db3738a2aef71c5aaae37619889d0baf6cef13b9 | |
parent | 265ffd5c1aaa29c19a4feae5c54133ef7cf1d52d (diff) |
Remove both default arguments to the constructor of ANSI_X931_RNG.
If the second argument was NULL, it would default to a new Randpool.
But this introduces an annoying dependency: really it is the caller who
is relying on Randpool. Make this explicit by passing a new Randpool
pointer to the constructor in Library_State.
This will break all callers using ANSI_X931_RNG's constructors with
default arguments. To regain the previous behavior, change:
ANSI_X931_RNG rng;
ANSI_X931_RNG rng("/*cipher name*/");
to
ANSI_X931_RNG rng(/*cipher name, default was AES-256 */, new Randpool);
You are free to pass another PRNG object if you like.
This make require inclusion of <botan/randpool.h>
-rw-r--r-- | include/x931_rng.h | 2 | ||||
-rw-r--r-- | src/libstate.cpp | 3 | ||||
-rw-r--r-- | src/x931_rng.cpp | 11 |
3 files changed, 8 insertions, 8 deletions
diff --git a/include/x931_rng.h b/include/x931_rng.h index 3cfa52b6a..8bb8cc2ac 100644 --- a/include/x931_rng.h +++ b/include/x931_rng.h @@ -21,7 +21,7 @@ class BOTAN_DLL ANSI_X931_RNG : public RandomNumberGenerator void clear() throw(); std::string name() const; - ANSI_X931_RNG(const std::string& = "", RandomNumberGenerator* = 0); + ANSI_X931_RNG(const std::string&, RandomNumberGenerator*); ~ANSI_X931_RNG(); private: void add_randomness(const byte[], u32bit); diff --git a/src/libstate.cpp b/src/libstate.cpp index db2d124a8..b988625ce 100644 --- a/src/libstate.cpp +++ b/src/libstate.cpp @@ -11,6 +11,7 @@ #include <botan/mutex.h> #include <botan/charset.h> #include <botan/x931_rng.h> +#include <botan/randpool.h> #include <botan/selftest.h> #include <algorithm> @@ -272,7 +273,7 @@ void Library_State::initialize(const InitializerOptions& args, for(u32bit j = 0; j != sources.size(); ++j) add_entropy_source(sources[j]); - set_prng(new ANSI_X931_RNG); + set_prng(new ANSI_X931_RNG("AES-256", new Randpool)); if(args.seed_rng()) { diff --git a/src/x931_rng.cpp b/src/x931_rng.cpp index 01b8c33d2..94d5f9247 100644 --- a/src/x931_rng.cpp +++ b/src/x931_rng.cpp @@ -108,18 +108,17 @@ std::string ANSI_X931_RNG::name() const ANSI_X931_RNG::ANSI_X931_RNG(const std::string& cipher_name, RandomNumberGenerator* prng_ptr) { - if(cipher_name == "") - cipher = get_block_cipher("AES-256"); - else - cipher = get_block_cipher(cipher_name); + if(!prng_ptr) + throw Invalid_Argument("ANSI_X931_RNG constructor: NULL prng"); + + prng = prng_ptr; + cipher = get_block_cipher(cipher_name); const u32bit BLOCK_SIZE = cipher->BLOCK_SIZE; V.create(BLOCK_SIZE); R.create(BLOCK_SIZE); - prng = (prng_ptr ? prng_ptr : new Randpool); - position = 0; } |