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

Side by Side Diff: net/quic/test_tools/crypto_test_utils.cc

Issue 14083012: QUIC: retransmit packets with the correct encryption. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Moved HandshakeMode enum to MockCryptoClientStream Created 7 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/test_tools/crypto_test_utils.h" 5 #include "net/quic/test_tools/crypto_test_utils.h"
6 6
7 #include "base/strings/string_piece.h" 7 #include "base/strings/string_piece.h"
8 #include "net/quic/crypto/crypto_handshake.h" 8 #include "net/quic/crypto/crypto_handshake.h"
9 #include "net/quic/crypto/crypto_server_config.h" 9 #include "net/quic/crypto/crypto_server_config.h"
10 #include "net/quic/crypto/quic_decrypter.h" 10 #include "net/quic/crypto/quic_decrypter.h"
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 102
103 } // anonymous namespace 103 } // anonymous namespace
104 104
105 // static 105 // static
106 void CryptoTestUtils::CommunicateHandshakeMessages( 106 void CryptoTestUtils::CommunicateHandshakeMessages(
107 PacketSavingConnection* a_conn, 107 PacketSavingConnection* a_conn,
108 QuicCryptoStream* a, 108 QuicCryptoStream* a,
109 PacketSavingConnection* b_conn, 109 PacketSavingConnection* b_conn,
110 QuicCryptoStream* b) { 110 QuicCryptoStream* b) {
111 size_t a_i = 0, b_i = 0; 111 size_t a_i = 0, b_i = 0;
112 while (!a->handshake_complete()) { 112 while (!a->handshake_confirmed()) {
113 ASSERT_GT(a_conn->packets_.size(), a_i); 113 ASSERT_GT(a_conn->packets_.size(), a_i);
114 LOG(INFO) << "Processing " << a_conn->packets_.size() - a_i 114 LOG(INFO) << "Processing " << a_conn->packets_.size() - a_i
115 << " packets a->b"; 115 << " packets a->b";
116 MovePackets(a_conn, &a_i, b); 116 MovePackets(a_conn, &a_i, b);
117 117
118 ASSERT_GT(b_conn->packets_.size(), b_i); 118 ASSERT_GT(b_conn->packets_.size(), b_i);
119 LOG(INFO) << "Processing " << b_conn->packets_.size() - b_i 119 LOG(INFO) << "Processing " << b_conn->packets_.size() - b_i
120 << " packets b->a"; 120 << " packets b->a";
121 if (b_conn->packets_.size() - b_i == 2) { 121 if (b_conn->packets_.size() - b_i == 2) {
122 LOG(INFO) << "here"; 122 LOG(INFO) << "here";
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 CryptoTagValueMap::const_iterator it = message.tag_value_map().find(tag); 210 CryptoTagValueMap::const_iterator it = message.tag_value_map().find(tag);
211 if (it == message.tag_value_map().end()) { 211 if (it == message.tag_value_map().end()) {
212 return string(); 212 return string();
213 } 213 }
214 return it->second; 214 return it->second;
215 } 215 }
216 216
217 void CryptoTestUtils::CompareClientAndServerKeys( 217 void CryptoTestUtils::CompareClientAndServerKeys(
218 QuicCryptoClientStream* client, 218 QuicCryptoClientStream* client,
219 QuicCryptoServerStream* server) { 219 QuicCryptoServerStream* server) {
220 StringPiece client_encrypter_key = 220 const QuicEncrypter* client_encrypter(
221 client->session()->connection()->encrypter()->GetKey(); 221 client->session()->connection()->encrypter(ENCRYPTION_INITIAL));
222 StringPiece client_encrypter_iv = 222 // Normally we would expect the client's INITIAL decrypter to have latched
223 client->session()->connection()->encrypter()->GetNoncePrefix(); 223 // from the receipt of the server hello. However, when using a
224 StringPiece client_decrypter_key = 224 // PacketSavingConnection (at the tests do) we don't actually encrypt with
225 client->session()->connection()->decrypter()->GetKey(); 225 // the correct encrypter.
226 StringPiece client_decrypter_iv = 226 // TODO(agl): make the tests more realistic.
227 client->session()->connection()->decrypter()->GetNoncePrefix(); 227 const QuicDecrypter* client_decrypter(
228 StringPiece server_encrypter_key = 228 client->session()->connection()->alternative_decrypter());
229 server->session()->connection()->encrypter()->GetKey(); 229 const QuicEncrypter* server_encrypter(
230 StringPiece server_encrypter_iv = 230 server->session()->connection()->encrypter(ENCRYPTION_INITIAL));
231 server->session()->connection()->encrypter()->GetNoncePrefix(); 231 const QuicDecrypter* server_decrypter(
232 StringPiece server_decrypter_key = 232 server->session()->connection()->decrypter());
233 server->session()->connection()->decrypter()->GetKey(); 233
234 StringPiece server_decrypter_iv = 234 StringPiece client_encrypter_key = client_encrypter->GetKey();
235 server->session()->connection()->decrypter()->GetNoncePrefix(); 235 StringPiece client_encrypter_iv = client_encrypter->GetNoncePrefix();
236 StringPiece client_decrypter_key = client_decrypter->GetKey();
237 StringPiece client_decrypter_iv = client_decrypter->GetNoncePrefix();
238 StringPiece server_encrypter_key = server_encrypter->GetKey();
239 StringPiece server_encrypter_iv = server_encrypter->GetNoncePrefix();
240 StringPiece server_decrypter_key = server_decrypter->GetKey();
241 StringPiece server_decrypter_iv = server_decrypter->GetNoncePrefix();
242
236 CompareCharArraysWithHexError("client write key", 243 CompareCharArraysWithHexError("client write key",
237 client_encrypter_key.data(), 244 client_encrypter_key.data(),
238 client_encrypter_key.length(), 245 client_encrypter_key.length(),
239 server_decrypter_key.data(), 246 server_decrypter_key.data(),
240 server_decrypter_key.length()); 247 server_decrypter_key.length());
241 CompareCharArraysWithHexError("client write IV", 248 CompareCharArraysWithHexError("client write IV",
242 client_encrypter_iv.data(), 249 client_encrypter_iv.data(),
243 client_encrypter_iv.length(), 250 client_encrypter_iv.length(),
244 server_decrypter_iv.data(), 251 server_decrypter_iv.data(),
245 server_decrypter_iv.length()); 252 server_decrypter_iv.length());
246 CompareCharArraysWithHexError("server write key", 253 CompareCharArraysWithHexError("server write key",
247 server_encrypter_key.data(), 254 server_encrypter_key.data(),
248 server_encrypter_key.length(), 255 server_encrypter_key.length(),
249 client_decrypter_key.data(), 256 client_decrypter_key.data(),
250 client_decrypter_key.length()); 257 client_decrypter_key.length());
251 CompareCharArraysWithHexError("server write IV", 258 CompareCharArraysWithHexError("server write IV",
252 server_encrypter_iv.data(), 259 server_encrypter_iv.data(),
253 server_encrypter_iv.length(), 260 server_encrypter_iv.length(),
254 client_decrypter_iv.data(), 261 client_decrypter_iv.data(),
255 client_decrypter_iv.length()); 262 client_decrypter_iv.length());
256 } 263 }
257 } // namespace test 264 } // namespace test
258 } // namespace net 265 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698