Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Unified Diff: content/child/webcrypto/shared_crypto_unittest.cc

Issue 200763005: Support for the new WebCrypto digest by chunks API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Get rid of C++11 function call Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/child/webcrypto/shared_crypto.cc ('k') | content/child/webcrypto/webcrypto_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/child/webcrypto/shared_crypto_unittest.cc
diff --git a/content/child/webcrypto/shared_crypto_unittest.cc b/content/child/webcrypto/shared_crypto_unittest.cc
index 258d10856c837342e3480ed70d131424abc643f2..815c9c2050776c12eabaa076da3e1865b6ebd706 100644
--- a/content/child/webcrypto/shared_crypto_unittest.cc
+++ b/content/child/webcrypto/shared_crypto_unittest.cc
@@ -716,6 +716,44 @@ TEST_F(SharedCryptoTest, DigestSampleSets) {
}
}
+TEST_F(SharedCryptoTest, DigestSampleSetsInChunks) {
+ scoped_ptr<base::ListValue> tests;
+ ASSERT_TRUE(ReadJsonTestFileToList("digest.json", &tests));
+
+ for (size_t test_index = 0; test_index < tests->GetSize(); ++test_index) {
+ SCOPED_TRACE(test_index);
+ base::DictionaryValue* test;
+ ASSERT_TRUE(tests->GetDictionary(test_index, &test));
+
+ blink::WebCryptoAlgorithm test_algorithm =
+ GetDigestAlgorithm(test, "algorithm");
+ std::vector<uint8> test_input = GetBytesFromHexString(test, "input");
+ std::vector<uint8> test_output = GetBytesFromHexString(test, "output");
+
+ // Test the chunk version of the digest functions. Test with 129 byte chunks
+ // because the SHA-512 chunk size is 128 bytes.
+ unsigned char* output;
+ unsigned int output_length;
+ static const size_t kChunkSizeBytes = 129;
+ size_t length = test_input.size();
+ scoped_ptr<blink::WebCryptoDigestor> digestor(
+ CreateDigestor(test_algorithm.id()));
+ std::vector<uint8>::iterator begin = test_input.begin();
+ size_t chunk_index = 0;
+ while (begin != test_input.end()) {
+ size_t chunk_length = std::min(kChunkSizeBytes, length - chunk_index);
+ std::vector<uint8> chunk(begin, begin + chunk_length);
+ ASSERT_TRUE(chunk.size() > 0);
+ EXPECT_TRUE(digestor->consume(&chunk.front(), chunk.size()));
+ chunk_index = chunk_index + chunk_length;
+ begin = begin + chunk_length;
+ }
+ EXPECT_TRUE(digestor->finish(output, output_length));
+ ExpectVectorMatches(test_output,
+ std::vector<uint8>(output, output + output_length));
+ }
+}
+
TEST_F(SharedCryptoTest, HMACSampleSets) {
scoped_ptr<base::ListValue> tests;
ASSERT_TRUE(ReadJsonTestFileToList("hmac.json", &tests));
« no previous file with comments | « content/child/webcrypto/shared_crypto.cc ('k') | content/child/webcrypto/webcrypto_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698