summaryrefslogtreecommitdiff
path: root/validat2.cpp
diff options
context:
space:
mode:
authornoloader <noloader@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2015-06-29 03:01:29 +0000
committernoloader <noloader@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2015-06-29 03:01:29 +0000
commitc62d1c72423a662aa7f15d75be5b11f5f2412aa3 (patch)
treeb5b47bd71ac5f77ada02feb5f46e6c3213af4fb0 /validat2.cpp
parentc0bc47321c9f7bbdeeb3e950c2e0f67beb7bd1ba (diff)
downloadcryptopp-c62d1c72423a662aa7f15d75be5b11f5f2412aa3.tar.gz
Modified validation suite to use VerifyBufsEqual rather than memcmp. VerifyBufsEqual is a constant time compare, so it serves to educate users on the function to call to use
git-svn-id: svn://svn.code.sf.net/p/cryptopp/code/trunk/c5@552 57ff6487-cd31-0410-9ec3-f628ee90f5f0
Diffstat (limited to 'validat2.cpp')
-rw-r--r--validat2.cpp29
1 files changed, 16 insertions, 13 deletions
diff --git a/validat2.cpp b/validat2.cpp
index dd7ccd4..f6421c3 100644
--- a/validat2.cpp
+++ b/validat2.cpp
@@ -20,6 +20,7 @@
#include "ec2n.h"
#include "asn.h"
#include "rng.h"
+#include "misc.h"
#include "files.h"
#include "hex.h"
#include "oids.h"
@@ -69,7 +70,7 @@ bool ValidateBBS()
byte buf[20];
bbs.GenerateBlock(buf, 20);
- fail = memcmp(output1, buf, 20) != 0;
+ fail = !VerifyBufsEqual(output1, buf, 20);
pass = pass && !fail;
cout << (fail ? "FAILED " : "passed ");
@@ -79,7 +80,7 @@ bool ValidateBBS()
bbs.Seek(10);
bbs.GenerateBlock(buf, 10);
- fail = memcmp(output1+10, buf, 10) != 0;
+ fail = !VerifyBufsEqual(output1+10, buf, 10);
pass = pass && !fail;
cout << (fail ? "FAILED " : "passed ");
@@ -89,7 +90,7 @@ bool ValidateBBS()
bbs.Seek(1234567);
bbs.GenerateBlock(buf, 20);
- fail = memcmp(output2, buf, 20) != 0;
+ fail = !VerifyBufsEqual(output2, buf, 20);
pass = pass && !fail;
cout << (fail ? "FAILED " : "passed ");
@@ -133,7 +134,7 @@ bool SignatureValidate(PK_Signer &priv, PK_Verifier &pub, bool thorough = false)
signatureLength = priv.SignMessageWithRecovery(GlobalRNG(), message, messageLen, NULL, 0, signature);
SecByteBlock recovered(priv.MaxRecoverableLengthFromSignatureLength(signatureLength));
DecodingResult result = pub.RecoverMessage(recovered, NULL, 0, signature, signatureLength);
- fail = !(result.isValidCoding && result.messageLength == messageLen && memcmp(recovered, message, messageLen) == 0);
+ fail = !(result.isValidCoding && result.messageLength == messageLen && VerifyBufsEqual(recovered, message, messageLen));
pass = pass && !fail;
cout << (fail ? "FAILED " : "passed ");
@@ -168,7 +169,7 @@ bool CryptoSystemValidate(PK_Decryptor &priv, PK_Encryptor &pub, bool thorough =
pub.Encrypt(GlobalRNG(), message, messageLen, ciphertext);
fail = priv.Decrypt(GlobalRNG(), ciphertext, priv.CiphertextLength(messageLen), plaintext) != DecodingResult(messageLen);
- fail = fail || memcmp(message, plaintext, messageLen);
+ fail = fail || !VerifyBufsEqual(message, plaintext, messageLen);
pass = pass && !fail;
cout << (fail ? "FAILED " : "passed ");
@@ -203,7 +204,7 @@ bool SimpleKeyAgreementValidate(SimpleKeyAgreementDomain &d)
return false;
}
- if (memcmp(val1.begin(), val2.begin(), d.AgreedValueLength()))
+ if (!VerifyBufsEqual(val1.begin(), val2.begin(), d.AgreedValueLength()))
{
cout << "FAILED simple agreed values not equal" << endl;
return false;
@@ -243,7 +244,7 @@ bool AuthenticatedKeyAgreementValidate(AuthenticatedKeyAgreementDomain &d)
return false;
}
- if (memcmp(val1.begin(), val2.begin(), d.AgreedValueLength()))
+ if (!VerifyBufsEqual(val1.begin(), val2.begin(), d.AgreedValueLength()))
{
cout << "FAILED authenticated agreed values not equal" << endl;
return false;
@@ -273,7 +274,7 @@ bool ValidateRSA()
Weak::RSASSA_PKCS1v15_MD2_Verifier rsaPub(rsaPriv);
size_t signatureLength = rsaPriv.SignMessage(GlobalRNG(), (byte *)plain, strlen(plain), out);
- fail = memcmp(signature, out, 64) != 0;
+ fail = !VerifyBufsEqual(signature, out, 64);
pass = pass && !fail;
cout << (fail ? "FAILED " : "passed ");
@@ -330,7 +331,7 @@ bool ValidateRSA()
memset(outPlain, 0, 8);
rsaPub.Encrypt(rng, plain, 8, out);
DecodingResult result = rsaPriv.FixedLengthDecrypt(GlobalRNG(), encrypted, outPlain);
- fail = !result.isValidCoding || (result.messageLength!=8) || memcmp(out, encrypted, 50) || memcmp(plain, outPlain, 8);
+ fail = !result.isValidCoding || (result.messageLength!=8) || !VerifyBufsEqual(out, encrypted, 50) || !VerifyBufsEqual(plain, outPlain, 8);
pass = pass && !fail;
cout << (fail ? "FAILED " : "passed ");
@@ -515,12 +516,14 @@ bool ValidateRabin()
bool ValidateRW()
{
cout << "\nRW validation suite running...\n\n";
+ bool pass=true;
- FileSource f("TestData/rw1024.dat", true, new HexDecoder);
- RWSS<PSSR, SHA>::Signer priv(f);
- RWSS<PSSR, SHA>::Verifier pub(priv);
+ FileSource f("TestData/rw1024.dat", true, new HexDecoder);
+ RWSS<PSSR, SHA>::Signer priv(f);
+ RWSS<PSSR, SHA>::Verifier pub(priv);
+ pass = pass && SignatureValidate(priv, pub);
- return SignatureValidate(priv, pub);
+ return pass;
}
/*