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

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: Updated to latest WebCrypto API changes 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
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 821945fb800bb70c7cb84b27d7ae94dc29c70568..6f18fe6e8cc47cec2bb9f0bf0a662ecc2263ce23 100644
--- a/content/child/webcrypto/shared_crypto_unittest.cc
+++ b/content/child/webcrypto/shared_crypto_unittest.cc
@@ -649,6 +649,43 @@ 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 CHUNK_SIZE = 129;
eroman 2014/03/25 23:26:23 kChunkSizeBytes
jww 2014/03/26 00:42:31 Done.
+ size_t length = test_input.size();
+ scoped_ptr<blink::WebCryptoDigestor> digestor(
+ CreateDigestor(test_algorithm));
+ std::vector<uint8>::iterator begin = test_input.begin();
+ size_t chunk_index = 0;
+ while (begin != test_input.end()) {
+ size_t chunk_length = std::min(CHUNK_SIZE, length - chunk_index);
+ std::vector<uint8> chunk(begin, begin + chunk_length);
+ EXPECT_TRUE(digestor->consume(chunk.data(), 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));

Powered by Google App Engine
This is Rietveld 408576698