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

Side by Side Diff: net/quic/core/crypto/chacha20_poly1305_decrypter_test.cc

Issue 2603723002: Add a new QUIC platform API for text utilities. (Closed)
Patch Set: Tests Created 3 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
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 "net/quic/core/crypto/chacha20_poly1305_decrypter.h" 5 #include "net/quic/core/crypto/chacha20_poly1305_decrypter.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "net/quic/core/quic_utils.h" 9 #include "net/quic/core/quic_utils.h"
10 #include "net/quic/platform/api/quic_text_utils.h"
10 #include "net/quic/test_tools/quic_test_utils.h" 11 #include "net/quic/test_tools/quic_test_utils.h"
11 12
12 using base::StringPiece; 13 using base::StringPiece;
13 using std::string; 14 using std::string;
14 15
15 namespace { 16 namespace {
16 17
17 // The test vectors come from RFC 7539 Section 2.8.2. 18 // The test vectors come from RFC 7539 Section 2.8.2.
18 19
19 // Each test vector consists of six strings of lowercase hexadecimal digits. 20 // Each test vector consists of six strings of lowercase hexadecimal digits.
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 } 136 }
136 return new QuicData(output.release(), output_length, true); 137 return new QuicData(output.release(), output_length, true);
137 } 138 }
138 139
139 TEST(ChaCha20Poly1305DecrypterTest, Decrypt) { 140 TEST(ChaCha20Poly1305DecrypterTest, Decrypt) {
140 for (size_t i = 0; test_vectors[i].key != nullptr; i++) { 141 for (size_t i = 0; test_vectors[i].key != nullptr; i++) {
141 // If not present then decryption is expected to fail. 142 // If not present then decryption is expected to fail.
142 bool has_pt = test_vectors[i].pt; 143 bool has_pt = test_vectors[i].pt;
143 144
144 // Decode the test vector. 145 // Decode the test vector.
145 string key = QuicUtils::HexDecode(test_vectors[i].key); 146 string key = QuicTextUtils::HexDecode(test_vectors[i].key);
146 string iv = QuicUtils::HexDecode(test_vectors[i].iv); 147 string iv = QuicTextUtils::HexDecode(test_vectors[i].iv);
147 string fixed = QuicUtils::HexDecode(test_vectors[i].fixed); 148 string fixed = QuicTextUtils::HexDecode(test_vectors[i].fixed);
148 string aad = QuicUtils::HexDecode(test_vectors[i].aad); 149 string aad = QuicTextUtils::HexDecode(test_vectors[i].aad);
149 string ct = QuicUtils::HexDecode(test_vectors[i].ct); 150 string ct = QuicTextUtils::HexDecode(test_vectors[i].ct);
150 string pt; 151 string pt;
151 if (has_pt) { 152 if (has_pt) {
152 pt = QuicUtils::HexDecode(test_vectors[i].pt); 153 pt = QuicTextUtils::HexDecode(test_vectors[i].pt);
153 } 154 }
154 155
155 ChaCha20Poly1305Decrypter decrypter; 156 ChaCha20Poly1305Decrypter decrypter;
156 ASSERT_TRUE(decrypter.SetKey(key)); 157 ASSERT_TRUE(decrypter.SetKey(key));
157 std::unique_ptr<QuicData> decrypted(DecryptWithNonce( 158 std::unique_ptr<QuicData> decrypted(DecryptWithNonce(
158 &decrypter, fixed + iv, 159 &decrypter, fixed + iv,
159 // This deliberately tests that the decrypter can handle an AAD that 160 // This deliberately tests that the decrypter can handle an AAD that
160 // is set to nullptr, as opposed to a zero-length, non-nullptr pointer. 161 // is set to nullptr, as opposed to a zero-length, non-nullptr pointer.
161 StringPiece(aad.length() ? aad.data() : nullptr, aad.length()), ct)); 162 StringPiece(aad.length() ? aad.data() : nullptr, aad.length()), ct));
162 if (!decrypted.get()) { 163 if (!decrypted.get()) {
163 EXPECT_FALSE(has_pt); 164 EXPECT_FALSE(has_pt);
164 continue; 165 continue;
165 } 166 }
166 EXPECT_TRUE(has_pt); 167 EXPECT_TRUE(has_pt);
167 168
168 EXPECT_EQ(12u, ct.size() - decrypted->length()); 169 EXPECT_EQ(12u, ct.size() - decrypted->length());
169 ASSERT_EQ(pt.length(), decrypted->length()); 170 ASSERT_EQ(pt.length(), decrypted->length());
170 test::CompareCharArraysWithHexError("plaintext", decrypted->data(), 171 test::CompareCharArraysWithHexError("plaintext", decrypted->data(),
171 pt.length(), pt.data(), pt.length()); 172 pt.length(), pt.data(), pt.length());
172 } 173 }
173 } 174 }
174 175
175 } // namespace test 176 } // namespace test
176 } // namespace net 177 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698