From 3537c77e39def4892348b1eb68b248f9444e5a97 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Fri, 19 Mar 2021 19:46:14 -0400 Subject: Update datatest.cpp --- datatest.cpp | 126 ++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 78 insertions(+), 48 deletions(-) (limited to 'datatest.cpp') diff --git a/datatest.cpp b/datatest.cpp index 700f27f8..f6543a32 100644 --- a/datatest.cpp +++ b/datatest.cpp @@ -356,14 +356,22 @@ void TestSignatureScheme(TestData &v, unsigned int &totalTests) std::string name = GetRequiredDatum(v, "Name"); std::string test = GetRequiredDatum(v, "Test"); - member_ptr signer(ObjectFactoryRegistry::Registry().CreateObject(name.c_str())); - member_ptr verifier(ObjectFactoryRegistry::Registry().CreateObject(name.c_str())); + static member_ptr signer; + static member_ptr verifier; + static std::string lastName; - // Code coverage - (void)signer->AlgorithmName(); - (void)verifier->AlgorithmName(); - (void)signer->AlgorithmProvider(); - (void)verifier->AlgorithmProvider(); + if (name != lastName) + { + signer.reset(ObjectFactoryRegistry::Registry().CreateObject(name.c_str())); + verifier.reset(ObjectFactoryRegistry::Registry().CreateObject(name.c_str())); + lastName = name; + + // Code coverage + (void)signer->AlgorithmName(); + (void)verifier->AlgorithmName(); + (void)signer->AlgorithmProvider(); + (void)verifier->AlgorithmProvider(); + } TestDataNameValuePairs pairs(v); @@ -462,14 +470,22 @@ void TestSignatureSchemeWithFileSource(TestData &v, unsigned int &totalTests) if (test != "Sign" && test != "DeterministicSign") { return; } - member_ptr signer(ObjectFactoryRegistry::Registry().CreateObject(name.c_str())); - member_ptr verifier(ObjectFactoryRegistry::Registry().CreateObject(name.c_str())); + static member_ptr signer; + static member_ptr verifier; + static std::string lastName; + + if (name != lastName) + { + signer.reset(ObjectFactoryRegistry::Registry().CreateObject(name.c_str())); + verifier.reset(ObjectFactoryRegistry::Registry().CreateObject(name.c_str())); + name = lastName; - // Code coverage - (void)signer->AlgorithmName(); - (void)verifier->AlgorithmName(); - (void)signer->AlgorithmProvider(); - (void)verifier->AlgorithmProvider(); + // Code coverage + (void)signer->AlgorithmName(); + (void)verifier->AlgorithmName(); + (void)signer->AlgorithmProvider(); + (void)verifier->AlgorithmProvider(); + } TestDataNameValuePairs pairs(v); @@ -901,36 +917,44 @@ void TestAuthenticatedSymmetricCipher(TestData &v, const NameValuePairs &overrid { totalTests++; - member_ptr encryptor, decryptor; - encryptor.reset(ObjectFactoryRegistry::Registry().CreateObject(name.c_str())); - decryptor.reset(ObjectFactoryRegistry::Registry().CreateObject(name.c_str())); + static member_ptr encryptor; + static member_ptr decryptor; + static std::string lastName; + + if (name != lastName) + { + encryptor.reset(ObjectFactoryRegistry::Registry().CreateObject(name.c_str())); + decryptor.reset(ObjectFactoryRegistry::Registry().CreateObject(name.c_str())); + name = lastName; + + // Code coverage + (void)encryptor->AlgorithmName(); + (void)decryptor->AlgorithmName(); + (void)encryptor->AlgorithmProvider(); + (void)decryptor->AlgorithmProvider(); + (void)encryptor->MinKeyLength(); + (void)decryptor->MinKeyLength(); + (void)encryptor->MaxKeyLength(); + (void)decryptor->MaxKeyLength(); + (void)encryptor->DefaultKeyLength(); + (void)decryptor->DefaultKeyLength(); + (void)encryptor->IsRandomAccess(); + (void)decryptor->IsRandomAccess(); + (void)encryptor->IsSelfInverting(); + (void)decryptor->IsSelfInverting(); + (void)encryptor->MaxHeaderLength(); + (void)decryptor->MaxHeaderLength(); + (void)encryptor->MaxMessageLength(); + (void)decryptor->MaxMessageLength(); + (void)encryptor->MaxFooterLength(); + (void)decryptor->MaxFooterLength(); + (void)encryptor->NeedsPrespecifiedDataLengths(); + (void)decryptor->NeedsPrespecifiedDataLengths(); + } + encryptor->SetKey(ConstBytePtr(key), BytePtrSize(key), pairs); decryptor->SetKey(ConstBytePtr(key), BytePtrSize(key), pairs); - // Code coverage - (void)encryptor->AlgorithmName(); - (void)decryptor->AlgorithmName(); - (void)encryptor->AlgorithmProvider(); - (void)decryptor->AlgorithmProvider(); - (void)encryptor->MinKeyLength(); - (void)decryptor->MinKeyLength(); - (void)encryptor->MaxKeyLength(); - (void)decryptor->MaxKeyLength(); - (void)encryptor->DefaultKeyLength(); - (void)decryptor->DefaultKeyLength(); - (void)encryptor->IsRandomAccess(); - (void)decryptor->IsRandomAccess(); - (void)encryptor->IsSelfInverting(); - (void)decryptor->IsSelfInverting(); - (void)encryptor->MaxHeaderLength(); - (void)decryptor->MaxHeaderLength(); - (void)encryptor->MaxMessageLength(); - (void)decryptor->MaxMessageLength(); - (void)encryptor->MaxFooterLength(); - (void)decryptor->MaxFooterLength(); - (void)encryptor->NeedsPrespecifiedDataLengths(); - (void)decryptor->NeedsPrespecifiedDataLengths(); - std::string encrypted, decrypted; AuthenticatedEncryptionFilter ef(*encryptor, new StringSink(encrypted)); bool macAtBegin = !mac.empty() && !Test::GlobalRNG().GenerateBit(); // test both ways randomly @@ -1070,14 +1094,20 @@ void TestKeyDerivationFunction(TestData &v, unsigned int &totalTests) TestDataNameValuePairs pairs(v); - member_ptr kdf; - kdf.reset(ObjectFactoryRegistry::Registry().CreateObject(name.c_str())); + static member_ptr kdf; + static std::string lastName; + + if (name != lastName) + { + kdf.reset(ObjectFactoryRegistry::Registry().CreateObject(name.c_str())); + name = lastName; - // Code coverage - (void)kdf->AlgorithmName(); - (void)kdf->AlgorithmProvider(); - (void)kdf->MinDerivedKeyLength(); - (void)kdf->MaxDerivedKeyLength(); + // Code coverage + (void)kdf->AlgorithmName(); + (void)kdf->AlgorithmProvider(); + (void)kdf->MinDerivedKeyLength(); + (void)kdf->MaxDerivedKeyLength(); + } std::string calculated; calculated.resize(expected.size()); kdf->DeriveKey(BytePtr(calculated), BytePtrSize(calculated), BytePtr(secret), BytePtrSize(secret), pairs); -- cgit v1.2.1