| 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));
|
|
|