| 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 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |