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

Side by Side Diff: components/webcrypto/algorithms/aes_ctr_unittest.cc

Issue 1461703009: Switch //components from vector_as_array to vector::data. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: eroman comment Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
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 "base/stl_util.h"
6 #include "base/values.h" 5 #include "base/values.h"
7 #include "components/webcrypto/algorithm_dispatch.h" 6 #include "components/webcrypto/algorithm_dispatch.h"
8 #include "components/webcrypto/algorithms/test_helpers.h" 7 #include "components/webcrypto/algorithms/test_helpers.h"
9 #include "components/webcrypto/crypto_data.h" 8 #include "components/webcrypto/crypto_data.h"
10 #include "components/webcrypto/status.h" 9 #include "components/webcrypto/status.h"
11 #include "third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h" 10 #include "third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h"
12 #include "third_party/WebKit/public/platform/WebCryptoKeyAlgorithm.h" 11 #include "third_party/WebKit/public/platform/WebCryptoKeyAlgorithm.h"
13 12
14 namespace webcrypto { 13 namespace webcrypto {
15 14
16 namespace { 15 namespace {
17 16
18 // Creates an AES-CTR algorithm for encryption/decryption. 17 // Creates an AES-CTR algorithm for encryption/decryption.
19 blink::WebCryptoAlgorithm CreateAesCtrAlgorithm( 18 blink::WebCryptoAlgorithm CreateAesCtrAlgorithm(
20 const std::vector<uint8_t>& counter, 19 const std::vector<uint8_t>& counter,
21 uint8_t length_bits) { 20 uint8_t length_bits) {
22 return blink::WebCryptoAlgorithm::adoptParamsAndCreate( 21 return blink::WebCryptoAlgorithm::adoptParamsAndCreate(
23 blink::WebCryptoAlgorithmIdAesCtr, 22 blink::WebCryptoAlgorithmIdAesCtr,
24 new blink::WebCryptoAesCtrParams( 23 new blink::WebCryptoAesCtrParams(
25 length_bits, vector_as_array(&counter), 24 length_bits, counter.data(),
26 static_cast<unsigned int>(counter.size()))); 25 static_cast<unsigned int>(counter.size())));
27 } 26 }
28 27
29 class WebCryptoAesCtrTest : public WebCryptoTestBase {}; 28 class WebCryptoAesCtrTest : public WebCryptoTestBase {};
30 29
31 TEST_F(WebCryptoAesCtrTest, EncryptDecryptKnownAnswer) { 30 TEST_F(WebCryptoAesCtrTest, EncryptDecryptKnownAnswer) {
32 scoped_ptr<base::ListValue> tests; 31 scoped_ptr<base::ListValue> tests;
33 ASSERT_TRUE(ReadJsonTestFileToList("aes_ctr.json", &tests)); 32 ASSERT_TRUE(ReadJsonTestFileToList("aes_ctr.json", &tests));
34 33
35 for (size_t test_index = 0; test_index < tests->GetSize(); ++test_index) { 34 for (size_t test_index = 0; test_index < tests->GetSize(); ++test_index) {
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 132
134 blink::WebCryptoKey key = ImportSecretKeyFromRaw( 133 blink::WebCryptoKey key = ImportSecretKeyFromRaw(
135 std::vector<uint8>(16), // 128-bit key of all zeros. 134 std::vector<uint8>(16), // 128-bit key of all zeros.
136 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesCtr), 135 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesCtr),
137 blink::WebCryptoKeyUsageEncrypt | blink::WebCryptoKeyUsageDecrypt); 136 blink::WebCryptoKeyUsageEncrypt | blink::WebCryptoKeyUsageDecrypt);
138 137
139 std::vector<uint8_t> buffer(272); 138 std::vector<uint8_t> buffer(272);
140 139
141 // 16 and 17 AES blocks worth of data respectively (AES blocks are 16 bytes 140 // 16 and 17 AES blocks worth of data respectively (AES blocks are 16 bytes
142 // long). 141 // long).
143 CryptoData input_16(vector_as_array(&buffer), 256); 142 CryptoData input_16(buffer.data(), 256);
144 CryptoData input_17(vector_as_array(&buffer), 272); 143 CryptoData input_17(buffer.data(), 272);
145 144
146 std::vector<uint8_t> output; 145 std::vector<uint8_t> output;
147 146
148 for (size_t i = 0; i < arraysize(kStartCounter); ++i) { 147 for (size_t i = 0; i < arraysize(kStartCounter); ++i) {
149 std::vector<uint8_t> counter(16); 148 std::vector<uint8_t> counter(16);
150 counter[15] = kStartCounter[i]; 149 counter[15] = kStartCounter[i];
151 150
152 // Baseline test: Encrypting 16 blocks should work (don't bother to check 151 // Baseline test: Encrypting 16 blocks should work (don't bother to check
153 // output, the known answer tests already do that). 152 // output, the known answer tests already do that).
154 EXPECT_EQ(Status::Success(), 153 EXPECT_EQ(Status::Success(),
155 Encrypt(CreateAesCtrAlgorithm(counter, kCounterLengthBits), key, 154 Encrypt(CreateAesCtrAlgorithm(counter, kCounterLengthBits), key,
156 input_16, &output)); 155 input_16, &output));
157 156
158 // Encrypting/Decrypting 17 however should fail. 157 // Encrypting/Decrypting 17 however should fail.
159 EXPECT_EQ(Status::ErrorAesCtrInputTooLongCounterRepeated(), 158 EXPECT_EQ(Status::ErrorAesCtrInputTooLongCounterRepeated(),
160 Encrypt(CreateAesCtrAlgorithm(counter, kCounterLengthBits), key, 159 Encrypt(CreateAesCtrAlgorithm(counter, kCounterLengthBits), key,
161 input_17, &output)); 160 input_17, &output));
162 EXPECT_EQ(Status::ErrorAesCtrInputTooLongCounterRepeated(), 161 EXPECT_EQ(Status::ErrorAesCtrInputTooLongCounterRepeated(),
163 Decrypt(CreateAesCtrAlgorithm(counter, kCounterLengthBits), key, 162 Decrypt(CreateAesCtrAlgorithm(counter, kCounterLengthBits), key,
164 input_17, &output)); 163 input_17, &output));
165 } 164 }
166 } 165 }
167 166
168 } // namespace 167 } // namespace
169 168
170 } // namespace webcrypto 169 } // namespace webcrypto
OLDNEW
« no previous file with comments | « components/webcrypto/algorithms/aes_ctr.cc ('k') | components/webcrypto/algorithms/aes_gcm_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698