| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 <algorithm> | 5 #include <algorithm> |
| 6 #include <cstdint> | 6 #include <cstdint> |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <ostream> | 8 #include <ostream> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 } | 209 } |
| 210 | 210 |
| 211 private: | 211 private: |
| 212 CryptoServerTest* test_; | 212 CryptoServerTest* test_; |
| 213 const bool should_succeed_; | 213 const bool should_succeed_; |
| 214 const char* const error_substr_; | 214 const char* const error_substr_; |
| 215 bool* called_; | 215 bool* called_; |
| 216 }; | 216 }; |
| 217 | 217 |
| 218 void CheckServerHello(const CryptoHandshakeMessage& server_hello) { | 218 void CheckServerHello(const CryptoHandshakeMessage& server_hello) { |
| 219 const QuicTag* versions; | 219 QuicTagVector versions; |
| 220 size_t num_versions; | 220 server_hello.GetTaglist(kVER, &versions); |
| 221 server_hello.GetTaglist(kVER, &versions, &num_versions); | 221 ASSERT_EQ(supported_versions_.size(), versions.size()); |
| 222 ASSERT_EQ(supported_versions_.size(), num_versions); | 222 for (size_t i = 0; i < versions.size(); ++i) { |
| 223 for (size_t i = 0; i < num_versions; ++i) { | |
| 224 EXPECT_EQ(QuicVersionToQuicTag(supported_versions_[i]), versions[i]); | 223 EXPECT_EQ(QuicVersionToQuicTag(supported_versions_[i]), versions[i]); |
| 225 } | 224 } |
| 226 | 225 |
| 227 QuicStringPiece address; | 226 QuicStringPiece address; |
| 228 ASSERT_TRUE(server_hello.GetStringPiece(kCADR, &address)); | 227 ASSERT_TRUE(server_hello.GetStringPiece(kCADR, &address)); |
| 229 QuicSocketAddressCoder decoder; | 228 QuicSocketAddressCoder decoder; |
| 230 ASSERT_TRUE(decoder.Decode(address.data(), address.size())); | 229 ASSERT_TRUE(decoder.Decode(address.data(), address.size())); |
| 231 EXPECT_EQ(client_address_.host(), decoder.ip()); | 230 EXPECT_EQ(client_address_.host(), decoder.ip()); |
| 232 EXPECT_EQ(client_address_.port(), decoder.port()); | 231 EXPECT_EQ(client_address_.port(), decoder.port()); |
| 233 } | 232 } |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 CryptoUtils::GenerateNonce( | 332 CryptoUtils::GenerateNonce( |
| 334 clock_.WallNow(), rand_, | 333 clock_.WallNow(), rand_, |
| 335 QuicStringPiece(reinterpret_cast<const char*>(orbit_), sizeof(orbit_)), | 334 QuicStringPiece(reinterpret_cast<const char*>(orbit_), sizeof(orbit_)), |
| 336 &nonce); | 335 &nonce); |
| 337 return nonce; | 336 return nonce; |
| 338 } | 337 } |
| 339 | 338 |
| 340 void CheckRejectReasons( | 339 void CheckRejectReasons( |
| 341 const HandshakeFailureReason* expected_handshake_failures, | 340 const HandshakeFailureReason* expected_handshake_failures, |
| 342 size_t expected_count) { | 341 size_t expected_count) { |
| 343 const uint32_t* reject_reasons; | 342 QuicTagVector reject_reasons; |
| 344 size_t num_reject_reasons; | |
| 345 static_assert(sizeof(QuicTag) == sizeof(uint32_t), "header out of sync"); | 343 static_assert(sizeof(QuicTag) == sizeof(uint32_t), "header out of sync"); |
| 346 QuicErrorCode error_code = | 344 QuicErrorCode error_code = out_.GetTaglist(kRREJ, &reject_reasons); |
| 347 out_.GetTaglist(kRREJ, &reject_reasons, &num_reject_reasons); | |
| 348 ASSERT_EQ(QUIC_NO_ERROR, error_code); | 345 ASSERT_EQ(QUIC_NO_ERROR, error_code); |
| 349 | 346 |
| 350 EXPECT_EQ(expected_count, num_reject_reasons); | 347 EXPECT_EQ(expected_count, reject_reasons.size()); |
| 351 for (size_t i = 0; i < num_reject_reasons; ++i) { | 348 for (size_t i = 0; i < reject_reasons.size(); ++i) { |
| 352 EXPECT_EQ(expected_handshake_failures[i], reject_reasons[i]); | 349 EXPECT_EQ(expected_handshake_failures[i], reject_reasons[i]); |
| 353 } | 350 } |
| 354 } | 351 } |
| 355 | 352 |
| 356 // If the server is rejecting statelessly, make sure it contains a | 353 // If the server is rejecting statelessly, make sure it contains a |
| 357 // server-designated connection id. Once the check is complete, | 354 // server-designated connection id. Once the check is complete, |
| 358 // allow the random id-generator to move to the next value. | 355 // allow the random id-generator to move to the next value. |
| 359 void CheckForServerDesignatedConnectionId() { | 356 void CheckForServerDesignatedConnectionId() { |
| 360 QuicConnectionId server_designated_connection_id; | 357 QuicConnectionId server_designated_connection_id; |
| 361 if (!RejectsAreStateless()) { | 358 if (!RejectsAreStateless()) { |
| (...skipping 728 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1090 // QuicCryptoServerConfig::EvaluateClientHello will leave info.unique as false | 1087 // QuicCryptoServerConfig::EvaluateClientHello will leave info.unique as false |
| 1091 // and cause ProcessClientHello to exit early (and generate a REJ message). | 1088 // and cause ProcessClientHello to exit early (and generate a REJ message). |
| 1092 config_.set_replay_protection(false); | 1089 config_.set_replay_protection(false); |
| 1093 | 1090 |
| 1094 ShouldSucceed(msg); | 1091 ShouldSucceed(msg); |
| 1095 EXPECT_EQ(kSHLO, out_.tag()); | 1092 EXPECT_EQ(kSHLO, out_.tag()); |
| 1096 } | 1093 } |
| 1097 | 1094 |
| 1098 } // namespace test | 1095 } // namespace test |
| 1099 } // namespace net | 1096 } // namespace net |
| OLD | NEW |