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

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

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
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/crypto/chacha20_poly1305_decrypter.h" 5 #include "net/quic/crypto/chacha20_poly1305_decrypter.h"
6 6
7 #include "net/quic/test_tools/quic_test_utils.h" 7 #include "net/quic/test_tools/quic_test_utils.h"
8 8
9 using base::StringPiece; 9 using base::StringPiece;
10 10
(...skipping 11 matching lines...) Expand all
22 const char* aad; 22 const char* aad;
23 const char* ct; 23 const char* ct;
24 24
25 // Expected output: 25 // Expected output:
26 const char* pt; // An empty string "" means decryption succeeded and 26 const char* pt; // An empty string "" means decryption succeeded and
27 // the plaintext is zero-length. NULL means decryption 27 // the plaintext is zero-length. NULL means decryption
28 // failed. 28 // failed.
29 }; 29 };
30 30
31 const TestVector test_vectors[] = { 31 const TestVector test_vectors[] = {
32 { "4290bcb154173531f314af57f3be3b5006da371ece272afa1b5dbdd110" 32 {"4290bcb154173531f314af57f3be3b5006da371ece272afa1b5dbdd110"
33 "0a1007", 33 "0a1007",
34 "cd7cf67be39c794a", 34 "cd7cf67be39c794a", "87e229d4500845a079c0",
35 "87e229d4500845a079c0", 35 "e3e446f7ede9a19b62a4677dabf4e3d24b876bb28475", // "3896e1d6" truncated.
36 "e3e446f7ede9a19b62a4677dabf4e3d24b876bb28475", // "3896e1d6" truncated. 36 "86d09974840bded2a5ca"},
37 "86d09974840bded2a5ca" 37 // Modify the ciphertext (ChaCha20 encryption output).
38 }, 38 {
39 // Modify the ciphertext (ChaCha20 encryption output). 39 "4290bcb154173531f314af57f3be3b5006da371ece272afa1b5dbdd110"
40 { "4290bcb154173531f314af57f3be3b5006da371ece272afa1b5dbdd110" 40 "0a1007",
41 "0a1007", 41 "cd7cf67be39c794a", "87e229d4500845a079c0",
42 "cd7cf67be39c794a", 42 "f3e446f7ede9a19b62a4677dabf4e3d24b876bb28475", // "3896e1d6" truncated.
43 "87e229d4500845a079c0", 43 NULL // FAIL
44 "f3e446f7ede9a19b62a4677dabf4e3d24b876bb28475", // "3896e1d6" truncated. 44 },
45 NULL // FAIL 45 // Modify the ciphertext (Poly1305 authenticator).
46 }, 46 {
47 // Modify the ciphertext (Poly1305 authenticator). 47 "4290bcb154173531f314af57f3be3b5006da371ece272afa1b5dbdd110"
48 { "4290bcb154173531f314af57f3be3b5006da371ece272afa1b5dbdd110" 48 "0a1007",
49 "0a1007", 49 "cd7cf67be39c794a", "87e229d4500845a079c0",
50 "cd7cf67be39c794a", 50 "e3e446f7ede9a19b62a4677dabf4e3d24b876bb28476", // "3896e1d6" truncated.
51 "87e229d4500845a079c0", 51 NULL // FAIL
52 "e3e446f7ede9a19b62a4677dabf4e3d24b876bb28476", // "3896e1d6" truncated. 52 },
53 NULL // FAIL 53 // Modify the associated data.
54 }, 54 {
55 // Modify the associated data. 55 "4290bcb154173531f314af57f3be3b5006da371ece272afa1b5dbdd110"
56 { "4290bcb154173531f314af57f3be3b5006da371ece272afa1b5dbdd110" 56 "0a1007",
57 "0a1007", 57 "dd7cf67be39c794a", "87e229d4500845a079c0",
58 "dd7cf67be39c794a", 58 "e3e446f7ede9a19b62a4677dabf4e3d24b876bb28475", // "3896e1d6" truncated.
59 "87e229d4500845a079c0", 59 NULL // FAIL
60 "e3e446f7ede9a19b62a4677dabf4e3d24b876bb28475", // "3896e1d6" truncated. 60 },
61 NULL // FAIL 61 {NULL}};
62 },
63 { NULL }
64 };
65 62
66 } // namespace 63 } // namespace
67 64
68 namespace net { 65 namespace net {
69 namespace test { 66 namespace test {
70 67
71 // DecryptWithNonce wraps the |Decrypt| method of |decrypter| to allow passing 68 // DecryptWithNonce wraps the |Decrypt| method of |decrypter| to allow passing
72 // in an nonce and also to allocate the buffer needed for the plaintext. 69 // in an nonce and also to allocate the buffer needed for the plaintext.
73 QuicData* DecryptWithNonce(ChaCha20Poly1305Decrypter* decrypter, 70 QuicData* DecryptWithNonce(ChaCha20Poly1305Decrypter* decrypter,
74 StringPiece nonce, 71 StringPiece nonce,
75 StringPiece associated_data, 72 StringPiece associated_data,
76 StringPiece ciphertext) { 73 StringPiece ciphertext) {
77 size_t plaintext_size = ciphertext.length(); 74 size_t plaintext_size = ciphertext.length();
78 scoped_ptr<char[]> plaintext(new char[plaintext_size]); 75 scoped_ptr<char[]> plaintext(new char[plaintext_size]);
79 76
80 if (!decrypter->Decrypt(nonce, associated_data, ciphertext, 77 if (!decrypter->Decrypt(nonce,
78 associated_data,
79 ciphertext,
81 reinterpret_cast<unsigned char*>(plaintext.get()), 80 reinterpret_cast<unsigned char*>(plaintext.get()),
82 &plaintext_size)) { 81 &plaintext_size)) {
83 return NULL; 82 return NULL;
84 } 83 }
85 return new QuicData(plaintext.release(), plaintext_size, true); 84 return new QuicData(plaintext.release(), plaintext_size, true);
86 } 85 }
87 86
88 TEST(ChaCha20Poly1305DecrypterTest, Decrypt) { 87 TEST(ChaCha20Poly1305DecrypterTest, Decrypt) {
89 if (!ChaCha20Poly1305Decrypter::IsSupported()) { 88 if (!ChaCha20Poly1305Decrypter::IsSupported()) {
90 LOG(INFO) << "ChaCha20+Poly1305 not supported. Test skipped."; 89 LOG(INFO) << "ChaCha20+Poly1305 not supported. Test skipped.";
(...skipping 14 matching lines...) Expand all
105 ASSERT_TRUE(DecodeHexString(test_vectors[i].iv, &iv)); 104 ASSERT_TRUE(DecodeHexString(test_vectors[i].iv, &iv));
106 ASSERT_TRUE(DecodeHexString(test_vectors[i].aad, &aad)); 105 ASSERT_TRUE(DecodeHexString(test_vectors[i].aad, &aad));
107 ASSERT_TRUE(DecodeHexString(test_vectors[i].ct, &ct)); 106 ASSERT_TRUE(DecodeHexString(test_vectors[i].ct, &ct));
108 if (has_pt) { 107 if (has_pt) {
109 ASSERT_TRUE(DecodeHexString(test_vectors[i].pt, &pt)); 108 ASSERT_TRUE(DecodeHexString(test_vectors[i].pt, &pt));
110 } 109 }
111 110
112 ChaCha20Poly1305Decrypter decrypter; 111 ChaCha20Poly1305Decrypter decrypter;
113 ASSERT_TRUE(decrypter.SetKey(key)); 112 ASSERT_TRUE(decrypter.SetKey(key));
114 scoped_ptr<QuicData> decrypted(DecryptWithNonce( 113 scoped_ptr<QuicData> decrypted(DecryptWithNonce(
115 &decrypter, iv, 114 &decrypter,
115 iv,
116 // This deliberately tests that the decrypter can handle an AAD that 116 // This deliberately tests that the decrypter can handle an AAD that
117 // is set to NULL, as opposed to a zero-length, non-NULL pointer. 117 // is set to NULL, as opposed to a zero-length, non-NULL pointer.
118 StringPiece(aad.length() ? aad.data() : NULL, aad.length()), ct)); 118 StringPiece(aad.length() ? aad.data() : NULL, aad.length()),
119 ct));
119 if (!decrypted.get()) { 120 if (!decrypted.get()) {
120 EXPECT_FALSE(has_pt); 121 EXPECT_FALSE(has_pt);
121 continue; 122 continue;
122 } 123 }
123 EXPECT_TRUE(has_pt); 124 EXPECT_TRUE(has_pt);
124 125
125 ASSERT_EQ(pt.length(), decrypted->length()); 126 ASSERT_EQ(pt.length(), decrypted->length());
126 test::CompareCharArraysWithHexError("plaintext", decrypted->data(), 127 test::CompareCharArraysWithHexError(
127 pt.length(), pt.data(), pt.length()); 128 "plaintext", decrypted->data(), pt.length(), pt.data(), pt.length());
128 } 129 }
129 } 130 }
130 131
131 } // namespace test 132 } // namespace test
132 } // namespace net 133 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698