OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/child/webcrypto/shared_crypto.h" | 5 #include "content/child/webcrypto/shared_crypto.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
642 std::vector<uint8> test_input = GetBytesFromHexString(test, "input"); | 642 std::vector<uint8> test_input = GetBytesFromHexString(test, "input"); |
643 std::vector<uint8> test_output = GetBytesFromHexString(test, "output"); | 643 std::vector<uint8> test_output = GetBytesFromHexString(test, "output"); |
644 | 644 |
645 blink::WebArrayBuffer output; | 645 blink::WebArrayBuffer output; |
646 ASSERT_STATUS_SUCCESS( | 646 ASSERT_STATUS_SUCCESS( |
647 Digest(test_algorithm, CryptoData(test_input), &output)); | 647 Digest(test_algorithm, CryptoData(test_input), &output)); |
648 EXPECT_TRUE(ArrayBufferMatches(test_output, output)); | 648 EXPECT_TRUE(ArrayBufferMatches(test_output, output)); |
649 } | 649 } |
650 } | 650 } |
651 | 651 |
652 TEST_F(SharedCryptoTest, DigestSampleSetsInChunks) { | |
653 scoped_ptr<base::ListValue> tests; | |
654 ASSERT_TRUE(ReadJsonTestFileToList("digest.json", &tests)); | |
655 | |
656 for (size_t test_index = 0; test_index < tests->GetSize(); ++test_index) { | |
657 SCOPED_TRACE(test_index); | |
658 base::DictionaryValue* test; | |
659 ASSERT_TRUE(tests->GetDictionary(test_index, &test)); | |
660 | |
661 blink::WebCryptoAlgorithm test_algorithm = | |
662 GetDigestAlgorithm(test, "algorithm"); | |
663 std::vector<uint8> test_input = GetBytesFromHexString(test, "input"); | |
664 std::vector<uint8> test_output = GetBytesFromHexString(test, "output"); | |
665 | |
666 // Test the chunk version of the digest functions. Test with 129 byte chunks | |
667 // because the SHA-512 chunk size is 128 bytes. | |
668 unsigned char* output; | |
669 unsigned int output_length; | |
670 static const size_t kChunkSizeBytes = 129; | |
671 size_t length = test_input.size(); | |
672 scoped_ptr<blink::WebCryptoDigestor> digestor( | |
673 CreateDigestor(test_algorithm.id())); | |
674 std::vector<uint8>::iterator begin = test_input.begin(); | |
675 size_t chunk_index = 0; | |
676 while (begin != test_input.end()) { | |
677 size_t chunk_length = std::min(kChunkSizeBytes, length - chunk_index); | |
678 std::vector<uint8> chunk(begin, begin + chunk_length); | |
eroman
2014/03/26 01:43:54
Not necessary to copy into a std::vector<>.
Howev
jww
2014/03/26 18:49:40
Done.
| |
679 EXPECT_TRUE(digestor->consume(chunk.data(), chunk.size())); | |
680 chunk_index = chunk_index + chunk_length; | |
681 begin = begin + chunk_length; | |
682 } | |
683 EXPECT_TRUE(digestor->finish(output, output_length)); | |
684 ExpectVectorMatches(test_output, | |
685 std::vector<uint8>(output, output + output_length)); | |
686 } | |
687 } | |
688 | |
652 TEST_F(SharedCryptoTest, HMACSampleSets) { | 689 TEST_F(SharedCryptoTest, HMACSampleSets) { |
653 scoped_ptr<base::ListValue> tests; | 690 scoped_ptr<base::ListValue> tests; |
654 ASSERT_TRUE(ReadJsonTestFileToList("hmac.json", &tests)); | 691 ASSERT_TRUE(ReadJsonTestFileToList("hmac.json", &tests)); |
655 // TODO(padolph): Missing known answer tests for HMAC SHA384, and SHA512. | 692 // TODO(padolph): Missing known answer tests for HMAC SHA384, and SHA512. |
656 for (size_t test_index = 0; test_index < tests->GetSize(); ++test_index) { | 693 for (size_t test_index = 0; test_index < tests->GetSize(); ++test_index) { |
657 SCOPED_TRACE(test_index); | 694 SCOPED_TRACE(test_index); |
658 base::DictionaryValue* test; | 695 base::DictionaryValue* test; |
659 ASSERT_TRUE(tests->GetDictionary(test_index, &test)); | 696 ASSERT_TRUE(tests->GetDictionary(test_index, &test)); |
660 | 697 |
661 blink::WebCryptoAlgorithm test_hash = GetDigestAlgorithm(test, "hash"); | 698 blink::WebCryptoAlgorithm test_hash = GetDigestAlgorithm(test, "hash"); |
(...skipping 2385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3047 algorithm, | 3084 algorithm, |
3048 CreateAesCbcAlgorithm(std::vector<uint8>(0, 16)), | 3085 CreateAesCbcAlgorithm(std::vector<uint8>(0, 16)), |
3049 true, | 3086 true, |
3050 blink::WebCryptoKeyUsageEncrypt, | 3087 blink::WebCryptoKeyUsageEncrypt, |
3051 &unwrapped_key)); | 3088 &unwrapped_key)); |
3052 } | 3089 } |
3053 | 3090 |
3054 } // namespace webcrypto | 3091 } // namespace webcrypto |
3055 | 3092 |
3056 } // namespace content | 3093 } // namespace content |
OLD | NEW |