| 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 <ostream> | 5 #include <ostream> |
| 6 #include <vector> | 6 #include <vector> |
| 7 | 7 |
| 8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
| 9 #include "crypto/secure_hash.h" | 9 #include "crypto/secure_hash.h" |
| 10 #include "net/quic/crypto/cert_compressor.h" | 10 #include "net/quic/crypto/cert_compressor.h" |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 server_hello.GetTaglist(kVER, &versions, &num_versions); | 246 server_hello.GetTaglist(kVER, &versions, &num_versions); |
| 247 ASSERT_EQ(supported_versions_.size(), num_versions); | 247 ASSERT_EQ(supported_versions_.size(), num_versions); |
| 248 for (size_t i = 0; i < num_versions; ++i) { | 248 for (size_t i = 0; i < num_versions; ++i) { |
| 249 EXPECT_EQ(QuicVersionToQuicTag(supported_versions_[i]), versions[i]); | 249 EXPECT_EQ(QuicVersionToQuicTag(supported_versions_[i]), versions[i]); |
| 250 } | 250 } |
| 251 | 251 |
| 252 StringPiece address; | 252 StringPiece address; |
| 253 ASSERT_TRUE(server_hello.GetStringPiece(kCADR, &address)); | 253 ASSERT_TRUE(server_hello.GetStringPiece(kCADR, &address)); |
| 254 QuicSocketAddressCoder decoder; | 254 QuicSocketAddressCoder decoder; |
| 255 ASSERT_TRUE(decoder.Decode(address.data(), address.size())); | 255 ASSERT_TRUE(decoder.Decode(address.data(), address.size())); |
| 256 EXPECT_EQ(client_address_.address(), decoder.ip()); | 256 EXPECT_EQ(client_address_.address_number(), decoder.ip()); |
| 257 EXPECT_EQ(client_address_.port(), decoder.port()); | 257 EXPECT_EQ(client_address_.port(), decoder.port()); |
| 258 } | 258 } |
| 259 | 259 |
| 260 void ShouldSucceed(const CryptoHandshakeMessage& message) { | 260 void ShouldSucceed(const CryptoHandshakeMessage& message) { |
| 261 bool called = false; | 261 bool called = false; |
| 262 IPAddressNumber server_ip; | 262 IPAddressNumber server_ip; |
| 263 config_.ValidateClientHello(message, client_address_.address(), server_ip, | 263 config_.ValidateClientHello(message, client_address_.address_number(), |
| 264 supported_versions_.front(), &clock_, | 264 server_ip, supported_versions_.front(), &clock_, |
| 265 &crypto_proof_, | 265 &crypto_proof_, |
| 266 new ValidateCallback(this, true, "", &called)); | 266 new ValidateCallback(this, true, "", &called)); |
| 267 EXPECT_TRUE(called); | 267 EXPECT_TRUE(called); |
| 268 } | 268 } |
| 269 | 269 |
| 270 void ShouldFailMentioning(const char* error_substr, | 270 void ShouldFailMentioning(const char* error_substr, |
| 271 const CryptoHandshakeMessage& message) { | 271 const CryptoHandshakeMessage& message) { |
| 272 bool called = false; | 272 bool called = false; |
| 273 ShouldFailMentioning(error_substr, message, &called); | 273 ShouldFailMentioning(error_substr, message, &called); |
| 274 EXPECT_TRUE(called); | 274 EXPECT_TRUE(called); |
| 275 } | 275 } |
| 276 | 276 |
| 277 void ShouldFailMentioning(const char* error_substr, | 277 void ShouldFailMentioning(const char* error_substr, |
| 278 const CryptoHandshakeMessage& message, | 278 const CryptoHandshakeMessage& message, |
| 279 bool* called) { | 279 bool* called) { |
| 280 IPAddressNumber server_ip; | 280 IPAddressNumber server_ip; |
| 281 config_.ValidateClientHello( | 281 config_.ValidateClientHello( |
| 282 message, client_address_.address(), server_ip, | 282 message, client_address_.address_number(), server_ip, |
| 283 supported_versions_.front(), &clock_, &crypto_proof_, | 283 supported_versions_.front(), &clock_, &crypto_proof_, |
| 284 new ValidateCallback(this, false, error_substr, called)); | 284 new ValidateCallback(this, false, error_substr, called)); |
| 285 } | 285 } |
| 286 | 286 |
| 287 void ProcessValidationResult(const CryptoHandshakeMessage& message, | 287 void ProcessValidationResult(const CryptoHandshakeMessage& message, |
| 288 const ValidateCallback::Result& result, | 288 const ValidateCallback::Result& result, |
| 289 bool should_succeed, | 289 bool should_succeed, |
| 290 const char* error_substr) { | 290 const char* error_substr) { |
| 291 IPAddressNumber server_ip; | 291 IPAddressNumber server_ip; |
| 292 string error_details; | 292 string error_details; |
| (...skipping 839 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1132 "VER\0", client_version_string_.c_str(), | 1132 "VER\0", client_version_string_.c_str(), |
| 1133 "$padding", static_cast<int>(kClientHelloMinimumSize), | 1133 "$padding", static_cast<int>(kClientHelloMinimumSize), |
| 1134 nullptr); | 1134 nullptr); |
| 1135 // clang-format on | 1135 // clang-format on |
| 1136 | 1136 |
| 1137 // Clear the message tag. | 1137 // Clear the message tag. |
| 1138 out_.set_tag(0); | 1138 out_.set_tag(0); |
| 1139 | 1139 |
| 1140 bool called = false; | 1140 bool called = false; |
| 1141 IPAddressNumber server_ip; | 1141 IPAddressNumber server_ip; |
| 1142 config_.ValidateClientHello(msg, client_address_.address(), server_ip, | 1142 config_.ValidateClientHello(msg, client_address_.address_number(), server_ip, |
| 1143 client_version_, &clock_, &crypto_proof_, | 1143 client_version_, &clock_, &crypto_proof_, |
| 1144 new ValidateCallback(this, true, "", &called)); | 1144 new ValidateCallback(this, true, "", &called)); |
| 1145 // The verification request was queued. | 1145 // The verification request was queued. |
| 1146 ASSERT_FALSE(called); | 1146 ASSERT_FALSE(called); |
| 1147 EXPECT_EQ(0u, out_.tag()); | 1147 EXPECT_EQ(0u, out_.tag()); |
| 1148 EXPECT_EQ(1, strike_register_client_->PendingVerifications()); | 1148 EXPECT_EQ(1, strike_register_client_->PendingVerifications()); |
| 1149 | 1149 |
| 1150 // Continue processing the verification request. | 1150 // Continue processing the verification request. |
| 1151 strike_register_client_->RunPendingVerifications(); | 1151 strike_register_client_->RunPendingVerifications(); |
| 1152 ASSERT_TRUE(called); | 1152 ASSERT_TRUE(called); |
| 1153 EXPECT_EQ(0, strike_register_client_->PendingVerifications()); | 1153 EXPECT_EQ(0, strike_register_client_->PendingVerifications()); |
| 1154 // The message should be accepted now. | 1154 // The message should be accepted now. |
| 1155 EXPECT_EQ(kSHLO, out_.tag()); | 1155 EXPECT_EQ(kSHLO, out_.tag()); |
| 1156 | 1156 |
| 1157 // Rejected if replayed. | 1157 // Rejected if replayed. |
| 1158 config_.ValidateClientHello(msg, client_address_.address(), server_ip, | 1158 config_.ValidateClientHello(msg, client_address_.address_number(), server_ip, |
| 1159 client_version_, &clock_, &crypto_proof_, | 1159 client_version_, &clock_, &crypto_proof_, |
| 1160 new ValidateCallback(this, true, "", &called)); | 1160 new ValidateCallback(this, true, "", &called)); |
| 1161 // The verification request was queued. | 1161 // The verification request was queued. |
| 1162 ASSERT_FALSE(called); | 1162 ASSERT_FALSE(called); |
| 1163 EXPECT_EQ(1, strike_register_client_->PendingVerifications()); | 1163 EXPECT_EQ(1, strike_register_client_->PendingVerifications()); |
| 1164 | 1164 |
| 1165 strike_register_client_->RunPendingVerifications(); | 1165 strike_register_client_->RunPendingVerifications(); |
| 1166 ASSERT_TRUE(called); | 1166 ASSERT_TRUE(called); |
| 1167 EXPECT_EQ(0, strike_register_client_->PendingVerifications()); | 1167 EXPECT_EQ(0, strike_register_client_->PendingVerifications()); |
| 1168 // The message should be rejected now. | 1168 // The message should be rejected now. |
| 1169 CheckRejectTag(); | 1169 CheckRejectTag(); |
| 1170 } | 1170 } |
| 1171 | 1171 |
| 1172 } // namespace test | 1172 } // namespace test |
| 1173 } // namespace net | 1173 } // namespace net |
| OLD | NEW |