aboutsummaryrefslogtreecommitdiffstats
path: root/src/pubkey/blinding.cpp
diff options
context:
space:
mode:
authorlloyd <[email protected]>2010-03-19 15:59:45 +0000
committerlloyd <[email protected]>2010-03-19 15:59:45 +0000
commit1418ba24b73b8d9e4af67950fee38a02e7f1ac75 (patch)
treefeeb7add6cc5cd172579cb1326bfe3fcd6f4830e /src/pubkey/blinding.cpp
parent87cb43641ca7000b6d97dcb4d8a5e716a07fcf76 (diff)
There are some nasty API problems that are caused by having to pass a
PRNG everywhere. The removal of the global PRNG was generated by a desire to remove the global library state entirely. However the real point of this was to remove the use of globally visible _mutable_ state; of the mutable state, the PRNG is probably the least important, and the most useful to share. And it seems unlikely that thread contention would be a major issue in the PRNG. Add back a global PRNG to Library_State. Use lazy initialization, so apps that don't ever use a PRNG don't need a seeding step. Then have AutoSeeded_RNG call that global PRNG. Offer once again RandomNumberGenerator& Library_State::global_rng(); which returns a reference to the global PRNG. This RNG object serializes access to itself with a mutex. Remove the hack known as Blinding::choose_nonce, replace with using the global PRNG to choose a blinding nonce
Diffstat (limited to 'src/pubkey/blinding.cpp')
-rw-r--r--src/pubkey/blinding.cpp27
1 files changed, 0 insertions, 27 deletions
diff --git a/src/pubkey/blinding.cpp b/src/pubkey/blinding.cpp
index 819d0dd20..c4c0e3b6e 100644
--- a/src/pubkey/blinding.cpp
+++ b/src/pubkey/blinding.cpp
@@ -7,11 +7,6 @@
#include <botan/blinding.h>
#include <botan/numthry.h>
-#include <botan/libstate.h>
-#include <botan/hash.h>
-#include <botan/time.h>
-#include <botan/loadstor.h>
-#include <memory>
namespace Botan {
@@ -28,28 +23,6 @@ Blinder::Blinder(const BigInt& e, const BigInt& d, const BigInt& n)
this->d = d;
}
-BigInt Blinder::choose_nonce(const BigInt& x, const BigInt& mod)
- {
- Algorithm_Factory& af = global_state().algorithm_factory();
-
- std::auto_ptr<HashFunction> hash(af.make_hash_function("SHA-512"));
-
- u64bit ns_clock = get_nanoseconds_clock();
- for(size_t i = 0; i != sizeof(ns_clock); ++i)
- hash->update(get_byte(i, ns_clock));
-
- hash->update(BigInt::encode(x));
- hash->update(BigInt::encode(mod));
-
- u64bit timestamp = system_time();
- for(size_t i = 0; i != sizeof(timestamp); ++i)
- hash->update(get_byte(i, timestamp));
-
- SecureVector<byte> r = hash->final();
-
- return BigInt::decode(r) % mod;
- }
-
/*
* Blind a number
*/