Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(302)

Side by Side Diff: net/quic/crypto/quic_crypto_client_config.h

Issue 192583004: QUIC - use QuicSessionKey tuple (host, port, is_https) instead of server_hostname (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use QuicSessionKey as arg and delete server_hostname as arg Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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_CLIENT_CONFIG_H_ 5 #ifndef NET_QUIC_CRYPTO_QUIC_CRYPTO_CLIENT_CONFIG_H_
6 #define NET_QUIC_CRYPTO_QUIC_CRYPTO_CLIENT_CONFIG_H_ 6 #define NET_QUIC_CRYPTO_QUIC_CRYPTO_CLIENT_CONFIG_H_
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "base/strings/string_piece.h" 13 #include "base/strings/string_piece.h"
14 #include "net/base/net_export.h" 14 #include "net/base/net_export.h"
15 #include "net/quic/crypto/crypto_handshake.h" 15 #include "net/quic/crypto/crypto_handshake.h"
16 #include "net/quic/quic_protocol.h" 16 #include "net/quic/quic_protocol.h"
17 17
18 namespace net { 18 namespace net {
19 19
20 class ChannelIDSigner; 20 class ChannelIDSigner;
21 class CryptoHandshakeMessage; 21 class CryptoHandshakeMessage;
22 class ProofVerifier; 22 class ProofVerifier;
23 class ProofVerifyDetails; 23 class ProofVerifyDetails;
24 class QuicRandom; 24 class QuicRandom;
25 class QuicServerInfo; 25 class QuicServerInfo;
26 class QuicServerInfoFactory; 26 class QuicServerInfoFactory;
27 class QuicSessionKey;
27 28
28 // QuicCryptoClientConfig contains crypto-related configuration settings for a 29 // QuicCryptoClientConfig contains crypto-related configuration settings for a
29 // client. Note that this object isn't thread-safe. It's designed to be used on 30 // client. Note that this object isn't thread-safe. It's designed to be used on
30 // a single thread at a time. 31 // a single thread at a time.
31 class NET_EXPORT_PRIVATE QuicCryptoClientConfig : public QuicCryptoConfig { 32 class NET_EXPORT_PRIVATE QuicCryptoClientConfig : public QuicCryptoConfig {
32 public: 33 public:
33 // A CachedState contains the information that the client needs in order to 34 // A CachedState contains the information that the client needs in order to
34 // perform a 0-RTT handshake with a server. This information can be reused 35 // perform a 0-RTT handshake with a server. This information can be reused
35 // over several connections to the same server. 36 // over several connections to the same server.
36 class NET_EXPORT_PRIVATE CachedState { 37 class NET_EXPORT_PRIVATE CachedState {
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 137
137 DISALLOW_COPY_AND_ASSIGN(CachedState); 138 DISALLOW_COPY_AND_ASSIGN(CachedState);
138 }; 139 };
139 140
140 QuicCryptoClientConfig(); 141 QuicCryptoClientConfig();
141 ~QuicCryptoClientConfig(); 142 ~QuicCryptoClientConfig();
142 143
143 // Sets the members to reasonable, default values. 144 // Sets the members to reasonable, default values.
144 void SetDefaults(); 145 void SetDefaults();
145 146
146 // Create returns a CachedState for the given hostname. It creates a 147 // Create returns a CachedState for the given |server_key|. It creates a
147 // CachedState and caches it. If |quic_server_info_factory| is not NULL, then 148 // CachedState and caches it. If |quic_server_info_factory| is not NULL, then
148 // it is used to create QuicServerInfo which is used to fetch crypto config 149 // it is used to create QuicServerInfo which is used to fetch crypto config
149 // information from disk for the given hostname. 150 // information from disk for the given |server_key|.
150 CachedState* Create(const std::string& server_hostname, 151 CachedState* Create(const QuicSessionKey& server_key,
151 QuicServerInfoFactory* quic_server_info_factory); 152 QuicServerInfoFactory* quic_server_info_factory);
152 153
153 // LookupOrCreate returns a CachedState for the given hostname. If no such 154 // LookupOrCreate returns a CachedState for the given |server_key|. If no such
154 // CachedState currently exists, it will be created and cached. 155 // CachedState currently exists, it will be created and cached.
155 // TODO(rtenneti): fix the server code and pass QuicServerInfoFactory as 156 // TODO(rtenneti): fix the server code and pass QuicServerInfoFactory as
156 // argument. 157 // argument.
157 CachedState* LookupOrCreate(const std::string& server_hostname); 158 CachedState* LookupOrCreate(const QuicSessionKey& server_key);
158 159
159 // FillInchoateClientHello sets |out| to be a CHLO message that elicits a 160 // FillInchoateClientHello sets |out| to be a CHLO message that elicits a
160 // source-address token or SCFG from a server. If |cached| is non-NULL, the 161 // source-address token or SCFG from a server. If |cached| is non-NULL, the
161 // source-address token will be taken from it. |out_params| is used in order 162 // source-address token will be taken from it. |out_params| is used in order
162 // to store the cached certs that were sent as hints to the server in 163 // to store the cached certs that were sent as hints to the server in
163 // |out_params->cached_certs|. |preferred_version| is the version of the 164 // |out_params->cached_certs|. |preferred_version| is the version of the
164 // QUIC protocol that this client chose to use initially. This allows the 165 // QUIC protocol that this client chose to use initially. This allows the
165 // server to detect downgrade attacks. 166 // server to detect downgrade attacks.
166 void FillInchoateClientHello(const std::string& server_hostname, 167 void FillInchoateClientHello(const std::string& server_hostname,
167 const QuicVersion preferred_version, 168 const QuicVersion preferred_version,
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 void SetProofVerifier(ProofVerifier* verifier); 226 void SetProofVerifier(ProofVerifier* verifier);
226 227
227 ChannelIDSigner* channel_id_signer() const; 228 ChannelIDSigner* channel_id_signer() const;
228 229
229 // SetChannelIDSigner sets a ChannelIDSigner that will be called when the 230 // SetChannelIDSigner sets a ChannelIDSigner that will be called when the
230 // server supports channel IDs to sign a message proving possession of the 231 // server supports channel IDs to sign a message proving possession of the
231 // given ChannelID. This object takes ownership of |signer|. 232 // given ChannelID. This object takes ownership of |signer|.
232 void SetChannelIDSigner(ChannelIDSigner* signer); 233 void SetChannelIDSigner(ChannelIDSigner* signer);
233 234
234 // Initialize the CachedState from |canonical_crypto_config| for the 235 // Initialize the CachedState from |canonical_crypto_config| for the
235 // |canonical_server_hostname| as the initial CachedState for 236 // |canonical_server_key| as the initial CachedState for |server_key|. We will
236 // |server_hostname|. We will copy config data only if 237 // copy config data only if |canonical_crypto_config| has valid proof.
237 // |canonical_crypto_config| has valid proof. 238 void InitializeFrom(const QuicSessionKey& server_key,
238 void InitializeFrom(const std::string& server_hostname, 239 const QuicSessionKey& canonical_server_key,
239 const std::string& canonical_server_hostname,
240 QuicCryptoClientConfig* canonical_crypto_config); 240 QuicCryptoClientConfig* canonical_crypto_config);
241 241
242 private: 242 private:
243 // cached_states_ maps from the server hostname to the cached information 243 // cached_states_ maps from the server_key to the cached information about
244 // about that server. 244 // that server.
245 std::map<std::string, CachedState*> cached_states_; 245 std::map<QuicSessionKey, CachedState*> cached_states_;
246 246
247 scoped_ptr<ProofVerifier> proof_verifier_; 247 scoped_ptr<ProofVerifier> proof_verifier_;
248 scoped_ptr<ChannelIDSigner> channel_id_signer_; 248 scoped_ptr<ChannelIDSigner> channel_id_signer_;
249 249
250 DISALLOW_COPY_AND_ASSIGN(QuicCryptoClientConfig); 250 DISALLOW_COPY_AND_ASSIGN(QuicCryptoClientConfig);
251 }; 251 };
252 252
253 } // namespace net 253 } // namespace net
254 254
255 #endif // NET_QUIC_CRYPTO_QUIC_CRYPTO_CLIENT_CONFIG_H_ 255 #endif // NET_QUIC_CRYPTO_QUIC_CRYPTO_CLIENT_CONFIG_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698