OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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 #ifndef NET_QUIC_CRYPTO_QUIC_CRYPTO_SERVER_CONFIG_H_ | 5 #ifndef NET_QUIC_CRYPTO_QUIC_CRYPTO_SERVER_CONFIG_H_ |
6 #define NET_QUIC_CRYPTO_QUIC_CRYPTO_SERVER_CONFIG_H_ | 6 #define NET_QUIC_CRYPTO_QUIC_CRYPTO_SERVER_CONFIG_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 ClientHelloInfo info; | 98 ClientHelloInfo info; |
99 QuicErrorCode error_code; | 99 QuicErrorCode error_code; |
100 std::string error_details; | 100 std::string error_details; |
101 | 101 |
102 // Populated if the CHLO STK contained a CachedNetworkParameters proto. | 102 // Populated if the CHLO STK contained a CachedNetworkParameters proto. |
103 CachedNetworkParameters cached_network_params; | 103 CachedNetworkParameters cached_network_params; |
104 }; | 104 }; |
105 | 105 |
106 ValidateClientHelloResultCallback(); | 106 ValidateClientHelloResultCallback(); |
107 virtual ~ValidateClientHelloResultCallback(); | 107 virtual ~ValidateClientHelloResultCallback(); |
108 void Run(const Result* result, std::unique_ptr<ProofSource::Details> details); | 108 void Run(std::unique_ptr<Result> result, |
| 109 std::unique_ptr<ProofSource::Details> details); |
109 | 110 |
110 protected: | 111 protected: |
111 virtual void RunImpl(const CryptoHandshakeMessage& client_hello, | 112 virtual void RunImpl(std::unique_ptr<Result> result, |
112 const Result& result, | |
113 std::unique_ptr<ProofSource::Details> details) = 0; | 113 std::unique_ptr<ProofSource::Details> details) = 0; |
114 | 114 |
115 private: | 115 private: |
116 DISALLOW_COPY_AND_ASSIGN(ValidateClientHelloResultCallback); | 116 DISALLOW_COPY_AND_ASSIGN(ValidateClientHelloResultCallback); |
117 }; | 117 }; |
118 | 118 |
119 // Callback used to receive the results of a call to | 119 // Callback used to receive the results of a call to |
120 // BuildServerConfigUpdateMessage. | 120 // BuildServerConfigUpdateMessage. |
121 class BuildServerConfigUpdateMessageResultCallback { | 121 class BuildServerConfigUpdateMessageResultCallback { |
122 public: | 122 public: |
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
511 // EvaluateClientHello checks |client_hello| for gross errors and determines | 511 // EvaluateClientHello checks |client_hello| for gross errors and determines |
512 // whether it can be shown to be fresh (i.e. not a replay). The results are | 512 // whether it can be shown to be fresh (i.e. not a replay). The results are |
513 // written to |info|. | 513 // written to |info|. |
514 void EvaluateClientHello( | 514 void EvaluateClientHello( |
515 const IPAddress& server_ip, | 515 const IPAddress& server_ip, |
516 QuicVersion version, | 516 QuicVersion version, |
517 const uint8_t* primary_orbit, | 517 const uint8_t* primary_orbit, |
518 scoped_refptr<Config> requested_config, | 518 scoped_refptr<Config> requested_config, |
519 scoped_refptr<Config> primary_config, | 519 scoped_refptr<Config> primary_config, |
520 QuicCryptoProof* crypto_proof, | 520 QuicCryptoProof* crypto_proof, |
521 ValidateClientHelloResultCallback::Result* client_hello_state, | 521 std::unique_ptr<ValidateClientHelloResultCallback::Result> |
| 522 client_hello_state, |
522 ValidateClientHelloResultCallback* done_cb) const; | 523 ValidateClientHelloResultCallback* done_cb) const; |
523 | 524 |
524 // Callback class for bridging between EvaluateClientHello and | 525 // Callback class for bridging between EvaluateClientHello and |
525 // EvaluateClientHelloAfterGetProof | 526 // EvaluateClientHelloAfterGetProof |
526 friend class EvaluateClientHelloCallback; | 527 friend class EvaluateClientHelloCallback; |
527 | 528 |
528 // Continuation of EvaluateClientHello after the call to | 529 // Continuation of EvaluateClientHello after the call to |
529 // ProofSource::GetProof. |found_error| indicates whether an error was | 530 // ProofSource::GetProof. |found_error| indicates whether an error was |
530 // detected in EvaluateClientHello, and |get_proof_failed| indicates whether | 531 // detected in EvaluateClientHello, and |get_proof_failed| indicates whether |
531 // GetProof failed. If GetProof was not run, then |get_proof_failed| will be | 532 // GetProof failed. If GetProof was not run, then |get_proof_failed| will be |
532 // set to false. | 533 // set to false. |
533 void EvaluateClientHelloAfterGetProof( | 534 void EvaluateClientHelloAfterGetProof( |
534 bool found_error, | 535 bool found_error, |
535 const IPAddress& server_ip, | 536 const IPAddress& server_ip, |
536 QuicVersion version, | 537 QuicVersion version, |
537 const uint8_t* primary_orbit, | 538 const uint8_t* primary_orbit, |
538 scoped_refptr<Config> requested_config, | 539 scoped_refptr<Config> requested_config, |
539 scoped_refptr<Config> primary_config, | 540 scoped_refptr<Config> primary_config, |
540 QuicCryptoProof* crypto_proof, | 541 QuicCryptoProof* crypto_proof, |
541 std::unique_ptr<ProofSource::Details> proof_source_details, | 542 std::unique_ptr<ProofSource::Details> proof_source_details, |
542 bool get_proof_failed, | 543 bool get_proof_failed, |
543 ValidateClientHelloResultCallback::Result* client_hello_state, | 544 std::unique_ptr<ValidateClientHelloResultCallback::Result> |
| 545 client_hello_state, |
544 ValidateClientHelloResultCallback* done_cb) const; | 546 ValidateClientHelloResultCallback* done_cb) const; |
545 | 547 |
546 // BuildRejection sets |out| to be a REJ message in reply to |client_hello|. | 548 // BuildRejection sets |out| to be a REJ message in reply to |client_hello|. |
547 void BuildRejection(QuicVersion version, | 549 void BuildRejection(QuicVersion version, |
548 QuicWallTime now, | 550 QuicWallTime now, |
549 const Config& config, | 551 const Config& config, |
550 const CryptoHandshakeMessage& client_hello, | 552 const CryptoHandshakeMessage& client_hello, |
551 const ClientHelloInfo& info, | 553 const ClientHelloInfo& info, |
552 const CachedNetworkParameters& cached_network_params, | 554 const CachedNetworkParameters& cached_network_params, |
553 bool use_stateless_rejects, | 555 bool use_stateless_rejects, |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
789 std::string cert_sct; | 791 std::string cert_sct; |
790 // The server config that is used for this proof (and the rest of the | 792 // The server config that is used for this proof (and the rest of the |
791 // request). | 793 // request). |
792 scoped_refptr<QuicCryptoServerConfig::Config> config; | 794 scoped_refptr<QuicCryptoServerConfig::Config> config; |
793 std::string primary_scid; | 795 std::string primary_scid; |
794 }; | 796 }; |
795 | 797 |
796 } // namespace net | 798 } // namespace net |
797 | 799 |
798 #endif // NET_QUIC_CRYPTO_QUIC_CRYPTO_SERVER_CONFIG_H_ | 800 #endif // NET_QUIC_CRYPTO_QUIC_CRYPTO_SERVER_CONFIG_H_ |
OLD | NEW |