mirror of
https://github.com/shadps4-emu/ext-cryptopp.git
synced 2024-11-26 19:30:21 +00:00
Split public key benchmarks into integers and elliptic curves
This commit is contained in:
parent
f3dd3d2559
commit
1a5155fd96
48
bench.h
48
bench.h
@ -16,14 +16,48 @@ NAMESPACE_BEGIN(Test)
|
||||
|
||||
// More granular control over benchmarks
|
||||
enum TestClass {
|
||||
UnkeyedRNG=(1<<0),UnkeyedHash=(1<<1),UnkeyedOther=(1<<2),
|
||||
SharedKeyMAC=(1<<3),SharedKeyStream=(1<<4),SharedKeyBlock=(1<<5),SharedKeyOther=(1<<6),
|
||||
PublicKeyAgreement=(1<<7),PublicKeyEncryption=(1<<8),PublicKeySignature=(1<<9),PublicKeyOther=(1<<10),
|
||||
/// \brief Random number generators
|
||||
UnkeyedRNG=(1<<0),
|
||||
/// \brief Message digests
|
||||
UnkeyedHash=(1<<1),
|
||||
/// \brief Other unkeyed algorithms
|
||||
UnkeyedOther=(1<<2),
|
||||
|
||||
/// \brief Message authentication codes
|
||||
SharedKeyMAC=(1<<3),
|
||||
/// \brief Stream ciphers
|
||||
SharedKeyStream=(1<<4),
|
||||
/// \brief Block ciphers ciphers
|
||||
SharedKeyBlock=(1<<5),
|
||||
/// \brief Other shared key algorithms
|
||||
SharedKeyOther=(1<<6),
|
||||
|
||||
/// \brief Key agreement algorithms over integers
|
||||
PublicKeyAgreement=(1<<7),
|
||||
/// \brief Encryption algorithms over integers
|
||||
PublicKeyEncryption=(1<<8),
|
||||
/// \brief Signature algorithms over integers
|
||||
PublicKeySignature=(1<<9),
|
||||
/// \brief Other public key algorithms over integers
|
||||
PublicKeyOther=(1<<10),
|
||||
|
||||
/// \brief Key agreement algorithms over EC
|
||||
PublicKeyAgreementEC=(1<<11),
|
||||
/// \brief Encryption algorithms over EC
|
||||
PublicKeyEncryptionEC=(1<<12),
|
||||
/// \brief Signature algorithms over EC
|
||||
PublicKeySignatureEC=(1<<13),
|
||||
/// \brief Other public key algorithms over EC
|
||||
PublicKeyOtherEC=(1<<14),
|
||||
|
||||
Unkeyed=UnkeyedRNG|UnkeyedHash|UnkeyedOther,
|
||||
SharedKey=SharedKeyMAC|SharedKeyStream|SharedKeyBlock|SharedKeyOther,
|
||||
PublicKey=PublicKeyAgreement|PublicKeyEncryption|PublicKeySignature|PublicKeyOther,
|
||||
All=Unkeyed|SharedKey|PublicKey,
|
||||
TestFirst=(0), TestLast=(1<<11)
|
||||
PublicKeyEC=PublicKeyAgreementEC|PublicKeyEncryptionEC|PublicKeySignatureEC|PublicKeyOtherEC,
|
||||
|
||||
All=Unkeyed|SharedKey|PublicKey|PublicKeyEC,
|
||||
|
||||
TestFirst=(0), TestLast=(1<<15)
|
||||
};
|
||||
|
||||
extern const double CLOCK_TICKS_PER_SECOND;
|
||||
@ -45,8 +79,10 @@ void Benchmark(Test::TestClass suites, double t, double hertz);
|
||||
void Benchmark1(double t, double hertz);
|
||||
// Shared key systems
|
||||
void Benchmark2(double t, double hertz);
|
||||
// Public key systems
|
||||
// Public key systems over integers
|
||||
void Benchmark3(double t, double hertz);
|
||||
// Public key systems over elliptic curves
|
||||
void Benchmark4(double t, double hertz);
|
||||
|
||||
// These are defined in bench1.cpp
|
||||
extern void OutputResultKeying(double iterations, double timeTaken);
|
||||
|
@ -351,6 +351,8 @@ void BenchmarkWithCommand(int argc, const char* const argv[])
|
||||
|
||||
if (command == "b") // All benchmarks
|
||||
Benchmark(Test::All, runningTime, cpuFreq);
|
||||
else if (command == "b4") // Public key algorithms over EC
|
||||
Test::Benchmark(Test::PublicKeyEC, runningTime, cpuFreq);
|
||||
else if (command == "b3") // Public key algorithms
|
||||
Test::Benchmark(Test::PublicKey, runningTime, cpuFreq);
|
||||
else if (command == "b2") // Shared key algorithms
|
||||
@ -392,6 +394,13 @@ void Benchmark(Test::TestClass suites, double t, double hertz)
|
||||
Benchmark3(t, hertz);
|
||||
}
|
||||
|
||||
// Public key algorithms over EC
|
||||
if (suites & Test::PublicKeyEC)
|
||||
{
|
||||
std::cout << "\n<BR>";
|
||||
Benchmark4(t, hertz);
|
||||
}
|
||||
|
||||
g_testEnd = ::time(NULLPTR);
|
||||
|
||||
std::ostringstream oss;
|
||||
|
58
bench3.cpp
58
bench3.cpp
@ -365,21 +365,29 @@ void Benchmark3(double t, double hertz)
|
||||
BenchMarkKeyAgreement<LUC_DH>("TestData/lucd1024.dat", "LUCDIF 1024", t);
|
||||
BenchMarkKeyAgreement<MQV>("TestData/mqv1024.dat", "MQV 1024", t);
|
||||
BenchMarkKeyAgreement<MQV>("TestData/mqv2048.dat", "MQV 2048", t);
|
||||
|
||||
#if 0
|
||||
BenchMarkKeyAgreement<ECHMQV160>("TestData/hmqv160.dat", "HMQV P-160", t);
|
||||
BenchMarkKeyAgreement<ECHMQV256>("TestData/hmqv256.dat", "HMQV P-256", t);
|
||||
BenchMarkKeyAgreement<ECHMQV384>("TestData/hmqv384.dat", "HMQV P-384", t);
|
||||
BenchMarkKeyAgreement<ECHMQV512>("TestData/hmqv512.dat", "HMQV P-512", t);
|
||||
|
||||
BenchMarkKeyAgreement<ECFHMQV160>("TestData/fhmqv160.dat", "FHMQV P-160", t);
|
||||
BenchMarkKeyAgreement<ECFHMQV256>("TestData/fhmqv256.dat", "FHMQV P-256", t);
|
||||
BenchMarkKeyAgreement<ECFHMQV384>("TestData/fhmqv384.dat", "FHMQV P-384", t);
|
||||
BenchMarkKeyAgreement<ECFHMQV512>("TestData/fhmqv512.dat", "FHMQV P-512", t);
|
||||
#endif
|
||||
}
|
||||
|
||||
std::cout << "\n<TBODY style=\"background: yellow;\">";
|
||||
std::cout << "\n</TABLE>" << std::endl;
|
||||
}
|
||||
|
||||
void Benchmark4(double t, double hertz)
|
||||
{
|
||||
g_allocatedTime = t;
|
||||
g_hertz = hertz;
|
||||
|
||||
const char *mco;
|
||||
if (g_hertz > 1.0f)
|
||||
mco = "<TH>Megacycles/Operation";
|
||||
else
|
||||
mco = "";
|
||||
|
||||
std::cout << "\n<TABLE>";
|
||||
std::cout << "\n<COLGROUP><COL style=\"text-align: left;\"><COL style=";
|
||||
std::cout << "\"text-align: right;\"><COL style=\"text-align: right;\">";
|
||||
std::cout << "\n<THEAD style=\"background: #F0F0F0\">";
|
||||
std::cout << "\n<TR><TH>Operation<TH>Milliseconds/Operation" << mco;
|
||||
|
||||
std::cout << "\n<TBODY style=\"background: white;\">";
|
||||
{
|
||||
ed25519::Signer sign(Test::GlobalRNG());
|
||||
ed25519::Verifier verify(sign);
|
||||
@ -391,7 +399,27 @@ void Benchmark3(double t, double hertz)
|
||||
BenchMarkAgreement("x25519", agree, t);
|
||||
}
|
||||
|
||||
std::cout << "\n<TBODY style=\"background: white;\">";
|
||||
#if 0
|
||||
std::cout << "\n<TBODY style=\"background: yellow;\">";
|
||||
{
|
||||
BenchMarkKeyAgreement<ECMQV160>("TestData/mqv160.dat", "MQV P-160", t);
|
||||
BenchMarkKeyAgreement<ECMQV256>("TestData/mqv256.dat", "MQV P-256", t);
|
||||
BenchMarkKeyAgreement<ECMQV384>("TestData/mqv384.dat", "MQV P-384", t);
|
||||
BenchMarkKeyAgreement<ECMQV512>("TestData/mqv512.dat", "MQV P-521", t);
|
||||
|
||||
BenchMarkKeyAgreement<ECHMQV160>("TestData/hmqv160.dat", "HMQV P-160", t);
|
||||
BenchMarkKeyAgreement<ECHMQV256>("TestData/hmqv256.dat", "HMQV P-256", t);
|
||||
BenchMarkKeyAgreement<ECHMQV384>("TestData/hmqv384.dat", "HMQV P-384", t);
|
||||
BenchMarkKeyAgreement<ECHMQV512>("TestData/hmqv512.dat", "HMQV P-521", t);
|
||||
|
||||
BenchMarkKeyAgreement<ECFHMQV160>("TestData/fhmqv160.dat", "FHMQV P-160", t);
|
||||
BenchMarkKeyAgreement<ECFHMQV256>("TestData/fhmqv256.dat", "FHMQV P-256", t);
|
||||
BenchMarkKeyAgreement<ECFHMQV384>("TestData/fhmqv384.dat", "FHMQV P-384", t);
|
||||
BenchMarkKeyAgreement<ECFHMQV512>("TestData/fhmqv512.dat", "FHMQV P-521", t);
|
||||
}
|
||||
#endif
|
||||
|
||||
std::cout << "\n<TBODY style=\"background: yellow;\">";
|
||||
{
|
||||
ECIES<ECP>::Decryptor cpriv(Test::GlobalRNG(), ASN1::secp256k1());
|
||||
ECIES<ECP>::Encryptor cpub(cpriv);
|
||||
@ -418,7 +446,7 @@ void Benchmark3(double t, double hertz)
|
||||
BenchMarkAgreement("ECMQVC over GF(p) 256", ecmqvc, t);
|
||||
}
|
||||
|
||||
std::cout << "\n<TBODY style=\"background: yellow;\">";
|
||||
std::cout << "\n<TBODY style=\"background: white;\">";
|
||||
{
|
||||
ECIES<EC2N>::Decryptor cpriv(Test::GlobalRNG(), ASN1::sect233r1());
|
||||
ECIES<EC2N>::Encryptor cpub(cpriv);
|
||||
|
Loading…
Reference in New Issue
Block a user