OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "net/quic/core/quic_crypto_server_stream.h" | 5 #include "net/quic/core/quic_crypto_server_stream.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/base64.h" | 9 #include "base/base64.h" |
10 #include "crypto/secure_hash.h" | 10 #include "crypto/secure_hash.h" |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 | 85 |
86 QuicCryptoServerStream::QuicCryptoServerStream( | 86 QuicCryptoServerStream::QuicCryptoServerStream( |
87 const QuicCryptoServerConfig* crypto_config, | 87 const QuicCryptoServerConfig* crypto_config, |
88 QuicCompressedCertsCache* compressed_certs_cache, | 88 QuicCompressedCertsCache* compressed_certs_cache, |
89 bool use_stateless_rejects_if_peer_supported, | 89 bool use_stateless_rejects_if_peer_supported, |
90 QuicSession* session, | 90 QuicSession* session, |
91 Helper* helper) | 91 Helper* helper) |
92 : QuicCryptoServerStreamBase(session), | 92 : QuicCryptoServerStreamBase(session), |
93 crypto_config_(crypto_config), | 93 crypto_config_(crypto_config), |
94 compressed_certs_cache_(compressed_certs_cache), | 94 compressed_certs_cache_(compressed_certs_cache), |
95 crypto_proof_(new QuicCryptoProof), | 95 signed_config_(new QuicSignedServerConfig), |
96 validate_client_hello_cb_(nullptr), | 96 validate_client_hello_cb_(nullptr), |
97 helper_(helper), | 97 helper_(helper), |
98 num_handshake_messages_(0), | 98 num_handshake_messages_(0), |
99 num_handshake_messages_with_server_nonces_(0), | 99 num_handshake_messages_with_server_nonces_(0), |
100 send_server_config_update_cb_(nullptr), | 100 send_server_config_update_cb_(nullptr), |
101 num_server_config_update_messages_sent_(0), | 101 num_server_config_update_messages_sent_(0), |
102 use_stateless_rejects_if_peer_supported_( | 102 use_stateless_rejects_if_peer_supported_( |
103 use_stateless_rejects_if_peer_supported), | 103 use_stateless_rejects_if_peer_supported), |
104 peer_supports_stateless_rejects_(false), | 104 peer_supports_stateless_rejects_(false), |
105 chlo_packet_size_(0), | 105 chlo_packet_size_(0), |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 return; | 156 return; |
157 } | 157 } |
158 | 158 |
159 CryptoUtils::HashHandshakeMessage(message, &chlo_hash_); | 159 CryptoUtils::HashHandshakeMessage(message, &chlo_hash_); |
160 | 160 |
161 std::unique_ptr<ValidateCallback> cb(new ValidateCallback(this)); | 161 std::unique_ptr<ValidateCallback> cb(new ValidateCallback(this)); |
162 validate_client_hello_cb_ = cb.get(); | 162 validate_client_hello_cb_ = cb.get(); |
163 crypto_config_->ValidateClientHello( | 163 crypto_config_->ValidateClientHello( |
164 message, session()->connection()->peer_address().address(), | 164 message, session()->connection()->peer_address().address(), |
165 session()->connection()->self_address().address(), version(), | 165 session()->connection()->self_address().address(), version(), |
166 session()->connection()->clock(), crypto_proof_, std::move(cb)); | 166 session()->connection()->clock(), signed_config_, std::move(cb)); |
167 } | 167 } |
168 | 168 |
169 void QuicCryptoServerStream::FinishProcessingHandshakeMessage( | 169 void QuicCryptoServerStream::FinishProcessingHandshakeMessage( |
170 scoped_refptr<ValidateClientHelloResultCallback::Result> result, | 170 scoped_refptr<ValidateClientHelloResultCallback::Result> result, |
171 std::unique_ptr<ProofSource::Details> details) { | 171 std::unique_ptr<ProofSource::Details> details) { |
172 const CryptoHandshakeMessage& message = result->client_hello; | 172 const CryptoHandshakeMessage& message = result->client_hello; |
173 | 173 |
174 // Clear the callback that got us here. | 174 // Clear the callback that got us here. |
175 DCHECK(validate_client_hello_cb_ != nullptr); | 175 DCHECK(validate_client_hello_cb_ != nullptr); |
176 validate_client_hello_cb_ = nullptr; | 176 validate_client_hello_cb_ = nullptr; |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
468 peer_supports_stateless_rejects_; | 468 peer_supports_stateless_rejects_; |
469 QuicConnection* connection = session()->connection(); | 469 QuicConnection* connection = session()->connection(); |
470 const QuicConnectionId server_designated_connection_id = | 470 const QuicConnectionId server_designated_connection_id = |
471 GenerateConnectionIdForReject(use_stateless_rejects_in_crypto_config); | 471 GenerateConnectionIdForReject(use_stateless_rejects_in_crypto_config); |
472 crypto_config_->ProcessClientHello( | 472 crypto_config_->ProcessClientHello( |
473 result, /*reject_only=*/false, connection->connection_id(), | 473 result, /*reject_only=*/false, connection->connection_id(), |
474 connection->self_address().address(), connection->peer_address(), | 474 connection->self_address().address(), connection->peer_address(), |
475 version(), connection->supported_versions(), | 475 version(), connection->supported_versions(), |
476 use_stateless_rejects_in_crypto_config, server_designated_connection_id, | 476 use_stateless_rejects_in_crypto_config, server_designated_connection_id, |
477 connection->clock(), connection->random_generator(), | 477 connection->clock(), connection->random_generator(), |
478 compressed_certs_cache_, crypto_negotiated_params_, crypto_proof_, | 478 compressed_certs_cache_, crypto_negotiated_params_, signed_config_, |
479 QuicCryptoStream::CryptoMessageFramingOverhead(version()), | 479 QuicCryptoStream::CryptoMessageFramingOverhead(version()), |
480 chlo_packet_size_, std::move(done_cb)); | 480 chlo_packet_size_, std::move(done_cb)); |
481 } | 481 } |
482 | 482 |
483 void QuicCryptoServerStream::OverrideQuicConfigDefaults(QuicConfig* config) {} | 483 void QuicCryptoServerStream::OverrideQuicConfigDefaults(QuicConfig* config) {} |
484 | 484 |
485 QuicCryptoServerStream::ValidateCallback::ValidateCallback( | 485 QuicCryptoServerStream::ValidateCallback::ValidateCallback( |
486 QuicCryptoServerStream* parent) | 486 QuicCryptoServerStream* parent) |
487 : parent_(parent) {} | 487 : parent_(parent) {} |
488 | 488 |
(...skipping 13 matching lines...) Expand all Loading... |
502 QuicConnectionId QuicCryptoServerStream::GenerateConnectionIdForReject( | 502 QuicConnectionId QuicCryptoServerStream::GenerateConnectionIdForReject( |
503 bool use_stateless_rejects) { | 503 bool use_stateless_rejects) { |
504 if (!use_stateless_rejects) { | 504 if (!use_stateless_rejects) { |
505 return 0; | 505 return 0; |
506 } | 506 } |
507 return helper_->GenerateConnectionIdForReject( | 507 return helper_->GenerateConnectionIdForReject( |
508 session()->connection()->connection_id()); | 508 session()->connection()->connection_id()); |
509 } | 509 } |
510 | 510 |
511 } // namespace net | 511 } // namespace net |
OLD | NEW |