parent
7226abd433
commit
a749296504
4
test.cpp
4
test.cpp
|
|
@ -922,6 +922,10 @@ bool Validate(int alg, bool thorough, const char *seedInput)
|
||||||
case 9994: result = TestHuffmanCodes(); break;
|
case 9994: result = TestHuffmanCodes(); break;
|
||||||
// http://github.com/weidai11/cryptopp/issues/346
|
// http://github.com/weidai11/cryptopp/issues/346
|
||||||
case 9993: result = TestASN1Parse(); break;
|
case 9993: result = TestASN1Parse(); break;
|
||||||
|
// http://github.com/weidai11/cryptopp/issues/242
|
||||||
|
case 9992: result = TestX25519(); break;
|
||||||
|
// http://github.com/weidai11/cryptopp/issues/346
|
||||||
|
case 9991: result = TestEd25519(); break;
|
||||||
# if defined(CRYPTOPP_ALTIVEC_AVAILABLE)
|
# if defined(CRYPTOPP_ALTIVEC_AVAILABLE)
|
||||||
case 9992: result = TestAltivecOps(); break;
|
case 9992: result = TestAltivecOps(); break;
|
||||||
# endif
|
# endif
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,7 @@ bool ValidateAll(bool thorough)
|
||||||
pass=TestSharing() && pass;
|
pass=TestSharing() && pass;
|
||||||
pass=TestEncryptors() && pass;
|
pass=TestEncryptors() && pass;
|
||||||
pass=TestX25519() && pass;
|
pass=TestX25519() && pass;
|
||||||
|
pass=TestEd25519() && pass;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
pass=ValidateCRC32() && pass;
|
pass=ValidateCRC32() && pass;
|
||||||
|
|
|
||||||
97
validat7.cpp
97
validat7.cpp
|
|
@ -86,10 +86,10 @@ bool ValidateHMQV()
|
||||||
std::cout << "HMQV with NIST P-256 and SHA-256:" << std::endl;
|
std::cout << "HMQV with NIST P-256 and SHA-256:" << std::endl;
|
||||||
|
|
||||||
if (hmqvB.GetCryptoParameters().Validate(GlobalRNG(), 3))
|
if (hmqvB.GetCryptoParameters().Validate(GlobalRNG(), 3))
|
||||||
std::cout << "passed authenticated key agreement domain parameters validation (server)" << std::endl;
|
std::cout << "passed authenticated key agreement domain parameters validation (server)" << std::endl;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cout << "FAILED authenticated key agreement domain parameters invalid (server)" << std::endl;
|
std::cout << "FAILED authenticated key agreement domain parameters invalid (server)" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -97,10 +97,10 @@ bool ValidateHMQV()
|
||||||
ECHMQV< ECP >::Domain hmqvA(oid, true /*client*/);
|
ECHMQV< ECP >::Domain hmqvA(oid, true /*client*/);
|
||||||
|
|
||||||
if (hmqvA.GetCryptoParameters().Validate(GlobalRNG(), 3))
|
if (hmqvA.GetCryptoParameters().Validate(GlobalRNG(), 3))
|
||||||
std::cout << "passed authenticated key agreement domain parameters validation (client)" << std::endl;
|
std::cout << "passed authenticated key agreement domain parameters validation (client)" << std::endl;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cout << "FAILED authenticated key agreement domain parameters invalid (client)" << std::endl;
|
std::cout << "FAILED authenticated key agreement domain parameters invalid (client)" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -120,17 +120,17 @@ bool ValidateHMQV()
|
||||||
|
|
||||||
if (!(hmqvA.Agree(valA, sprivA, eprivA, spubB, epubB) && hmqvB.Agree(valB, sprivB, eprivB, spubA, epubA)))
|
if (!(hmqvA.Agree(valA, sprivA, eprivA, spubB, epubB) && hmqvB.Agree(valB, sprivB, eprivB, spubA, epubA)))
|
||||||
{
|
{
|
||||||
std::cout << "FAILED authenticated key agreement failed" << std::endl;
|
std::cout << "FAILED authenticated key agreement failed" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (memcmp(valA.begin(), valB.begin(), hmqvA.AgreedValueLength()))
|
if (memcmp(valA.begin(), valB.begin(), hmqvA.AgreedValueLength()))
|
||||||
{
|
{
|
||||||
std::cout << "FAILED authenticated agreed values not equal" << std::endl;
|
std::cout << "FAILED authenticated agreed values not equal" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << "passed authenticated key agreement" << std::endl;
|
std::cout << "passed authenticated key agreement" << std::endl;
|
||||||
|
|
||||||
// Now test HMQV with NIST P-384 curve and SHA384 hash
|
// Now test HMQV with NIST P-384 curve and SHA384 hash
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
|
|
@ -140,10 +140,10 @@ bool ValidateHMQV()
|
||||||
hmqvB384.AccessGroupParameters().BERDecode(f384);
|
hmqvB384.AccessGroupParameters().BERDecode(f384);
|
||||||
|
|
||||||
if (hmqvB384.GetCryptoParameters().Validate(GlobalRNG(), 3))
|
if (hmqvB384.GetCryptoParameters().Validate(GlobalRNG(), 3))
|
||||||
std::cout << "passed authenticated key agreement domain parameters validation (server)" << std::endl;
|
std::cout << "passed authenticated key agreement domain parameters validation (server)" << std::endl;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cout << "FAILED authenticated key agreement domain parameters invalid (server)" << std::endl;
|
std::cout << "FAILED authenticated key agreement domain parameters invalid (server)" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -151,10 +151,10 @@ bool ValidateHMQV()
|
||||||
ECHMQV384 hmqvA384(oid384, true /*client*/);
|
ECHMQV384 hmqvA384(oid384, true /*client*/);
|
||||||
|
|
||||||
if (hmqvA384.GetCryptoParameters().Validate(GlobalRNG(), 3))
|
if (hmqvA384.GetCryptoParameters().Validate(GlobalRNG(), 3))
|
||||||
std::cout << "passed authenticated key agreement domain parameters validation (client)" << std::endl;
|
std::cout << "passed authenticated key agreement domain parameters validation (client)" << std::endl;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cout << "FAILED authenticated key agreement domain parameters invalid (client)" << std::endl;
|
std::cout << "FAILED authenticated key agreement domain parameters invalid (client)" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -174,17 +174,17 @@ bool ValidateHMQV()
|
||||||
|
|
||||||
if (!(hmqvA384.Agree(valA384, sprivA384, eprivA384, spubB384, epubB384) && hmqvB384.Agree(valB384, sprivB384, eprivB384, spubA384, epubA384)))
|
if (!(hmqvA384.Agree(valA384, sprivA384, eprivA384, spubB384, epubB384) && hmqvB384.Agree(valB384, sprivB384, eprivB384, spubA384, epubA384)))
|
||||||
{
|
{
|
||||||
std::cout << "FAILED authenticated key agreement failed" << std::endl;
|
std::cout << "FAILED authenticated key agreement failed" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (memcmp(valA384.begin(), valB384.begin(), hmqvA384.AgreedValueLength()))
|
if (memcmp(valA384.begin(), valB384.begin(), hmqvA384.AgreedValueLength()))
|
||||||
{
|
{
|
||||||
std::cout << "FAILED authenticated agreed values not equal" << std::endl;
|
std::cout << "FAILED authenticated agreed values not equal" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << "passed authenticated key agreement" << std::endl;
|
std::cout << "passed authenticated key agreement" << std::endl;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -203,10 +203,10 @@ std::cout << "\nFHMQV validation suite running...\n\n";
|
||||||
std::cout << "FHMQV with NIST P-256 and SHA-256:" << std::endl;
|
std::cout << "FHMQV with NIST P-256 and SHA-256:" << std::endl;
|
||||||
|
|
||||||
if (fhmqvB.GetCryptoParameters().Validate(GlobalRNG(), 3))
|
if (fhmqvB.GetCryptoParameters().Validate(GlobalRNG(), 3))
|
||||||
std::cout << "passed authenticated key agreement domain parameters validation (server)" << std::endl;
|
std::cout << "passed authenticated key agreement domain parameters validation (server)" << std::endl;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cout << "FAILED authenticated key agreement domain parameters invalid (server)" << std::endl;
|
std::cout << "FAILED authenticated key agreement domain parameters invalid (server)" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -214,10 +214,10 @@ std::cout << "\nFHMQV validation suite running...\n\n";
|
||||||
ECFHMQV< ECP >::Domain fhmqvA(oid, true /*client*/);
|
ECFHMQV< ECP >::Domain fhmqvA(oid, true /*client*/);
|
||||||
|
|
||||||
if (fhmqvA.GetCryptoParameters().Validate(GlobalRNG(), 3))
|
if (fhmqvA.GetCryptoParameters().Validate(GlobalRNG(), 3))
|
||||||
std::cout << "passed authenticated key agreement domain parameters validation (client)" << std::endl;
|
std::cout << "passed authenticated key agreement domain parameters validation (client)" << std::endl;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cout << "FAILED authenticated key agreement domain parameters invalid (client)" << std::endl;
|
std::cout << "FAILED authenticated key agreement domain parameters invalid (client)" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -237,17 +237,17 @@ std::cout << "\nFHMQV validation suite running...\n\n";
|
||||||
|
|
||||||
if (!(fhmqvA.Agree(valA, sprivA, eprivA, spubB, epubB) && fhmqvB.Agree(valB, sprivB, eprivB, spubA, epubA)))
|
if (!(fhmqvA.Agree(valA, sprivA, eprivA, spubB, epubB) && fhmqvB.Agree(valB, sprivB, eprivB, spubA, epubA)))
|
||||||
{
|
{
|
||||||
std::cout << "FAILED authenticated key agreement failed" << std::endl;
|
std::cout << "FAILED authenticated key agreement failed" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (memcmp(valA.begin(), valB.begin(), fhmqvA.AgreedValueLength()))
|
if (memcmp(valA.begin(), valB.begin(), fhmqvA.AgreedValueLength()))
|
||||||
{
|
{
|
||||||
std::cout << "FAILED authenticated agreed values not equal" << std::endl;
|
std::cout << "FAILED authenticated agreed values not equal" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << "passed authenticated key agreement" << std::endl;
|
std::cout << "passed authenticated key agreement" << std::endl;
|
||||||
|
|
||||||
// Now test FHMQV with NIST P-384 curve and SHA384 hash
|
// Now test FHMQV with NIST P-384 curve and SHA384 hash
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
|
|
@ -257,10 +257,10 @@ std::cout << "\nFHMQV validation suite running...\n\n";
|
||||||
fhmqvB384.AccessGroupParameters().BERDecode(f384);
|
fhmqvB384.AccessGroupParameters().BERDecode(f384);
|
||||||
|
|
||||||
if (fhmqvB384.GetCryptoParameters().Validate(GlobalRNG(), 3))
|
if (fhmqvB384.GetCryptoParameters().Validate(GlobalRNG(), 3))
|
||||||
std::cout << "passed authenticated key agreement domain parameters validation (server)" << std::endl;
|
std::cout << "passed authenticated key agreement domain parameters validation (server)" << std::endl;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cout << "FAILED authenticated key agreement domain parameters invalid (server)" << std::endl;
|
std::cout << "FAILED authenticated key agreement domain parameters invalid (server)" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -268,10 +268,10 @@ std::cout << "\nFHMQV validation suite running...\n\n";
|
||||||
ECHMQV384 fhmqvA384(oid384, true /*client*/);
|
ECHMQV384 fhmqvA384(oid384, true /*client*/);
|
||||||
|
|
||||||
if (fhmqvA384.GetCryptoParameters().Validate(GlobalRNG(), 3))
|
if (fhmqvA384.GetCryptoParameters().Validate(GlobalRNG(), 3))
|
||||||
std::cout << "passed authenticated key agreement domain parameters validation (client)" << std::endl;
|
std::cout << "passed authenticated key agreement domain parameters validation (client)" << std::endl;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cout << "FAILED authenticated key agreement domain parameters invalid (client)" << std::endl;
|
std::cout << "FAILED authenticated key agreement domain parameters invalid (client)" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -291,17 +291,17 @@ std::cout << "\nFHMQV validation suite running...\n\n";
|
||||||
|
|
||||||
if (!(fhmqvA384.Agree(valA384, sprivA384, eprivA384, spubB384, epubB384) && fhmqvB384.Agree(valB384, sprivB384, eprivB384, spubA384, epubA384)))
|
if (!(fhmqvA384.Agree(valA384, sprivA384, eprivA384, spubB384, epubB384) && fhmqvB384.Agree(valB384, sprivB384, eprivB384, spubA384, epubA384)))
|
||||||
{
|
{
|
||||||
std::cout << "FAILED authenticated key agreement failed" << std::endl;
|
std::cout << "FAILED authenticated key agreement failed" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (memcmp(valA384.begin(), valB384.begin(), fhmqvA384.AgreedValueLength()))
|
if (memcmp(valA384.begin(), valB384.begin(), fhmqvA384.AgreedValueLength()))
|
||||||
{
|
{
|
||||||
std::cout << "FAILED authenticated agreed values not equal" << std::endl;
|
std::cout << "FAILED authenticated agreed values not equal" << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << "passed authenticated key agreement" << std::endl;
|
std::cout << "passed authenticated key agreement" << std::endl;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -366,11 +366,24 @@ bool TestX25519()
|
||||||
bool pass = true;
|
bool pass = true;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
x25519 x1(FileSource(DataDir("TestData/x25519.dat").c_str(), true).Ref());
|
|
||||||
x25519 x2(FileSource(DataDir("TestData/x25519v0.dat").c_str(), true).Ref());
|
FileSource f1(DataDir("TestData/x25519.dat").c_str(), true, new HexDecoder);
|
||||||
x25519 x3(FileSource(DataDir("TestData/x25519v1.dat").c_str(), true).Ref());
|
FileSource f2(DataDir("TestData/x25519v0.dat").c_str(), true, new HexDecoder);
|
||||||
|
FileSource f3(DataDir("TestData/x25519v1.dat").c_str(), true, new HexDecoder);
|
||||||
|
|
||||||
|
x25519 x1(f1);
|
||||||
|
x25519 x2(f2);
|
||||||
|
x25519 x3(f3);
|
||||||
|
|
||||||
|
FileSource f4(DataDir("TestData/x25519.dat").c_str(), true, new HexDecoder);
|
||||||
|
FileSource f5(DataDir("TestData/x25519v0.dat").c_str(), true, new HexDecoder);
|
||||||
|
FileSource f6(DataDir("TestData/x25519v1.dat").c_str(), true, new HexDecoder);
|
||||||
|
|
||||||
|
x1.Load(f4);
|
||||||
|
x2.Load(f5);
|
||||||
|
x3.Load(f6);
|
||||||
}
|
}
|
||||||
catch (BERDecodeErr&) {
|
catch (const BERDecodeErr&) {
|
||||||
pass = false;
|
pass = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -424,11 +437,23 @@ bool TestEd25519()
|
||||||
bool pass = true;
|
bool pass = true;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ed25519::Signer s1(FileSource(DataDir("TestData/ed25519.dat").c_str(), true).Ref());
|
FileSource f1(DataDir("TestData/ed25519.dat").c_str(), true, new HexDecoder);
|
||||||
ed25519::Signer s2(FileSource(DataDir("TestData/ed25519v0.dat").c_str(), true).Ref());
|
FileSource f2(DataDir("TestData/ed25519v0.dat").c_str(), true, new HexDecoder);
|
||||||
ed25519::Signer s3(FileSource(DataDir("TestData/ed25519v1.dat").c_str(), true).Ref());
|
FileSource f3(DataDir("TestData/ed25519v1.dat").c_str(), true, new HexDecoder);
|
||||||
|
|
||||||
|
ed25519::Signer s1(f1);
|
||||||
|
ed25519::Signer s2(f2);
|
||||||
|
ed25519::Signer s3(f3);
|
||||||
|
|
||||||
|
FileSource f4(DataDir("TestData/ed25519.dat").c_str(), true, new HexDecoder);
|
||||||
|
FileSource f5(DataDir("TestData/ed25519v0.dat").c_str(), true, new HexDecoder);
|
||||||
|
FileSource f6(DataDir("TestData/ed25519v1.dat").c_str(), true, new HexDecoder);
|
||||||
|
|
||||||
|
s1.AccessKey().Load(f4);
|
||||||
|
s2.AccessKey().Load(f5);
|
||||||
|
s3.AccessKey().Load(f6);
|
||||||
}
|
}
|
||||||
catch (BERDecodeErr&) {
|
catch (const BERDecodeErr&) {
|
||||||
pass = false;
|
pass = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue