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

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

Issue 137423015: Export primary insecure and secure QUIC config id via internal server (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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
« no previous file with comments | « no previous file | net/quic/crypto/quic_crypto_server_config.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_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 <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 21 matching lines...) Expand all
32 class QuicServerConfigProtobuf; 32 class QuicServerConfigProtobuf;
33 class StrikeRegister; 33 class StrikeRegister;
34 class StrikeRegisterClient; 34 class StrikeRegisterClient;
35 35
36 struct ClientHelloInfo; 36 struct ClientHelloInfo;
37 37
38 namespace test { 38 namespace test {
39 class QuicCryptoServerConfigPeer; 39 class QuicCryptoServerConfigPeer;
40 } // namespace test 40 } // namespace test
41 41
42 // Hook that allows application code to subscribe to primary config changes.
43 class PrimaryConfigChangedCallback {
44 public:
45 PrimaryConfigChangedCallback();
46 virtual ~PrimaryConfigChangedCallback();
47 virtual void Run(const std::string& scid) = 0;
48 };
49
42 // Callback used to accept the result of the |client_hello| validation step. 50 // Callback used to accept the result of the |client_hello| validation step.
43 class NET_EXPORT_PRIVATE ValidateClientHelloResultCallback { 51 class NET_EXPORT_PRIVATE ValidateClientHelloResultCallback {
44 public: 52 public:
45 // Opaque token that holds information about the client_hello and 53 // Opaque token that holds information about the client_hello and
46 // its validity. Can be interpreted by calling ProcessClientHello. 54 // its validity. Can be interpreted by calling ProcessClientHello.
47 struct Result; 55 struct Result;
48 56
49 ValidateClientHelloResultCallback(); 57 ValidateClientHelloResultCallback();
50 virtual ~ValidateClientHelloResultCallback(); 58 virtual ~ValidateClientHelloResultCallback();
51 void Run(const Result* result); 59 void Run(const Result* result);
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 // the client and back. 258 // the client and back.
251 void set_server_nonce_strike_register_max_entries(uint32 max_entries); 259 void set_server_nonce_strike_register_max_entries(uint32 max_entries);
252 260
253 // set_server_nonce_strike_register_window_secs sets the number of seconds 261 // set_server_nonce_strike_register_window_secs sets the number of seconds
254 // around the current time that the server-nonce strike-register will accept 262 // around the current time that the server-nonce strike-register will accept
255 // nonces from. Setting a larger value allows for clients to delay follow-up 263 // nonces from. Setting a larger value allows for clients to delay follow-up
256 // client hellos for longer and still use server nonces as proofs of 264 // client hellos for longer and still use server nonces as proofs of
257 // uniqueness. 265 // uniqueness.
258 void set_server_nonce_strike_register_window_secs(uint32 window_secs); 266 void set_server_nonce_strike_register_window_secs(uint32 window_secs);
259 267
268 // Set and take ownership of the callback to invoke on primary config changes.
269 void AcquirePrimaryConfigChangedCb(PrimaryConfigChangedCallback* cb);
270
260 private: 271 private:
261 friend class test::QuicCryptoServerConfigPeer; 272 friend class test::QuicCryptoServerConfigPeer;
262 273
263 // Config represents a server config: a collection of preferences and 274 // Config represents a server config: a collection of preferences and
264 // Diffie-Hellman public values. 275 // Diffie-Hellman public values.
265 class NET_EXPORT_PRIVATE Config : public QuicCryptoConfig, 276 class NET_EXPORT_PRIVATE Config : public QuicCryptoConfig,
266 public base::RefCounted<Config> { 277 public base::RefCounted<Config> {
267 public: 278 public:
268 Config(); 279 Config();
269 280
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 mutable base::Lock configs_lock_; 389 mutable base::Lock configs_lock_;
379 // configs_ contains all active server configs. It's expected that there are 390 // configs_ contains all active server configs. It's expected that there are
380 // about half-a-dozen configs active at any one time. 391 // about half-a-dozen configs active at any one time.
381 ConfigMap configs_; 392 ConfigMap configs_;
382 // primary_config_ points to a Config (which is also in |configs_|) which is 393 // primary_config_ points to a Config (which is also in |configs_|) which is
383 // the primary config - i.e. the one that we'll give out to new clients. 394 // the primary config - i.e. the one that we'll give out to new clients.
384 mutable scoped_refptr<Config> primary_config_; 395 mutable scoped_refptr<Config> primary_config_;
385 // next_config_promotion_time_ contains the nearest, future time when an 396 // next_config_promotion_time_ contains the nearest, future time when an
386 // active config will be promoted to primary. 397 // active config will be promoted to primary.
387 mutable QuicWallTime next_config_promotion_time_; 398 mutable QuicWallTime next_config_promotion_time_;
399 // Callback to invoke when the primary config changes.
400 scoped_ptr<PrimaryConfigChangedCallback> primary_config_changed_cb_;
388 401
389 // Protects access to the pointer held by strike_register_client_. 402 // Protects access to the pointer held by strike_register_client_.
390 mutable base::Lock strike_register_client_lock_; 403 mutable base::Lock strike_register_client_lock_;
391 // strike_register_ contains a data structure that keeps track of previously 404 // strike_register_ contains a data structure that keeps track of previously
392 // observed client nonces in order to prevent replay attacks. 405 // observed client nonces in order to prevent replay attacks.
393 mutable scoped_ptr<StrikeRegisterClient> strike_register_client_; 406 mutable scoped_ptr<StrikeRegisterClient> strike_register_client_;
394 407
395 // source_address_token_boxer_ is used to protect the source-address tokens 408 // source_address_token_boxer_ is used to protect the source-address tokens
396 // that are given to clients. 409 // that are given to clients.
397 CryptoSecretBoxer source_address_token_boxer_; 410 CryptoSecretBoxer source_address_token_boxer_;
(...skipping 28 matching lines...) Expand all
426 uint32 strike_register_window_secs_; 439 uint32 strike_register_window_secs_;
427 uint32 source_address_token_future_secs_; 440 uint32 source_address_token_future_secs_;
428 uint32 source_address_token_lifetime_secs_; 441 uint32 source_address_token_lifetime_secs_;
429 uint32 server_nonce_strike_register_max_entries_; 442 uint32 server_nonce_strike_register_max_entries_;
430 uint32 server_nonce_strike_register_window_secs_; 443 uint32 server_nonce_strike_register_window_secs_;
431 }; 444 };
432 445
433 } // namespace net 446 } // namespace net
434 447
435 #endif // NET_QUIC_CRYPTO_QUIC_CRYPTO_SERVER_CONFIG_H_ 448 #endif // NET_QUIC_CRYPTO_QUIC_CRYPTO_SERVER_CONFIG_H_
OLDNEW
« no previous file with comments | « no previous file | net/quic/crypto/quic_crypto_server_config.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698