| 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/core/quic_crypto_server_stream.h" | 5 #include "net/quic/core/quic_crypto_server_stream.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 CHECK(server_connection_); | 164 CHECK(server_connection_); |
| 165 CHECK(client_session_ != nullptr); | 165 CHECK(client_session_ != nullptr); |
| 166 | 166 |
| 167 EXPECT_CALL(*client_session_, OnProofValid(_)).Times(testing::AnyNumber()); | 167 EXPECT_CALL(*client_session_, OnProofValid(_)).Times(testing::AnyNumber()); |
| 168 client_stream()->CryptoConnect(); | 168 client_stream()->CryptoConnect(); |
| 169 CryptoTestUtils::AdvanceHandshake(client_connection_, client_stream(), 0, | 169 CryptoTestUtils::AdvanceHandshake(client_connection_, client_stream(), 0, |
| 170 server_connection_, server_stream(), 0); | 170 server_connection_, server_stream(), 0); |
| 171 } | 171 } |
| 172 | 172 |
| 173 protected: | 173 protected: |
| 174 QuicFlagSaver flags_; // Save/restore all QUIC flag values. |
| 175 |
| 174 // Every connection gets its own MockQuicConnectionHelper and | 176 // Every connection gets its own MockQuicConnectionHelper and |
| 175 // MockAlarmFactory, | 177 // MockAlarmFactory, |
| 176 // tracked separately from | 178 // tracked separately from |
| 177 // the server and client state so their lifetimes persist through the whole | 179 // the server and client state so their lifetimes persist through the whole |
| 178 // test. | 180 // test. |
| 179 std::vector<MockQuicConnectionHelper*> helpers_; | 181 std::vector<MockQuicConnectionHelper*> helpers_; |
| 180 std::vector<MockAlarmFactory*> alarm_factories_; | 182 std::vector<MockAlarmFactory*> alarm_factories_; |
| 181 | 183 |
| 182 // Server state | 184 // Server state |
| 183 PacketSavingConnection* server_connection_; | 185 PacketSavingConnection* server_connection_; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 InitializeFakeClient(/* supports_stateless_rejects= */ false); | 242 InitializeFakeClient(/* supports_stateless_rejects= */ false); |
| 241 | 243 |
| 242 AdvanceHandshakeWithFakeClient(); | 244 AdvanceHandshakeWithFakeClient(); |
| 243 EXPECT_TRUE(server_stream()->encryption_established()); | 245 EXPECT_TRUE(server_stream()->encryption_established()); |
| 244 EXPECT_TRUE(server_stream()->handshake_confirmed()); | 246 EXPECT_TRUE(server_stream()->handshake_confirmed()); |
| 245 EXPECT_EQ(ENCRYPTION_FORWARD_SECURE, | 247 EXPECT_EQ(ENCRYPTION_FORWARD_SECURE, |
| 246 server_session_->connection()->encryption_level()); | 248 server_session_->connection()->encryption_level()); |
| 247 } | 249 } |
| 248 | 250 |
| 249 TEST_P(QuicCryptoServerStreamTest, StatelessRejectAfterCHLO) { | 251 TEST_P(QuicCryptoServerStreamTest, StatelessRejectAfterCHLO) { |
| 250 ValueRestore<bool> old_flag(&FLAGS_enable_quic_stateless_reject_support, | 252 FLAGS_enable_quic_stateless_reject_support = true; |
| 251 true); | 253 |
| 252 Initialize(); | 254 Initialize(); |
| 253 | 255 |
| 254 EXPECT_CALL(*server_connection_, | 256 EXPECT_CALL(*server_connection_, |
| 255 CloseConnection(QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT, _, _)); | 257 CloseConnection(QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT, _, _)); |
| 256 | 258 |
| 257 InitializeFakeClient(/* supports_stateless_rejects= */ true); | 259 InitializeFakeClient(/* supports_stateless_rejects= */ true); |
| 258 AdvanceHandshakeWithFakeClient(); | 260 AdvanceHandshakeWithFakeClient(); |
| 259 | 261 |
| 260 // Check the server to make the sure the handshake did not succeed. | 262 // Check the server to make the sure the handshake did not succeed. |
| 261 EXPECT_FALSE(server_stream()->encryption_established()); | 263 EXPECT_FALSE(server_stream()->encryption_established()); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 274 const QuicConnectionId server_designated_connection_id = | 276 const QuicConnectionId server_designated_connection_id = |
| 275 client_state->GetNextServerDesignatedConnectionId(); | 277 client_state->GetNextServerDesignatedConnectionId(); |
| 276 const QuicConnectionId expected_id = | 278 const QuicConnectionId expected_id = |
| 277 server_connection_->random_generator()->RandUint64(); | 279 server_connection_->random_generator()->RandUint64(); |
| 278 EXPECT_EQ(expected_id, server_designated_connection_id); | 280 EXPECT_EQ(expected_id, server_designated_connection_id); |
| 279 EXPECT_FALSE(client_state->has_server_designated_connection_id()); | 281 EXPECT_FALSE(client_state->has_server_designated_connection_id()); |
| 280 ASSERT_TRUE(client_state->IsComplete(QuicWallTime::FromUNIXSeconds(0))); | 282 ASSERT_TRUE(client_state->IsComplete(QuicWallTime::FromUNIXSeconds(0))); |
| 281 } | 283 } |
| 282 | 284 |
| 283 TEST_P(QuicCryptoServerStreamTest, ConnectedAfterStatelessHandshake) { | 285 TEST_P(QuicCryptoServerStreamTest, ConnectedAfterStatelessHandshake) { |
| 284 ValueRestore<bool> old_flag(&FLAGS_enable_quic_stateless_reject_support, | 286 FLAGS_enable_quic_stateless_reject_support = true; |
| 285 true); | 287 |
| 286 Initialize(); | 288 Initialize(); |
| 287 | 289 |
| 288 InitializeFakeClient(/* supports_stateless_rejects= */ true); | 290 InitializeFakeClient(/* supports_stateless_rejects= */ true); |
| 289 AdvanceHandshakeWithFakeClient(); | 291 AdvanceHandshakeWithFakeClient(); |
| 290 | 292 |
| 291 // On the first round, encryption will not be established. | 293 // On the first round, encryption will not be established. |
| 292 EXPECT_FALSE(server_stream()->encryption_established()); | 294 EXPECT_FALSE(server_stream()->encryption_established()); |
| 293 EXPECT_FALSE(server_stream()->handshake_confirmed()); | 295 EXPECT_FALSE(server_stream()->handshake_confirmed()); |
| 294 EXPECT_EQ(1, server_stream()->NumHandshakeMessages()); | 296 EXPECT_EQ(1, server_stream()->NumHandshakeMessages()); |
| 295 EXPECT_EQ(0, server_stream()->NumHandshakeMessagesWithServerNonces()); | 297 EXPECT_EQ(0, server_stream()->NumHandshakeMessagesWithServerNonces()); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 319 AdvanceHandshakeWithFakeClient(); | 321 AdvanceHandshakeWithFakeClient(); |
| 320 | 322 |
| 321 // On the second round, encryption will be established. | 323 // On the second round, encryption will be established. |
| 322 EXPECT_TRUE(server_stream()->encryption_established()); | 324 EXPECT_TRUE(server_stream()->encryption_established()); |
| 323 EXPECT_TRUE(server_stream()->handshake_confirmed()); | 325 EXPECT_TRUE(server_stream()->handshake_confirmed()); |
| 324 EXPECT_EQ(1, server_stream()->NumHandshakeMessages()); | 326 EXPECT_EQ(1, server_stream()->NumHandshakeMessages()); |
| 325 EXPECT_EQ(1, server_stream()->NumHandshakeMessagesWithServerNonces()); | 327 EXPECT_EQ(1, server_stream()->NumHandshakeMessagesWithServerNonces()); |
| 326 } | 328 } |
| 327 | 329 |
| 328 TEST_P(QuicCryptoServerStreamTest, NoStatelessRejectIfNoClientSupport) { | 330 TEST_P(QuicCryptoServerStreamTest, NoStatelessRejectIfNoClientSupport) { |
| 329 ValueRestore<bool> old_flag(&FLAGS_enable_quic_stateless_reject_support, | 331 FLAGS_enable_quic_stateless_reject_support = true; |
| 330 true); | 332 |
| 331 Initialize(); | 333 Initialize(); |
| 332 | 334 |
| 333 // The server is configured to use stateless rejects, but the client does not | 335 // The server is configured to use stateless rejects, but the client does not |
| 334 // support it. | 336 // support it. |
| 335 InitializeFakeClient(/* supports_stateless_rejects= */ false); | 337 InitializeFakeClient(/* supports_stateless_rejects= */ false); |
| 336 AdvanceHandshakeWithFakeClient(); | 338 AdvanceHandshakeWithFakeClient(); |
| 337 | 339 |
| 338 // Check the server to make the sure the handshake did not succeed. | 340 // Check the server to make the sure the handshake did not succeed. |
| 339 EXPECT_FALSE(server_stream()->encryption_established()); | 341 EXPECT_FALSE(server_stream()->encryption_established()); |
| 340 EXPECT_FALSE(server_stream()->handshake_confirmed()); | 342 EXPECT_FALSE(server_stream()->handshake_confirmed()); |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 570 QUIC_NO_ERROR, "", ConnectionCloseBehavior::SILENT_CLOSE); | 572 QUIC_NO_ERROR, "", ConnectionCloseBehavior::SILENT_CLOSE); |
| 571 | 573 |
| 572 // The outstanding nonce verification RPC now completes. | 574 // The outstanding nonce verification RPC now completes. |
| 573 strike_register_client_->RunPendingVerifications(); | 575 strike_register_client_->RunPendingVerifications(); |
| 574 } | 576 } |
| 575 | 577 |
| 576 } // namespace | 578 } // namespace |
| 577 | 579 |
| 578 } // namespace test | 580 } // namespace test |
| 579 } // namespace net | 581 } // namespace net |
| OLD | NEW |