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)

pull/2/head
weidai 2010-07-29 10:50:42 +00:00
parent a3f2091bcd
commit 05e42a01d9
2 changed files with 6 additions and 19 deletions

View File

@ -69,7 +69,7 @@ void X917RNG_KnownAnswerTest(
StringSource(seed, true, new HexDecoder(new StringSink(decodedSeed)));
StringSource(deterministicTimeVector, true, new HexDecoder(new StringSink(decodedDeterministicTimeVector)));
AutoSeededX917RNG<CIPHER> rng;
AutoSeededX917RNG<CIPHER> 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 <class SCHEME>
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",

View File

@ -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);