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); | 108 void Run(const Result* result, std::unique_ptr<ProofSource::Details> details); |
109 | 109 |
110 protected: | 110 protected: |
111 virtual void RunImpl(const CryptoHandshakeMessage& client_hello, | 111 virtual void RunImpl(const CryptoHandshakeMessage& client_hello, |
112 const Result& result) = 0; | 112 const Result& result, |
| 113 std::unique_ptr<ProofSource::Details> details) = 0; |
113 | 114 |
114 private: | 115 private: |
115 DISALLOW_COPY_AND_ASSIGN(ValidateClientHelloResultCallback); | 116 DISALLOW_COPY_AND_ASSIGN(ValidateClientHelloResultCallback); |
116 }; | 117 }; |
117 | 118 |
118 // Callback used to receive the results of a call to | 119 // Callback used to receive the results of a call to |
119 // BuildServerConfigUpdateMessage. | 120 // BuildServerConfigUpdateMessage. |
120 class BuildServerConfigUpdateMessageResultCallback { | 121 class BuildServerConfigUpdateMessageResultCallback { |
121 public: | 122 public: |
122 BuildServerConfigUpdateMessageResultCallback() = default; | 123 BuildServerConfigUpdateMessageResultCallback() = default; |
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
525 // GetProof failed. If GetProof was not run, then |get_proof_failed| will be | 526 // GetProof failed. If GetProof was not run, then |get_proof_failed| will be |
526 // set to false. | 527 // set to false. |
527 void EvaluateClientHelloAfterGetProof( | 528 void EvaluateClientHelloAfterGetProof( |
528 bool found_error, | 529 bool found_error, |
529 const IPAddress& server_ip, | 530 const IPAddress& server_ip, |
530 QuicVersion version, | 531 QuicVersion version, |
531 const uint8_t* primary_orbit, | 532 const uint8_t* primary_orbit, |
532 scoped_refptr<Config> requested_config, | 533 scoped_refptr<Config> requested_config, |
533 scoped_refptr<Config> primary_config, | 534 scoped_refptr<Config> primary_config, |
534 QuicCryptoProof* crypto_proof, | 535 QuicCryptoProof* crypto_proof, |
| 536 std::unique_ptr<ProofSource::Details> proof_source_details, |
535 bool get_proof_failed, | 537 bool get_proof_failed, |
536 ValidateClientHelloResultCallback::Result* client_hello_state, | 538 ValidateClientHelloResultCallback::Result* client_hello_state, |
537 ValidateClientHelloResultCallback* done_cb) const; | 539 ValidateClientHelloResultCallback* done_cb) const; |
538 | 540 |
539 // BuildRejection sets |out| to be a REJ message in reply to |client_hello|. | 541 // BuildRejection sets |out| to be a REJ message in reply to |client_hello|. |
540 void BuildRejection(QuicVersion version, | 542 void BuildRejection(QuicVersion version, |
541 const Config& config, | 543 const Config& config, |
542 const CryptoHandshakeMessage& client_hello, | 544 const CryptoHandshakeMessage& client_hello, |
543 const ClientHelloInfo& info, | 545 const ClientHelloInfo& info, |
544 const CachedNetworkParameters& cached_network_params, | 546 const CachedNetworkParameters& cached_network_params, |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
658 QuicVersion version, | 660 QuicVersion version, |
659 QuicCompressedCertsCache* compressed_certs_cache, | 661 QuicCompressedCertsCache* compressed_certs_cache, |
660 const CommonCertSets* common_cert_sets, | 662 const CommonCertSets* common_cert_sets, |
661 const QuicCryptoNegotiatedParameters& params, | 663 const QuicCryptoNegotiatedParameters& params, |
662 CryptoHandshakeMessage message, | 664 CryptoHandshakeMessage message, |
663 std::unique_ptr<BuildServerConfigUpdateMessageResultCallback> cb); | 665 std::unique_ptr<BuildServerConfigUpdateMessageResultCallback> cb); |
664 | 666 |
665 void Run(bool ok, | 667 void Run(bool ok, |
666 const scoped_refptr<ProofSource::Chain>& chain, | 668 const scoped_refptr<ProofSource::Chain>& chain, |
667 const std::string& signature, | 669 const std::string& signature, |
668 const std::string& leaf_cert_sct) override; | 670 const std::string& leaf_cert_sct, |
| 671 std::unique_ptr<ProofSource::Details> details) override; |
669 | 672 |
670 private: | 673 private: |
671 const QuicCryptoServerConfig* config_; | 674 const QuicCryptoServerConfig* config_; |
672 const QuicVersion version_; | 675 const QuicVersion version_; |
673 QuicCompressedCertsCache* compressed_certs_cache_; | 676 QuicCompressedCertsCache* compressed_certs_cache_; |
674 const CommonCertSets* common_cert_sets_; | 677 const CommonCertSets* common_cert_sets_; |
675 const std::string client_common_set_hashes_; | 678 const std::string client_common_set_hashes_; |
676 const std::string client_cached_cert_hashes_; | 679 const std::string client_cached_cert_hashes_; |
677 const bool sct_supported_by_client_; | 680 const bool sct_supported_by_client_; |
678 CryptoHandshakeMessage message_; | 681 CryptoHandshakeMessage message_; |
679 std::unique_ptr<BuildServerConfigUpdateMessageResultCallback> cb_; | 682 std::unique_ptr<BuildServerConfigUpdateMessageResultCallback> cb_; |
680 }; | 683 }; |
681 | 684 |
682 // Invoked by BuildServerConfigUpdateMessageProofSourceCallback::RunImpl once | 685 // Invoked by BuildServerConfigUpdateMessageProofSourceCallback::RunImpl once |
683 // the proof has been acquired. Finishes building the server config update | 686 // the proof has been acquired. Finishes building the server config update |
684 // message and invokes |cb|. | 687 // message and invokes |cb|. |
685 void FinishBuildServerConfigUpdateMessage( | 688 void FinishBuildServerConfigUpdateMessage( |
686 QuicVersion version, | 689 QuicVersion version, |
687 QuicCompressedCertsCache* compressed_certs_cache, | 690 QuicCompressedCertsCache* compressed_certs_cache, |
688 const CommonCertSets* common_cert_sets, | 691 const CommonCertSets* common_cert_sets, |
689 const std::string& client_common_set_hashes, | 692 const std::string& client_common_set_hashes, |
690 const std::string& client_cached_cert_hashes, | 693 const std::string& client_cached_cert_hashes, |
691 bool sct_supported_by_client, | 694 bool sct_supported_by_client, |
692 bool ok, | 695 bool ok, |
693 const scoped_refptr<ProofSource::Chain>& chain, | 696 const scoped_refptr<ProofSource::Chain>& chain, |
694 const std::string& signature, | 697 const std::string& signature, |
695 const std::string& leaf_cert_sct, | 698 const std::string& leaf_cert_sct, |
| 699 std::unique_ptr<ProofSource::Details> details, |
696 CryptoHandshakeMessage message, | 700 CryptoHandshakeMessage message, |
697 std::unique_ptr<BuildServerConfigUpdateMessageResultCallback> cb) const; | 701 std::unique_ptr<BuildServerConfigUpdateMessageResultCallback> cb) const; |
698 | 702 |
699 // replay_protection_ controls whether the server enforces that handshakes | 703 // replay_protection_ controls whether the server enforces that handshakes |
700 // aren't replays. | 704 // aren't replays. |
701 bool replay_protection_; | 705 bool replay_protection_; |
702 | 706 |
703 // The multiple of the CHLO message size that a REJ message must stay under | 707 // The multiple of the CHLO message size that a REJ message must stay under |
704 // when the client doesn't present a valid source-address token. This is | 708 // when the client doesn't present a valid source-address token. This is |
705 // used to protect QUIC from amplification attacks. | 709 // used to protect QUIC from amplification attacks. |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
781 std::string cert_sct; | 785 std::string cert_sct; |
782 // The server config that is used for this proof (and the rest of the | 786 // The server config that is used for this proof (and the rest of the |
783 // request). | 787 // request). |
784 scoped_refptr<QuicCryptoServerConfig::Config> config; | 788 scoped_refptr<QuicCryptoServerConfig::Config> config; |
785 std::string primary_scid; | 789 std::string primary_scid; |
786 }; | 790 }; |
787 | 791 |
788 } // namespace net | 792 } // namespace net |
789 | 793 |
790 #endif // NET_QUIC_CRYPTO_QUIC_CRYPTO_SERVER_CONFIG_H_ | 794 #endif // NET_QUIC_CRYPTO_QUIC_CRYPTO_SERVER_CONFIG_H_ |
OLD | NEW |