summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2017-05-06 09:07:24 -0400
committerJeffrey Walton <noloader@gmail.com>2017-05-06 09:07:24 -0400
commit3ea8e0655fb3318d2a58b66fd33bbfb4b5dee445 (patch)
tree422208b8a051099170e92e9ccee34c0df1c5059e
parent6ad999ef2f1970837718c7cc52992f3895615da5 (diff)
downloadcryptopp-git-3ea8e0655fb3318d2a58b66fd33bbfb4b5dee445.tar.gz
Add constants to default encryptor classes
-rw-r--r--default.h12
-rw-r--r--validat0.cpp93
2 files changed, 70 insertions, 35 deletions
diff --git a/default.h b/default.h
index 691cbbb3..56f54c98 100644
--- a/default.h
+++ b/default.h
@@ -180,6 +180,12 @@ template <class BC, class H, class MAC, class Info>
class DataEncryptorWithMAC : public ProxyFilter
{
public:
+ CRYPTOPP_CONSTANT(BLOCKSIZE = Info::BLOCKSIZE)
+ CRYPTOPP_CONSTANT(KEYLENGTH = Info::KEYLENGTH)
+ CRYPTOPP_CONSTANT(SALTLENGTH = Info::SALTLENGTH)
+ CRYPTOPP_CONSTANT(DIGESTSIZE = Info::DIGESTSIZE)
+ CRYPTOPP_CONSTANT(ITERATIONS = Info::ITERATIONS)
+
//! \brief Constructs a DataEncryptorWithMAC
//! \param passphrase a C-String password
//! \param attachment a BufferedTransformation to attach to this object
@@ -220,6 +226,12 @@ template <class BC, class H, class MAC, class Info>
class DataDecryptorWithMAC : public ProxyFilter
{
public:
+ CRYPTOPP_CONSTANT(BLOCKSIZE = Info::BLOCKSIZE)
+ CRYPTOPP_CONSTANT(KEYLENGTH = Info::KEYLENGTH)
+ CRYPTOPP_CONSTANT(SALTLENGTH = Info::SALTLENGTH)
+ CRYPTOPP_CONSTANT(DIGESTSIZE = Info::DIGESTSIZE)
+ CRYPTOPP_CONSTANT(ITERATIONS = Info::ITERATIONS)
+
//! \brief Constructs a DataDecryptor
//! \param passphrase a C-String password
//! \param attachment a BufferedTransformation to attach to this object
diff --git a/validat0.cpp b/validat0.cpp
index e1b082a1..a47f979f 100644
--- a/validat0.cpp
+++ b/validat0.cpp
@@ -116,8 +116,9 @@ bool TestZinflate()
// Tamper
try {
StringSource(dest.substr(0, len-2), true, new Inflator(new StringSink(rec)));
- throw Exception(Exception::OTHER_ERROR, "Deflate failed to detect a truncated stream");
- } catch(const Exception&) {}
+ std::cout << "Deflate failed to detect a truncated stream\n";
+ fail = true;
+ } catch(const Exception& ex) { }
}
}
catch(const Exception&)
@@ -136,7 +137,7 @@ bool TestZinflate()
try {
StringSource(src, true, new Inflator(new StringSink(dest)));
- } catch(const Exception&) { }
+ } catch(const Exception&) {}
}
// Inflate random data. See if we can induce a crash
@@ -236,26 +237,37 @@ bool TestDefaultEncryptorWithMAC()
if (src != rec)
throw Exception(Exception::OTHER_ERROR, "DefaultEncryptorWithMAC failed a self test");
- // Tamper. Data format is [SALT][KEYCHECK][ENCRYPTED DATA].
+ // Tamper with the stream. Data format is [SALT][KEYCHECK][ENCRYPTED DATA].
try {
- StringSource(dest.substr(0, len-2), true, new Inflator(new StringSink(rec)));
- throw Exception(Exception::OTHER_ERROR, "DefaultEncryptorWithMAC failed to detect a truncated stream");
- } catch(const Exception&) {}
+ StringSource(dest.substr(0, len-2), true, new DefaultDecryptorWithMAC(pwd.c_str(), new StringSink(rec)));
+ std::cout << "FAILED: DefaultDecryptorWithMAC failed to detect a truncated stream\n";
+ fail = true;
+ } catch(const Exception& ex) { }
try {
- dest[4] ^= 0x01;
- StringSource(dest, true, new Inflator(new StringSink(rec)));
- throw Exception(Exception::OTHER_ERROR, "DefaultEncryptorWithMAC failed to detect a tampered salt");
- } catch(const Exception&) {}
+ // tamper salt
+ dest[DefaultDecryptorWithMAC::SALTLENGTH/2] ^= 0x01;
+ StringSource(dest, true, new DefaultDecryptorWithMAC(pwd.c_str(), new StringSink(rec)));
+ std::cout << "FAILED: DefaultDecryptorWithMAC failed to detect a tampered salt\n";
+ fail = true;
+ } catch(const Exception& ex) { }
try {
- dest[4] ^= 0x01; dest[20] ^= 0x01; // undo previous tamper
- StringSource(dest, true, new Inflator(new StringSink(rec)));
- throw Exception(Exception::OTHER_ERROR, "DefaultEncryptorWithMAC failed to detect a tampered keycheck");
- } catch(const Exception&) {}
+ // undo previous tamper
+ dest[DefaultDecryptorWithMAC::SALTLENGTH/2] ^= 0x01;
+ // tamper keycheck
+ dest[DefaultDecryptorWithMAC::SALTLENGTH+DefaultDecryptorWithMAC::KEYLENGTH/2] ^= 0x01;
+ StringSource(dest, true, new DefaultDecryptorWithMAC(pwd.c_str(), new StringSink(rec)));
+ std::cout << "FAILED: DefaultDecryptorWithMAC failed to detect a tampered keycheck\n";
+ fail = true;
+ } catch(const Exception& ex) { }
try {
- dest[20] ^= 0x01; dest[dest.length()-2] ^= 0x01; // undo previous tamper
- StringSource(dest, true, new Inflator(new StringSink(rec)));
- throw Exception(Exception::OTHER_ERROR, "DefaultEncryptorWithMAC failed to detect a tampered data");
- } catch(const Exception&) {}
+ // undo previous tamper
+ dest[DefaultDecryptorWithMAC::SALTLENGTH+DefaultDecryptorWithMAC::KEYLENGTH/2] ^= 0x01;
+ // tamper encrypted data
+ dest[dest.length()-2] ^= 0x01;
+ StringSource(dest, true, new DefaultDecryptorWithMAC(pwd.c_str(), new StringSink(rec)));
+ std::cout << "FAILED: DefaultDecryptorWithMAC failed to detect a tampered data\n";
+ fail = true;
+ } catch(const Exception& ex) { }
}
}
catch(const Exception&)
@@ -335,26 +347,37 @@ bool TestLegacyEncryptorWithMAC()
if (src != rec)
throw Exception(Exception::OTHER_ERROR, "LegacyEncryptorWithMAC failed a self test");
- // Tamper. Data format is [SALT][KEYCHECK][ENCRYPTED DATA].
+ // Tamper with the stream. Data format is [SALT][KEYCHECK][ENCRYPTED DATA].
try {
- StringSource(dest.substr(0, len-2), true, new Inflator(new StringSink(rec)));
- throw Exception(Exception::OTHER_ERROR, "LegacyEncryptorWithMAC failed to detect a truncated stream");
- } catch(const Exception&) {}
+ StringSource(dest.substr(0, len-2), true, new LegacyDecryptorWithMAC(pwd.c_str(), new StringSink(rec)));
+ std::cout << "FAILED: LegacyEncryptorWithMAC failed to detect a truncated stream\n";
+ fail = true;
+ } catch(const Exception& ex) { }
try {
- dest[4] ^= 0x01;
- StringSource(dest, true, new Inflator(new StringSink(rec)));
- throw Exception(Exception::OTHER_ERROR, "LegacyEncryptorWithMAC failed to detect a tampered salt");
- } catch(const Exception&) {}
+ // tamper salt
+ dest[LegacyEncryptorWithMAC::SALTLENGTH/2] ^= 0x01;
+ StringSource(dest, true, new LegacyDecryptorWithMAC(pwd.c_str(), new StringSink(rec)));
+ std::cout << "FAILED: LegacyEncryptorWithMAC failed to detect a tampered salt\n";
+ fail = true;
+ } catch(const Exception& ex) { }
try {
- dest[4] ^= 0x01; dest[20] ^= 0x01; // undo previous tamper
- StringSource(dest, true, new Inflator(new StringSink(rec)));
- throw Exception(Exception::OTHER_ERROR, "LegacyEncryptorWithMAC failed to detect a tampered keycheck");
- } catch(const Exception&) {}
+ // undo previous tamper
+ dest[LegacyEncryptorWithMAC::SALTLENGTH/2] ^= 0x01;
+ // tamper keycheck
+ dest[LegacyEncryptorWithMAC::SALTLENGTH+LegacyEncryptorWithMAC::KEYLENGTH/2] ^= 0x01;
+ StringSource(dest, true, new LegacyDecryptorWithMAC(pwd.c_str(), new StringSink(rec)));
+ std::cout << "FAILED: LegacyEncryptorWithMAC failed to detect a tampered keycheck\n";
+ fail = true;
+ } catch(const Exception& ex) { }
try {
- dest[20] ^= 0x01; dest[dest.length()-2] ^= 0x01; // undo previous tamper
- StringSource(dest, true, new Inflator(new StringSink(rec)));
- throw Exception(Exception::OTHER_ERROR, "LegacyEncryptorWithMAC failed to detect a tampered data");
- } catch(const Exception&) {}
+ // undo previous tamper
+ dest[LegacyEncryptorWithMAC::SALTLENGTH+LegacyEncryptorWithMAC::KEYLENGTH/2] ^= 0x01;
+ // tamper encrypted data
+ dest[dest.length()-2] ^= 0x01;
+ StringSource(dest, true, new LegacyDecryptorWithMAC(pwd.c_str(), new StringSink(rec)));
+ std::cout << "FAILED: LegacyEncryptorWithMAC failed to detect a tampered data\n";
+ fail = true;
+ } catch(const Exception& ex) { }
}
}
catch(const Exception&)