From 33be6846c06ec935180c97fa9811758368b5f097 Mon Sep 17 00:00:00 2001 From: weidai Date: Thu, 29 Jul 2010 10:50:42 +0000 Subject: fix possible error during DLL startup self-test due to calling functions in ADVAPI32.DLL from DllMain() (http://sourceforge.net/apps/trac/cryptopp/ticket/4) git-svn-id: svn://svn.code.sf.net/p/cryptopp/code/trunk/c5@513 57ff6487-cd31-0410-9ec3-f628ee90f5f0 --- fipstest.cpp | 21 ++++----------------- osrng.h | 4 ++-- 2 files changed, 6 insertions(+), 19 deletions(-) diff --git a/fipstest.cpp b/fipstest.cpp index 9a6c560..e882742 100644 --- a/fipstest.cpp +++ b/fipstest.cpp @@ -69,7 +69,7 @@ void X917RNG_KnownAnswerTest( StringSource(seed, true, new HexDecoder(new StringSink(decodedSeed))); StringSource(deterministicTimeVector, true, new HexDecoder(new StringSink(decodedDeterministicTimeVector))); - AutoSeededX917RNG rng; + AutoSeededX917RNG rng(false, false); rng.Reseed((const byte *)decodedKey.data(), decodedKey.size(), (const byte *)decodedSeed.data(), (const byte *)decodedDeterministicTimeVector.data()); KnownAnswerTest(rng, output); #else @@ -154,15 +154,10 @@ void MAC_KnownAnswerTest(const char *key, const char *message, const char *diges template void SignatureKnownAnswerTest(const char *key, const char *message, const char *signature, SCHEME *dummy = NULL) { -#ifdef OS_RNG_AVAILABLE - DefaultAutoSeededRNG rng; -#else - RandomNumberGenerator &rng = NullRNG(); -#endif - typename SCHEME::Signer signer(StringSource(key, true, new HexDecoder).Ref()); typename SCHEME::Verifier verifier(signer); + RandomPool rng; EqualityComparisonFilter comparison; StringSource(message, true, new SignerFilter(rng, signer, new ChannelSwitch(comparison, "0"))); @@ -180,11 +175,7 @@ void EncryptionPairwiseConsistencyTest(const PK_Encryptor &encryptor, const PK_D { try { -#ifdef OS_RNG_AVAILABLE - DefaultAutoSeededRNG rng; -#else - RandomNumberGenerator &rng = NullRNG(); -#endif + RandomPool rng; const char *testMessage ="test message"; std::string ciphertext, decrypted; @@ -220,11 +211,7 @@ void SignaturePairwiseConsistencyTest(const PK_Signer &signer, const PK_Verifier { try { -#ifdef OS_RNG_AVAILABLE - DefaultAutoSeededRNG rng; -#else - RandomNumberGenerator &rng = NullRNG(); -#endif + RandomPool rng; StringSource( "test message", diff --git a/osrng.h b/osrng.h index eb4e6e2..9192616 100644 --- a/osrng.h +++ b/osrng.h @@ -96,8 +96,8 @@ class AutoSeededX917RNG : public RandomNumberGenerator, public NotCopyable { public: //! use blocking to choose seeding with BlockingRng or NonblockingRng. the parameter is ignored if only one of these is available - explicit AutoSeededX917RNG(bool blocking = false) - {Reseed(blocking);} + explicit AutoSeededX917RNG(bool blocking = false, bool autoSeed = true) + {if (autoSeed) Reseed(blocking);} void Reseed(bool blocking = false, const byte *additionalEntropy = NULL, size_t length = 0); // exposed for testing void Reseed(const byte *key, size_t keylength, const byte *seed, const byte *timeVector); -- cgit v1.2.1