diff options
author | weidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0> | 2010-07-24 05:55:22 +0000 |
---|---|---|
committer | weidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0> | 2010-07-24 05:55:22 +0000 |
commit | 8532f317b3440154b421b1e8b8b004ead28f847e (patch) | |
tree | 9fa57aeee5c779a3c9b4f88006050d81ff68e6ef /datatest.cpp | |
parent | 5e47408d6c3c40f0aafaa2b32a2ae0889f9fc089 (diff) | |
download | cryptopp-8532f317b3440154b421b1e8b8b004ead28f847e.tar.gz |
add support for AES-NI and CLMUL instruction sets in AES and GMAC/GCM
git-svn-id: svn://svn.code.sf.net/p/cryptopp/code/trunk/c5@508 57ff6487-cd31-0410-9ec3-f628ee90f5f0
Diffstat (limited to 'datatest.cpp')
-rw-r--r-- | datatest.cpp | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/datatest.cpp b/datatest.cpp index cfac74a..121e0c5 100644 --- a/datatest.cpp +++ b/datatest.cpp @@ -57,15 +57,15 @@ const std::string & GetRequiredDatum(const TestData &data, const char *name) return i->second; } -void RandomizedTransfer(BufferedTransformation &source, BufferedTransformation &target, bool finish) +void RandomizedTransfer(BufferedTransformation &source, BufferedTransformation &target, bool finish, const std::string &channel=DEFAULT_CHANNEL) { while (source.MaxRetrievable() > (finish ? 0 : 4096)) { byte buf[4096+64]; - word32 start = GlobalRNG().GenerateWord32(0, 63); - word32 len = GlobalRNG().GenerateWord32(1, UnsignedMin(4096U, source.MaxRetrievable())); - source.Get(buf+start, len); - target.Put(buf+start, len); + size_t start = GlobalRNG().GenerateWord32(0, 63); + size_t len = GlobalRNG().GenerateWord32(1, UnsignedMin(4096U, 3*source.MaxRetrievable()/2)); + len = source.Get(buf+start, len); + target.ChannelPut(channel, buf+start, len); } } @@ -397,9 +397,9 @@ void TestSymmetricCipher(TestData &v, const NameValuePairs &overrideParameters) return; } - StringSource ss(plaintext, false, new StreamTransformationFilter(*encryptor, new StringSink(encrypted), StreamTransformationFilter::NO_PADDING)); - ss.Pump(plaintext.size()/2 + 1); - ss.PumpAll(); + StreamTransformationFilter encFilter(*encryptor, new StringSink(encrypted), StreamTransformationFilter::NO_PADDING); + RandomizedTransfer(StringStore(plaintext).Ref(), encFilter, true); + encFilter.MessageEnd(); /*{ std::string z; encryptor->Seek(seek); @@ -422,14 +422,14 @@ void TestSymmetricCipher(TestData &v, const NameValuePairs &overrideParameters) { std::cout << "incorrectly encrypted: "; StringSource xx(encrypted, false, new HexEncoder(new FileSink(std::cout))); - xx.Pump(256); xx.Flush(false); + xx.Pump(2048); xx.Flush(false); std::cout << "\n"; SignalTestFailure(); } std::string decrypted; - StringSource dd(encrypted, false, new StreamTransformationFilter(*decryptor, new StringSink(decrypted), StreamTransformationFilter::NO_PADDING)); - dd.Pump(plaintext.size()/2 + 1); - dd.PumpAll(); + StreamTransformationFilter decFilter(*decryptor, new StringSink(decrypted), StreamTransformationFilter::NO_PADDING); + RandomizedTransfer(StringStore(encrypted).Ref(), decFilter, true); + decFilter.MessageEnd(); if (decrypted != plaintext) { std::cout << "incorrectly decrypted: "; @@ -484,27 +484,24 @@ void TestAuthenticatedSymmetricCipher(TestData &v, const NameValuePairs &overrid StringStore sh(header), sp(plaintext), sc(ciphertext), sf(footer), sm(mac); if (macAtBegin) - sm.TransferTo(df); + RandomizedTransfer(sm, df, true); sh.CopyTo(df, LWORD_MAX, AAD_CHANNEL); - sc.TransferTo(df); + RandomizedTransfer(sc, df, true); sf.CopyTo(df, LWORD_MAX, AAD_CHANNEL); if (!macAtBegin) - sm.TransferTo(df); + RandomizedTransfer(sm, df, true); df.MessageEnd(); - sh.TransferTo(ef, sh.MaxRetrievable()/2+1, AAD_CHANNEL); - sh.TransferTo(ef, LWORD_MAX, AAD_CHANNEL); - sp.TransferTo(ef, sp.MaxRetrievable()/2+1); - sp.TransferTo(ef); - sf.TransferTo(ef, sf.MaxRetrievable()/2+1, AAD_CHANNEL); - sf.TransferTo(ef, LWORD_MAX, AAD_CHANNEL); + RandomizedTransfer(sh, ef, true, AAD_CHANNEL); + RandomizedTransfer(sp, ef, true); + RandomizedTransfer(sf, ef, true, AAD_CHANNEL); ef.MessageEnd(); if (test == "Encrypt" && encrypted != ciphertext+mac) { std::cout << "incorrectly encrypted: "; StringSource xx(encrypted, false, new HexEncoder(new FileSink(std::cout))); - xx.Pump(256); xx.Flush(false); + xx.Pump(2048); xx.Flush(false); std::cout << "\n"; SignalTestFailure(); } |