| OLD | NEW |
| 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 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 | 103 |
| 104 } // anonymous namespace | 104 } // anonymous namespace |
| 105 | 105 |
| 106 // static | 106 // static |
| 107 void CryptoTestUtils::CommunicateHandshakeMessages( | 107 void CryptoTestUtils::CommunicateHandshakeMessages( |
| 108 PacketSavingConnection* a_conn, | 108 PacketSavingConnection* a_conn, |
| 109 QuicCryptoStream* a, | 109 QuicCryptoStream* a, |
| 110 PacketSavingConnection* b_conn, | 110 PacketSavingConnection* b_conn, |
| 111 QuicCryptoStream* b) { | 111 QuicCryptoStream* b) { |
| 112 size_t a_i = 0, b_i = 0; | 112 size_t a_i = 0, b_i = 0; |
| 113 while (!a->handshake_complete()) { | 113 while (!a->handshake_confirmed()) { |
| 114 ASSERT_GT(a_conn->packets_.size(), a_i); | 114 ASSERT_GT(a_conn->packets_.size(), a_i); |
| 115 LOG(INFO) << "Processing " << a_conn->packets_.size() - a_i | 115 LOG(INFO) << "Processing " << a_conn->packets_.size() - a_i |
| 116 << " packets a->b"; | 116 << " packets a->b"; |
| 117 MovePackets(a_conn, &a_i, b); | 117 MovePackets(a_conn, &a_i, b); |
| 118 | 118 |
| 119 ASSERT_GT(b_conn->packets_.size(), b_i); | 119 ASSERT_GT(b_conn->packets_.size(), b_i); |
| 120 LOG(INFO) << "Processing " << b_conn->packets_.size() - b_i | 120 LOG(INFO) << "Processing " << b_conn->packets_.size() - b_i |
| 121 << " packets b->a"; | 121 << " packets b->a"; |
| 122 if (b_conn->packets_.size() - b_i == 2) { | 122 if (b_conn->packets_.size() - b_i == 2) { |
| 123 LOG(INFO) << "here"; | 123 LOG(INFO) << "here"; |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 CryptoTagValueMap::const_iterator it = message.tag_value_map().find(tag); | 211 CryptoTagValueMap::const_iterator it = message.tag_value_map().find(tag); |
| 212 if (it == message.tag_value_map().end()) { | 212 if (it == message.tag_value_map().end()) { |
| 213 return string(); | 213 return string(); |
| 214 } | 214 } |
| 215 return it->second; | 215 return it->second; |
| 216 } | 216 } |
| 217 | 217 |
| 218 void CryptoTestUtils::CompareClientAndServerKeys( | 218 void CryptoTestUtils::CompareClientAndServerKeys( |
| 219 QuicCryptoClientStream* client, | 219 QuicCryptoClientStream* client, |
| 220 QuicCryptoServerStream* server) { | 220 QuicCryptoServerStream* server) { |
| 221 StringPiece client_encrypter_key = | 221 const QuicEncrypter* client_encrypter( |
| 222 client->session()->connection()->encrypter()->GetKey(); | 222 client->session()->connection()->encrypter(ENCRYPTION_INITIAL)); |
| 223 StringPiece client_encrypter_iv = | 223 // Normally we would expect the client's INITIAL decrypter to have latched |
| 224 client->session()->connection()->encrypter()->GetNoncePrefix(); | 224 // from the receipt of the server hello. However, when using a |
| 225 StringPiece client_decrypter_key = | 225 // PacketSavingConnection (at the tests do) we don't actually encrypt with |
| 226 client->session()->connection()->decrypter()->GetKey(); | 226 // the correct encrypter. |
| 227 StringPiece client_decrypter_iv = | 227 // TODO(agl): make the tests more realistic. |
| 228 client->session()->connection()->decrypter()->GetNoncePrefix(); | 228 const QuicDecrypter* client_decrypter( |
| 229 StringPiece server_encrypter_key = | 229 client->session()->connection()->alternative_decrypter()); |
| 230 server->session()->connection()->encrypter()->GetKey(); | 230 const QuicEncrypter* server_encrypter( |
| 231 StringPiece server_encrypter_iv = | 231 server->session()->connection()->encrypter(ENCRYPTION_INITIAL)); |
| 232 server->session()->connection()->encrypter()->GetNoncePrefix(); | 232 const QuicDecrypter* server_decrypter( |
| 233 StringPiece server_decrypter_key = | 233 server->session()->connection()->decrypter()); |
| 234 server->session()->connection()->decrypter()->GetKey(); | 234 |
| 235 StringPiece server_decrypter_iv = | 235 StringPiece client_encrypter_key = client_encrypter->GetKey(); |
| 236 server->session()->connection()->decrypter()->GetNoncePrefix(); | 236 StringPiece client_encrypter_iv = client_encrypter->GetNoncePrefix(); |
| 237 StringPiece client_decrypter_key = client_decrypter->GetKey(); |
| 238 StringPiece client_decrypter_iv = client_decrypter->GetNoncePrefix(); |
| 239 StringPiece server_encrypter_key = server_encrypter->GetKey(); |
| 240 StringPiece server_encrypter_iv = server_encrypter->GetNoncePrefix(); |
| 241 StringPiece server_decrypter_key = server_decrypter->GetKey(); |
| 242 StringPiece server_decrypter_iv = server_decrypter->GetNoncePrefix(); |
| 243 |
| 237 CompareCharArraysWithHexError("client write key", | 244 CompareCharArraysWithHexError("client write key", |
| 238 client_encrypter_key.data(), | 245 client_encrypter_key.data(), |
| 239 client_encrypter_key.length(), | 246 client_encrypter_key.length(), |
| 240 server_decrypter_key.data(), | 247 server_decrypter_key.data(), |
| 241 server_decrypter_key.length()); | 248 server_decrypter_key.length()); |
| 242 CompareCharArraysWithHexError("client write IV", | 249 CompareCharArraysWithHexError("client write IV", |
| 243 client_encrypter_iv.data(), | 250 client_encrypter_iv.data(), |
| 244 client_encrypter_iv.length(), | 251 client_encrypter_iv.length(), |
| 245 server_decrypter_iv.data(), | 252 server_decrypter_iv.data(), |
| 246 server_decrypter_iv.length()); | 253 server_decrypter_iv.length()); |
| 247 CompareCharArraysWithHexError("server write key", | 254 CompareCharArraysWithHexError("server write key", |
| 248 server_encrypter_key.data(), | 255 server_encrypter_key.data(), |
| 249 server_encrypter_key.length(), | 256 server_encrypter_key.length(), |
| 250 client_decrypter_key.data(), | 257 client_decrypter_key.data(), |
| 251 client_decrypter_key.length()); | 258 client_decrypter_key.length()); |
| 252 CompareCharArraysWithHexError("server write IV", | 259 CompareCharArraysWithHexError("server write IV", |
| 253 server_encrypter_iv.data(), | 260 server_encrypter_iv.data(), |
| 254 server_encrypter_iv.length(), | 261 server_encrypter_iv.length(), |
| 255 client_decrypter_iv.data(), | 262 client_decrypter_iv.data(), |
| 256 client_decrypter_iv.length()); | 263 client_decrypter_iv.length()); |
| 257 } | 264 } |
| 258 } // namespace test | 265 } // namespace test |
| 259 } // namespace net | 266 } // namespace net |
| OLD | NEW |