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 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 srct_hex_ = "#" + QuicUtils::HexEncode(srct); | 173 srct_hex_ = "#" + QuicUtils::HexEncode(srct); |
174 | 174 |
175 StringPiece scfg; | 175 StringPiece scfg; |
176 ASSERT_TRUE(out_.GetStringPiece(kSCFG, &scfg)); | 176 ASSERT_TRUE(out_.GetStringPiece(kSCFG, &scfg)); |
177 server_config_.reset(CryptoFramer::ParseMessage(scfg)); | 177 server_config_.reset(CryptoFramer::ParseMessage(scfg)); |
178 | 178 |
179 StringPiece scid; | 179 StringPiece scid; |
180 ASSERT_TRUE(server_config_->GetStringPiece(kSCID, &scid)); | 180 ASSERT_TRUE(server_config_->GetStringPiece(kSCID, &scid)); |
181 scid_hex_ = "#" + QuicUtils::HexEncode(scid); | 181 scid_hex_ = "#" + QuicUtils::HexEncode(scid); |
182 | 182 |
183 signed_config_ = | 183 signed_config_ = QuicReferenceCountedPointer<QuicSignedServerConfig>( |
184 scoped_refptr<QuicSignedServerConfig>(new QuicSignedServerConfig()); | 184 new QuicSignedServerConfig()); |
185 DCHECK(signed_config_->chain.get() == nullptr); | 185 DCHECK(signed_config_->chain.get() == nullptr); |
186 } | 186 } |
187 | 187 |
188 // Helper used to accept the result of ValidateClientHello and pass | 188 // Helper used to accept the result of ValidateClientHello and pass |
189 // it on to ProcessClientHello. | 189 // it on to ProcessClientHello. |
190 class ValidateCallback : public ValidateClientHelloResultCallback { | 190 class ValidateCallback : public ValidateClientHelloResultCallback { |
191 public: | 191 public: |
192 ValidateCallback(CryptoServerTest* test, | 192 ValidateCallback(CryptoServerTest* test, |
193 bool should_succeed, | 193 bool should_succeed, |
194 const char* error_substr, | 194 const char* error_substr, |
195 bool* called) | 195 bool* called) |
196 : test_(test), | 196 : test_(test), |
197 should_succeed_(should_succeed), | 197 should_succeed_(should_succeed), |
198 error_substr_(error_substr), | 198 error_substr_(error_substr), |
199 called_(called) { | 199 called_(called) { |
200 *called_ = false; | 200 *called_ = false; |
201 } | 201 } |
202 | 202 |
203 void Run(scoped_refptr<Result> result, | 203 void Run(QuicReferenceCountedPointer<Result> result, |
204 std::unique_ptr<ProofSource::Details> /* details */) override { | 204 std::unique_ptr<ProofSource::Details> /* details */) override { |
205 ASSERT_FALSE(*called_); | 205 ASSERT_FALSE(*called_); |
206 test_->ProcessValidationResult(std::move(result), should_succeed_, | 206 test_->ProcessValidationResult(std::move(result), should_succeed_, |
207 error_substr_); | 207 error_substr_); |
208 *called_ = true; | 208 *called_ = true; |
209 } | 209 } |
210 | 210 |
211 private: | 211 private: |
212 CryptoServerTest* test_; | 212 CryptoServerTest* test_; |
213 const bool should_succeed_; | 213 const bool should_succeed_; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
256 QuicSocketAddress server_address; | 256 QuicSocketAddress server_address; |
257 config_.ValidateClientHello( | 257 config_.ValidateClientHello( |
258 message, client_address_.host(), server_address, | 258 message, client_address_.host(), server_address, |
259 supported_versions_.front(), &clock_, signed_config_, | 259 supported_versions_.front(), &clock_, signed_config_, |
260 std::unique_ptr<ValidateCallback>( | 260 std::unique_ptr<ValidateCallback>( |
261 new ValidateCallback(this, false, error_substr, called))); | 261 new ValidateCallback(this, false, error_substr, called))); |
262 } | 262 } |
263 | 263 |
264 class ProcessCallback : public ProcessClientHelloResultCallback { | 264 class ProcessCallback : public ProcessClientHelloResultCallback { |
265 public: | 265 public: |
266 ProcessCallback(scoped_refptr<ValidateCallback::Result> result, | 266 ProcessCallback( |
267 bool should_succeed, | 267 QuicReferenceCountedPointer<ValidateCallback::Result> result, |
268 const char* error_substr, | 268 bool should_succeed, |
269 bool* called, | 269 const char* error_substr, |
270 CryptoHandshakeMessage* out) | 270 bool* called, |
| 271 CryptoHandshakeMessage* out) |
271 : result_(std::move(result)), | 272 : result_(std::move(result)), |
272 should_succeed_(should_succeed), | 273 should_succeed_(should_succeed), |
273 error_substr_(error_substr), | 274 error_substr_(error_substr), |
274 called_(called), | 275 called_(called), |
275 out_(out) { | 276 out_(out) { |
276 *called_ = false; | 277 *called_ = false; |
277 } | 278 } |
278 | 279 |
279 void Run( | 280 void Run( |
280 QuicErrorCode error, | 281 QuicErrorCode error, |
(...skipping 12 matching lines...) Expand all Loading... |
293 EXPECT_TRUE(error_details.find(error_substr_) != string::npos) | 294 EXPECT_TRUE(error_details.find(error_substr_) != string::npos) |
294 << error_substr_ << " not in " << error_details; | 295 << error_substr_ << " not in " << error_details; |
295 } | 296 } |
296 if (message != nullptr) { | 297 if (message != nullptr) { |
297 *out_ = *message; | 298 *out_ = *message; |
298 } | 299 } |
299 *called_ = true; | 300 *called_ = true; |
300 } | 301 } |
301 | 302 |
302 private: | 303 private: |
303 const scoped_refptr<ValidateCallback::Result> result_; | 304 const QuicReferenceCountedPointer<ValidateCallback::Result> result_; |
304 const bool should_succeed_; | 305 const bool should_succeed_; |
305 const char* const error_substr_; | 306 const char* const error_substr_; |
306 bool* called_; | 307 bool* called_; |
307 CryptoHandshakeMessage* out_; | 308 CryptoHandshakeMessage* out_; |
308 }; | 309 }; |
309 | 310 |
310 void ProcessValidationResult(scoped_refptr<ValidateCallback::Result> result, | 311 void ProcessValidationResult( |
311 bool should_succeed, | 312 QuicReferenceCountedPointer<ValidateCallback::Result> result, |
312 const char* error_substr) { | 313 bool should_succeed, |
| 314 const char* error_substr) { |
313 QuicSocketAddress server_address; | 315 QuicSocketAddress server_address; |
314 QuicConnectionId server_designated_connection_id = | 316 QuicConnectionId server_designated_connection_id = |
315 rand_for_id_generation_.RandUint64(); | 317 rand_for_id_generation_.RandUint64(); |
316 bool called; | 318 bool called; |
317 config_.ProcessClientHello( | 319 config_.ProcessClientHello( |
318 result, /*reject_only=*/false, /*connection_id=*/1, server_address, | 320 result, /*reject_only=*/false, /*connection_id=*/1, server_address, |
319 client_address_, supported_versions_.front(), supported_versions_, | 321 client_address_, supported_versions_.front(), supported_versions_, |
320 use_stateless_rejects_, server_designated_connection_id, &clock_, rand_, | 322 use_stateless_rejects_, server_designated_connection_id, &clock_, rand_, |
321 &compressed_certs_cache_, params_, signed_config_, | 323 &compressed_certs_cache_, params_, signed_config_, |
322 /*total_framing_overhead=*/50, chlo_packet_size_, | 324 /*total_framing_overhead=*/50, chlo_packet_size_, |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
391 QuicRandom* const rand_; | 393 QuicRandom* const rand_; |
392 MockRandom rand_for_id_generation_; | 394 MockRandom rand_for_id_generation_; |
393 MockClock clock_; | 395 MockClock clock_; |
394 QuicSocketAddress client_address_; | 396 QuicSocketAddress client_address_; |
395 QuicVersionVector supported_versions_; | 397 QuicVersionVector supported_versions_; |
396 QuicVersion client_version_; | 398 QuicVersion client_version_; |
397 string client_version_string_; | 399 string client_version_string_; |
398 QuicCryptoServerConfig config_; | 400 QuicCryptoServerConfig config_; |
399 QuicCompressedCertsCache compressed_certs_cache_; | 401 QuicCompressedCertsCache compressed_certs_cache_; |
400 QuicCryptoServerConfig::ConfigOptions config_options_; | 402 QuicCryptoServerConfig::ConfigOptions config_options_; |
401 scoped_refptr<QuicCryptoNegotiatedParameters> params_; | 403 QuicReferenceCountedPointer<QuicCryptoNegotiatedParameters> params_; |
402 scoped_refptr<QuicSignedServerConfig> signed_config_; | 404 QuicReferenceCountedPointer<QuicSignedServerConfig> signed_config_; |
403 CryptoHandshakeMessage out_; | 405 CryptoHandshakeMessage out_; |
404 uint8_t orbit_[kOrbitSize]; | 406 uint8_t orbit_[kOrbitSize]; |
405 bool use_stateless_rejects_; | 407 bool use_stateless_rejects_; |
406 size_t chlo_packet_size_; | 408 size_t chlo_packet_size_; |
407 | 409 |
408 // These strings contain hex escaped values from the server suitable for using | 410 // These strings contain hex escaped values from the server suitable for using |
409 // when constructing client hello messages. | 411 // when constructing client hello messages. |
410 string nonce_hex_, pub_hex_, srct_hex_, scid_hex_; | 412 string nonce_hex_, pub_hex_, srct_hex_, scid_hex_; |
411 std::unique_ptr<CryptoHandshakeMessage> server_config_; | 413 std::unique_ptr<CryptoHandshakeMessage> server_config_; |
412 }; | 414 }; |
(...skipping 731 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1144 // QuicCryptoServerConfig::EvaluateClientHello will leave info.unique as false | 1146 // QuicCryptoServerConfig::EvaluateClientHello will leave info.unique as false |
1145 // and cause ProcessClientHello to exit early (and generate a REJ message). | 1147 // and cause ProcessClientHello to exit early (and generate a REJ message). |
1146 config_.set_replay_protection(false); | 1148 config_.set_replay_protection(false); |
1147 | 1149 |
1148 ShouldSucceed(msg); | 1150 ShouldSucceed(msg); |
1149 EXPECT_EQ(kSHLO, out_.tag()); | 1151 EXPECT_EQ(kSHLO, out_.tag()); |
1150 } | 1152 } |
1151 | 1153 |
1152 } // namespace test | 1154 } // namespace test |
1153 } // namespace net | 1155 } // namespace net |
OLD | NEW |