From: Peter van Dijk Date: Mon, 8 Jul 2019 16:45:09 +0000 (+0200) Subject: pdnsutil test-all-algorithsm improvements X-Git-Tag: dnsdist-1.4.0-rc3~20^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F8044%2Fhead;p=thirdparty%2Fpdns.git pdnsutil test-all-algorithsm improvements * add key make time * cleanup return type * also run verify 100 times for a better measurement --- diff --git a/pdns/dnssecinfra.cc b/pdns/dnssecinfra.cc index 233b228b12..ef85e629a2 100644 --- a/pdns/dnssecinfra.cc +++ b/pdns/dnssecinfra.cc @@ -196,7 +196,7 @@ bool DNSCryptoKeyEngine::testAll() for(maker_t* verifier : value.second) { try { - /* pair res=*/ testMakers(value.first, creator, signer, verifier); + testMakers(value.first, creator, signer, verifier); } catch(std::exception& e) { @@ -221,7 +221,7 @@ bool DNSCryptoKeyEngine::testOne(int algo) for(maker_t* verifier : getAllMakers()[algo]) { try { - /* pair res=*/testMakers(algo, creator, signer, verifier); + testMakers(algo, creator, signer, verifier); } catch(std::exception& e) { @@ -233,8 +233,8 @@ bool DNSCryptoKeyEngine::testOne(int algo) } return ret; } -// returns times it took to sign and verify -pair DNSCryptoKeyEngine::testMakers(unsigned int algo, maker_t* creator, maker_t* signer, maker_t* verifier) + +void DNSCryptoKeyEngine::testMakers(unsigned int algo, maker_t* creator, maker_t* signer, maker_t* verifier) { shared_ptr dckeCreate(creator(algo)); shared_ptr dckeSign(signer(algo)); @@ -253,7 +253,10 @@ pair DNSCryptoKeyEngine::testMakers(unsigned int alg else throw runtime_error("Can't guess key size for algorithm "+std::to_string(algo)); - dckeCreate->create(bits); + DTime dt; dt.set(); + for(unsigned int n = 0; n < 100; ++n) + dckeCreate->create(bits); + unsigned int udiffCreate = dt.udiff() / 100; { // FIXME: this block copy/pasted from makeFromISCString DNSKEYRecordContent dkrc; @@ -298,7 +301,7 @@ pair DNSCryptoKeyEngine::testMakers(unsigned int alg string message("Hi! How is life?"); string signature; - DTime dt; dt.set(); + dt.set(); for(unsigned int n = 0; n < 100; ++n) signature = dckeSign->sign(message); unsigned int udiffSign= dt.udiff()/100, udiffVerify; @@ -308,14 +311,17 @@ pair DNSCryptoKeyEngine::testMakers(unsigned int alg throw runtime_error("Comparison of public key loaded into verifier produced by signer failed"); } dt.set(); - if(dckeVerify->verify(message, signature)) { - udiffVerify = dt.udiff(); - cerr<<"Signature & verify ok, signature "<verify(message, signature); + + if(verified) { + udiffVerify = dt.udiff() / 100; + cerr<<"Signature & verify ok, create "<getName()+" with signer "+dckeSign->getName()+" and verifier "+dckeVerify->getName()+" failed"); } - return make_pair(udiffSign, udiffVerify); } shared_ptr DNSCryptoKeyEngine::makeFromPublicKeyString(unsigned int algorithm, const std::string& content) diff --git a/pdns/dnssecinfra.hh b/pdns/dnssecinfra.hh index 76f16b22ce..45dd5650c5 100644 --- a/pdns/dnssecinfra.hh +++ b/pdns/dnssecinfra.hh @@ -82,7 +82,7 @@ class DNSCryptoKeyEngine typedef shared_ptr maker_t(unsigned int algorithm); static void report(unsigned int algorithm, maker_t* maker, bool fallback=false); - static std::pair testMakers(unsigned int algorithm, maker_t* creator, maker_t* signer, maker_t* verifier); + static void testMakers(unsigned int algorithm, maker_t* creator, maker_t* signer, maker_t* verifier); static vector> listAllAlgosWithBackend(); static bool testAll(); static bool testOne(int algo);