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

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

Issue 1549993003: Switch to standard integer types in components/, part 4 of 4. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 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 unified diff | Download patch
« no previous file with comments | « components/webcrypto/algorithms/aes_ctr.cc ('k') | components/webcrypto/algorithms/aes_gcm.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <stddef.h>
6 #include <stdint.h>
7
8 #include "base/macros.h"
5 #include "base/values.h" 9 #include "base/values.h"
6 #include "components/webcrypto/algorithm_dispatch.h" 10 #include "components/webcrypto/algorithm_dispatch.h"
7 #include "components/webcrypto/algorithms/test_helpers.h" 11 #include "components/webcrypto/algorithms/test_helpers.h"
8 #include "components/webcrypto/crypto_data.h" 12 #include "components/webcrypto/crypto_data.h"
9 #include "components/webcrypto/status.h" 13 #include "components/webcrypto/status.h"
10 #include "third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h" 14 #include "third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h"
11 #include "third_party/WebKit/public/platform/WebCryptoKeyAlgorithm.h" 15 #include "third_party/WebKit/public/platform/WebCryptoKeyAlgorithm.h"
12 16
13 namespace webcrypto { 17 namespace webcrypto {
14 18
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 key, CryptoData(test_cipher_text), &output)); 70 key, CryptoData(test_cipher_text), &output));
67 EXPECT_BYTES_EQ(test_plain_text, output); 71 EXPECT_BYTES_EQ(test_plain_text, output);
68 } 72 }
69 } 73 }
70 74
71 // The counter block must be exactly 16 bytes. 75 // The counter block must be exactly 16 bytes.
72 TEST_F(WebCryptoAesCtrTest, InvalidCounterBlockLength) { 76 TEST_F(WebCryptoAesCtrTest, InvalidCounterBlockLength) {
73 const unsigned int kBadCounterBlockLengthBytes[] = {0, 15, 17}; 77 const unsigned int kBadCounterBlockLengthBytes[] = {0, 15, 17};
74 78
75 blink::WebCryptoKey key = ImportSecretKeyFromRaw( 79 blink::WebCryptoKey key = ImportSecretKeyFromRaw(
76 std::vector<uint8>(16), // 128-bit key of all zeros. 80 std::vector<uint8_t>(16), // 128-bit key of all zeros.
77 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesCtr), 81 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesCtr),
78 blink::WebCryptoKeyUsageEncrypt | blink::WebCryptoKeyUsageDecrypt); 82 blink::WebCryptoKeyUsageEncrypt | blink::WebCryptoKeyUsageDecrypt);
79 83
80 std::vector<uint8_t> input(32); 84 std::vector<uint8_t> input(32);
81 std::vector<uint8_t> output; 85 std::vector<uint8_t> output;
82 86
83 for (size_t i = 0; i < arraysize(kBadCounterBlockLengthBytes); ++i) { 87 for (size_t i = 0; i < arraysize(kBadCounterBlockLengthBytes); ++i) {
84 std::vector<uint8_t> bad_counter(kBadCounterBlockLengthBytes[i]); 88 std::vector<uint8_t> bad_counter(kBadCounterBlockLengthBytes[i]);
85 89
86 EXPECT_EQ(Status::ErrorIncorrectSizeAesCtrCounter(), 90 EXPECT_EQ(Status::ErrorIncorrectSizeAesCtrCounter(),
87 Encrypt(CreateAesCtrAlgorithm(bad_counter, 128), key, 91 Encrypt(CreateAesCtrAlgorithm(bad_counter, 128), key,
88 CryptoData(input), &output)); 92 CryptoData(input), &output));
89 93
90 EXPECT_EQ(Status::ErrorIncorrectSizeAesCtrCounter(), 94 EXPECT_EQ(Status::ErrorIncorrectSizeAesCtrCounter(),
91 Decrypt(CreateAesCtrAlgorithm(bad_counter, 128), key, 95 Decrypt(CreateAesCtrAlgorithm(bad_counter, 128), key,
92 CryptoData(input), &output)); 96 CryptoData(input), &output));
93 } 97 }
94 } 98 }
95 99
96 // The counter length cannot be less than 1 or greater than 128. 100 // The counter length cannot be less than 1 or greater than 128.
97 TEST_F(WebCryptoAesCtrTest, InvalidCounterLength) { 101 TEST_F(WebCryptoAesCtrTest, InvalidCounterLength) {
98 const uint8_t kBadCounterLengthBits[] = {0, 129}; 102 const uint8_t kBadCounterLengthBits[] = {0, 129};
99 103
100 blink::WebCryptoKey key = ImportSecretKeyFromRaw( 104 blink::WebCryptoKey key = ImportSecretKeyFromRaw(
101 std::vector<uint8>(16), // 128-bit key of all zeros. 105 std::vector<uint8_t>(16), // 128-bit key of all zeros.
102 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesCtr), 106 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesCtr),
103 blink::WebCryptoKeyUsageEncrypt | blink::WebCryptoKeyUsageDecrypt); 107 blink::WebCryptoKeyUsageEncrypt | blink::WebCryptoKeyUsageDecrypt);
104 108
105 std::vector<uint8_t> counter(16); 109 std::vector<uint8_t> counter(16);
106 std::vector<uint8_t> input(32); 110 std::vector<uint8_t> input(32);
107 std::vector<uint8_t> output; 111 std::vector<uint8_t> output;
108 112
109 for (size_t i = 0; i < arraysize(kBadCounterLengthBits); ++i) { 113 for (size_t i = 0; i < arraysize(kBadCounterLengthBits); ++i) {
110 uint8_t bad_counter_length_bits = kBadCounterLengthBits[i]; 114 uint8_t bad_counter_length_bits = kBadCounterLengthBits[i];
111 115
(...skipping 12 matching lines...) Expand all
124 // Wrap-around is allowed, however if the counter repeats itself an error should 128 // Wrap-around is allowed, however if the counter repeats itself an error should
125 // be thrown. 129 // be thrown.
126 // 130 //
127 // Using a 4-bit counter it is possible to encrypt 16 blocks. However the 17th 131 // Using a 4-bit counter it is possible to encrypt 16 blocks. However the 17th
128 // block would end up wrapping back to the starting value. 132 // block would end up wrapping back to the starting value.
129 TEST_F(WebCryptoAesCtrTest, OverflowAndRepeatCounter) { 133 TEST_F(WebCryptoAesCtrTest, OverflowAndRepeatCounter) {
130 const uint8_t kCounterLengthBits = 4; 134 const uint8_t kCounterLengthBits = 4;
131 const uint8_t kStartCounter[] = {0, 1, 15}; 135 const uint8_t kStartCounter[] = {0, 1, 15};
132 136
133 blink::WebCryptoKey key = ImportSecretKeyFromRaw( 137 blink::WebCryptoKey key = ImportSecretKeyFromRaw(
134 std::vector<uint8>(16), // 128-bit key of all zeros. 138 std::vector<uint8_t>(16), // 128-bit key of all zeros.
135 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesCtr), 139 CreateAlgorithm(blink::WebCryptoAlgorithmIdAesCtr),
136 blink::WebCryptoKeyUsageEncrypt | blink::WebCryptoKeyUsageDecrypt); 140 blink::WebCryptoKeyUsageEncrypt | blink::WebCryptoKeyUsageDecrypt);
137 141
138 std::vector<uint8_t> buffer(272); 142 std::vector<uint8_t> buffer(272);
139 143
140 // 16 and 17 AES blocks worth of data respectively (AES blocks are 16 bytes 144 // 16 and 17 AES blocks worth of data respectively (AES blocks are 16 bytes
141 // long). 145 // long).
142 CryptoData input_16(buffer.data(), 256); 146 CryptoData input_16(buffer.data(), 256);
143 CryptoData input_17(buffer.data(), 272); 147 CryptoData input_17(buffer.data(), 272);
144 148
(...skipping 15 matching lines...) Expand all
160 input_17, &output)); 164 input_17, &output));
161 EXPECT_EQ(Status::ErrorAesCtrInputTooLongCounterRepeated(), 165 EXPECT_EQ(Status::ErrorAesCtrInputTooLongCounterRepeated(),
162 Decrypt(CreateAesCtrAlgorithm(counter, kCounterLengthBits), key, 166 Decrypt(CreateAesCtrAlgorithm(counter, kCounterLengthBits), key,
163 input_17, &output)); 167 input_17, &output));
164 } 168 }
165 } 169 }
166 170
167 } // namespace 171 } // namespace
168 172
169 } // namespace webcrypto 173 } // namespace webcrypto
OLDNEW
« no previous file with comments | « components/webcrypto/algorithms/aes_ctr.cc ('k') | components/webcrypto/algorithms/aes_gcm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698