Chromium Code Reviews| 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)); |