for(maker_t* verifier : value.second) {
try {
- /* pair<unsigned int, unsigned int> res=*/ testMakers(value.first, creator, signer, verifier);
+ testMakers(value.first, creator, signer, verifier);
}
catch(std::exception& e)
{
for(maker_t* verifier : getAllMakers()[algo]) {
try {
- /* pair<unsigned int, unsigned int> res=*/testMakers(algo, creator, signer, verifier);
+ testMakers(algo, creator, signer, verifier);
}
catch(std::exception& e)
{
}
return ret;
}
-// returns times it took to sign and verify
-pair<unsigned int, unsigned int> 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<DNSCryptoKeyEngine> dckeCreate(creator(algo));
shared_ptr<DNSCryptoKeyEngine> dckeSign(signer(algo));
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;
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;
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 "<<udiffSign<<"usec, verify "<<udiffVerify<<"usec"<<endl;
+ bool verified;
+ for(unsigned int n = 0; n < 100; ++n)
+ verified = dckeVerify->verify(message, signature);
+
+ if(verified) {
+ udiffVerify = dt.udiff() / 100;
+ cerr<<"Signature & verify ok, create "<<udiffCreate<<"usec, signature "<<udiffSign<<"usec, verify "<<udiffVerify<<"usec"<<endl;
}
else {
throw runtime_error("Verification of creator "+dckeCreate->getName()+" with signer "+dckeSign->getName()+" and verifier "+dckeVerify->getName()+" failed");
}
- return make_pair(udiffSign, udiffVerify);
}
shared_ptr<DNSCryptoKeyEngine> DNSCryptoKeyEngine::makeFromPublicKeyString(unsigned int algorithm, const std::string& content)
typedef shared_ptr<DNSCryptoKeyEngine> maker_t(unsigned int algorithm);
static void report(unsigned int algorithm, maker_t* maker, bool fallback=false);
- static std::pair<unsigned int, unsigned int> 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<pair<uint8_t, string>> listAllAlgosWithBackend();
static bool testAll();
static bool testOne(int algo);