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

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

Issue 1535363003: Switch to standard integer types in net/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: stddef Created 5 years 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
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 <stddef.h>
9 #include <stdint.h>
10
8 #include <map> 11 #include <map>
9 #include <string> 12 #include <string>
10 #include <vector> 13 #include <vector>
11 14
15 #include "base/macros.h"
12 #include "base/memory/ref_counted.h" 16 #include "base/memory/ref_counted.h"
13 #include "base/memory/scoped_ptr.h" 17 #include "base/memory/scoped_ptr.h"
14 #include "base/strings/string_piece.h" 18 #include "base/strings/string_piece.h"
15 #include "base/synchronization/lock.h" 19 #include "base/synchronization/lock.h"
16 #include "net/base/ip_address_number.h" 20 #include "net/base/ip_address_number.h"
17 #include "net/base/ip_endpoint.h" 21 #include "net/base/ip_endpoint.h"
18 #include "net/base/net_export.h" 22 #include "net/base/net_export.h"
19 #include "net/quic/crypto/crypto_handshake.h" 23 #include "net/quic/crypto/crypto_handshake.h"
20 #include "net/quic/crypto/crypto_handshake_message.h" 24 #include "net/quic/crypto/crypto_handshake_message.h"
21 #include "net/quic/crypto/crypto_protocol.h" 25 #include "net/quic/crypto/crypto_protocol.h"
(...skipping 28 matching lines...) Expand all
50 54
51 // Outputs from EvaluateClientHello. 55 // Outputs from EvaluateClientHello.
52 bool valid_source_address_token; 56 bool valid_source_address_token;
53 base::StringPiece sni; 57 base::StringPiece sni;
54 base::StringPiece client_nonce; 58 base::StringPiece client_nonce;
55 base::StringPiece server_nonce; 59 base::StringPiece server_nonce;
56 base::StringPiece user_agent_id; 60 base::StringPiece user_agent_id;
57 SourceAddressTokens source_address_tokens; 61 SourceAddressTokens source_address_tokens;
58 62
59 // Errors from EvaluateClientHello. 63 // Errors from EvaluateClientHello.
60 std::vector<uint32> reject_reasons; 64 std::vector<uint32_t> reject_reasons;
61 static_assert(sizeof(QuicTag) == sizeof(uint32), "header out of sync"); 65 static_assert(sizeof(QuicTag) == sizeof(uint32_t), "header out of sync");
62 }; 66 };
63 67
64 namespace test { 68 namespace test {
65 class QuicCryptoServerConfigPeer; 69 class QuicCryptoServerConfigPeer;
66 } // namespace test 70 } // namespace test
67 71
68 // Hook that allows application code to subscribe to primary config changes. 72 // Hook that allows application code to subscribe to primary config changes.
69 class PrimaryConfigChangedCallback { 73 class PrimaryConfigChangedCallback {
70 public: 74 public:
71 PrimaryConfigChangedCallback(); 75 PrimaryConfigChangedCallback();
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 // valid source-address token. 309 // valid source-address token.
306 void set_chlo_multiplier(size_t multiplier); 310 void set_chlo_multiplier(size_t multiplier);
307 311
308 // set_strike_register_no_startup_period configures the strike register to 312 // set_strike_register_no_startup_period configures the strike register to
309 // not have a startup period. 313 // not have a startup period.
310 void set_strike_register_no_startup_period(); 314 void set_strike_register_no_startup_period();
311 315
312 // set_strike_register_max_entries sets the maximum number of entries that 316 // set_strike_register_max_entries sets the maximum number of entries that
313 // the internal strike register will hold. If the strike register fills up 317 // the internal strike register will hold. If the strike register fills up
314 // then the oldest entries (by the client's clock) will be dropped. 318 // then the oldest entries (by the client's clock) will be dropped.
315 void set_strike_register_max_entries(uint32 max_entries); 319 void set_strike_register_max_entries(uint32_t max_entries);
316 320
317 // set_strike_register_window_secs sets the number of seconds around the 321 // set_strike_register_window_secs sets the number of seconds around the
318 // current time that the strike register will attempt to be authoritative 322 // current time that the strike register will attempt to be authoritative
319 // for. Setting a larger value allows for greater client clock-skew, but 323 // for. Setting a larger value allows for greater client clock-skew, but
320 // means that the quiescent startup period must be longer. 324 // means that the quiescent startup period must be longer.
321 void set_strike_register_window_secs(uint32 window_secs); 325 void set_strike_register_window_secs(uint32_t window_secs);
322 326
323 // set_source_address_token_future_secs sets the number of seconds into the 327 // set_source_address_token_future_secs sets the number of seconds into the
324 // future that source-address tokens will be accepted from. Since 328 // future that source-address tokens will be accepted from. Since
325 // source-address tokens are authenticated, this should only happen if 329 // source-address tokens are authenticated, this should only happen if
326 // another, valid server has clock-skew. 330 // another, valid server has clock-skew.
327 void set_source_address_token_future_secs(uint32 future_secs); 331 void set_source_address_token_future_secs(uint32_t future_secs);
328 332
329 // set_source_address_token_lifetime_secs sets the number of seconds that a 333 // set_source_address_token_lifetime_secs sets the number of seconds that a
330 // source-address token will be valid for. 334 // source-address token will be valid for.
331 void set_source_address_token_lifetime_secs(uint32 lifetime_secs); 335 void set_source_address_token_lifetime_secs(uint32_t lifetime_secs);
332 336
333 // set_server_nonce_strike_register_max_entries sets the number of entries in 337 // set_server_nonce_strike_register_max_entries sets the number of entries in
334 // the server-nonce strike-register. This is used to record that server nonce 338 // the server-nonce strike-register. This is used to record that server nonce
335 // values have been used. If the number of entries is too small then clients 339 // values have been used. If the number of entries is too small then clients
336 // which are depending on server nonces may fail to handshake because their 340 // which are depending on server nonces may fail to handshake because their
337 // nonce has expired in the amount of time it took to go from the server to 341 // nonce has expired in the amount of time it took to go from the server to
338 // the client and back. 342 // the client and back.
339 void set_server_nonce_strike_register_max_entries(uint32 max_entries); 343 void set_server_nonce_strike_register_max_entries(uint32_t max_entries);
340 344
341 // set_server_nonce_strike_register_window_secs sets the number of seconds 345 // set_server_nonce_strike_register_window_secs sets the number of seconds
342 // around the current time that the server-nonce strike-register will accept 346 // around the current time that the server-nonce strike-register will accept
343 // nonces from. Setting a larger value allows for clients to delay follow-up 347 // nonces from. Setting a larger value allows for clients to delay follow-up
344 // client hellos for longer and still use server nonces as proofs of 348 // client hellos for longer and still use server nonces as proofs of
345 // uniqueness. 349 // uniqueness.
346 void set_server_nonce_strike_register_window_secs(uint32 window_secs); 350 void set_server_nonce_strike_register_window_secs(uint32_t window_secs);
347 351
348 // set_enable_serving_sct enables or disables serving signed cert timestamp 352 // set_enable_serving_sct enables or disables serving signed cert timestamp
349 // (RFC6962) in server hello. 353 // (RFC6962) in server hello.
350 void set_enable_serving_sct(bool enable_serving_sct); 354 void set_enable_serving_sct(bool enable_serving_sct);
351 355
352 // Set and take ownership of the callback to invoke on primary config changes. 356 // Set and take ownership of the callback to invoke on primary config changes.
353 void AcquirePrimaryConfigChangedCb(PrimaryConfigChangedCallback* cb); 357 void AcquirePrimaryConfigChangedCb(PrimaryConfigChangedCallback* cb);
354 358
355 // Returns the number of configs this object owns. 359 // Returns the number of configs this object owns.
356 int NumberOfConfigs() const; 360 int NumberOfConfigs() const;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 bool is_primary; 397 bool is_primary;
394 398
395 // primary_time contains the timestamp when this config should become the 399 // primary_time contains the timestamp when this config should become the
396 // primary config. A value of QuicWallTime::Zero() means that this config 400 // primary config. A value of QuicWallTime::Zero() means that this config
397 // will not be promoted at a specific time. 401 // will not be promoted at a specific time.
398 QuicWallTime primary_time; 402 QuicWallTime primary_time;
399 403
400 // Secondary sort key for use when selecting primary configs and 404 // Secondary sort key for use when selecting primary configs and
401 // there are multiple configs with the same primary time. 405 // there are multiple configs with the same primary time.
402 // Smaller numbers mean higher priority. 406 // Smaller numbers mean higher priority.
403 uint64 priority; 407 uint64_t priority;
404 408
405 // source_address_token_boxer_ is used to protect the 409 // source_address_token_boxer_ is used to protect the
406 // source-address tokens that are given to clients. 410 // source-address tokens that are given to clients.
407 // Points to either source_address_token_boxer_storage or the 411 // Points to either source_address_token_boxer_storage or the
408 // default boxer provided by QuicCryptoServerConfig. 412 // default boxer provided by QuicCryptoServerConfig.
409 const CryptoSecretBoxer* source_address_token_boxer; 413 const CryptoSecretBoxer* source_address_token_boxer;
410 414
411 // Holds the override source_address_token_boxer instance if the 415 // Holds the override source_address_token_boxer instance if the
412 // Config is not using the default source address token boxer 416 // Config is not using the default source address token boxer
413 // instance provided by QuicCryptoServerConfig. 417 // instance provided by QuicCryptoServerConfig.
(...skipping 21 matching lines...) Expand all
435 // SelectNewPrimaryConfig reevaluates the primary config based on the 439 // SelectNewPrimaryConfig reevaluates the primary config based on the
436 // "primary_time" deadlines contained in each. 440 // "primary_time" deadlines contained in each.
437 void SelectNewPrimaryConfig(QuicWallTime now) const; 441 void SelectNewPrimaryConfig(QuicWallTime now) const;
438 442
439 // EvaluateClientHello checks |client_hello| for gross errors and determines 443 // EvaluateClientHello checks |client_hello| for gross errors and determines
440 // whether it can be shown to be fresh (i.e. not a replay). The results are 444 // whether it can be shown to be fresh (i.e. not a replay). The results are
441 // written to |info|. 445 // written to |info|.
442 void EvaluateClientHello( 446 void EvaluateClientHello(
443 const IPAddressNumber& server_ip, 447 const IPAddressNumber& server_ip,
444 QuicVersion version, 448 QuicVersion version,
445 const uint8* primary_orbit, 449 const uint8_t* primary_orbit,
446 scoped_refptr<Config> requested_config, 450 scoped_refptr<Config> requested_config,
447 scoped_refptr<Config> primary_config, 451 scoped_refptr<Config> primary_config,
448 QuicCryptoProof* crypto_proof, 452 QuicCryptoProof* crypto_proof,
449 ValidateClientHelloResultCallback::Result* client_hello_state, 453 ValidateClientHelloResultCallback::Result* client_hello_state,
450 ValidateClientHelloResultCallback* done_cb) const; 454 ValidateClientHelloResultCallback* done_cb) const;
451 455
452 // BuildRejection sets |out| to be a REJ message in reply to |client_hello|. 456 // BuildRejection sets |out| to be a REJ message in reply to |client_hello|.
453 void BuildRejection(QuicVersion version, 457 void BuildRejection(QuicVersion version,
454 const Config& config, 458 const Config& config,
455 const CryptoHandshakeMessage& client_hello, 459 const CryptoHandshakeMessage& client_hello,
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 // configs may use boxers with alternate secrets. 582 // configs may use boxers with alternate secrets.
579 CryptoSecretBoxer default_source_address_token_boxer_; 583 CryptoSecretBoxer default_source_address_token_boxer_;
580 584
581 // server_nonce_boxer_ is used to encrypt and validate suggested server 585 // server_nonce_boxer_ is used to encrypt and validate suggested server
582 // nonces. 586 // nonces.
583 CryptoSecretBoxer server_nonce_boxer_; 587 CryptoSecretBoxer server_nonce_boxer_;
584 588
585 // server_nonce_orbit_ contains the random, per-server orbit values that this 589 // server_nonce_orbit_ contains the random, per-server orbit values that this
586 // server will use to generate server nonces (the moral equivalent of a SYN 590 // server will use to generate server nonces (the moral equivalent of a SYN
587 // cookies). 591 // cookies).
588 uint8 server_nonce_orbit_[8]; 592 uint8_t server_nonce_orbit_[8];
589 593
590 mutable base::Lock server_nonce_strike_register_lock_; 594 mutable base::Lock server_nonce_strike_register_lock_;
591 // server_nonce_strike_register_ contains a data structure that keeps track of 595 // server_nonce_strike_register_ contains a data structure that keeps track of
592 // previously observed server nonces from this server, in order to prevent 596 // previously observed server nonces from this server, in order to prevent
593 // replay attacks. 597 // replay attacks.
594 mutable scoped_ptr<StrikeRegister> server_nonce_strike_register_; 598 mutable scoped_ptr<StrikeRegister> server_nonce_strike_register_;
595 599
596 // proof_source_ contains an object that can provide certificate chains and 600 // proof_source_ contains an object that can provide certificate chains and
597 // signatures. 601 // signatures.
598 scoped_ptr<ProofSource> proof_source_; 602 scoped_ptr<ProofSource> proof_source_;
599 603
600 // ephemeral_key_source_ contains an object that caches ephemeral keys for a 604 // ephemeral_key_source_ contains an object that caches ephemeral keys for a
601 // short period of time. 605 // short period of time.
602 scoped_ptr<EphemeralKeySource> ephemeral_key_source_; 606 scoped_ptr<EphemeralKeySource> ephemeral_key_source_;
603 607
604 // These fields store configuration values. See the comments for their 608 // These fields store configuration values. See the comments for their
605 // respective setter functions. 609 // respective setter functions.
606 bool strike_register_no_startup_period_; 610 bool strike_register_no_startup_period_;
607 uint32 strike_register_max_entries_; 611 uint32_t strike_register_max_entries_;
608 uint32 strike_register_window_secs_; 612 uint32_t strike_register_window_secs_;
609 uint32 source_address_token_future_secs_; 613 uint32_t source_address_token_future_secs_;
610 uint32 source_address_token_lifetime_secs_; 614 uint32_t source_address_token_lifetime_secs_;
611 uint32 server_nonce_strike_register_max_entries_; 615 uint32_t server_nonce_strike_register_max_entries_;
612 uint32 server_nonce_strike_register_window_secs_; 616 uint32_t server_nonce_strike_register_window_secs_;
613 617
614 // Enable serving SCT or not. 618 // Enable serving SCT or not.
615 bool enable_serving_sct_; 619 bool enable_serving_sct_;
616 620
617 DISALLOW_COPY_AND_ASSIGN(QuicCryptoServerConfig); 621 DISALLOW_COPY_AND_ASSIGN(QuicCryptoServerConfig);
618 }; 622 };
619 623
620 } // namespace net 624 } // namespace net
621 625
622 #endif // NET_QUIC_CRYPTO_QUIC_CRYPTO_SERVER_CONFIG_H_ 626 #endif // NET_QUIC_CRYPTO_QUIC_CRYPTO_SERVER_CONFIG_H_
OLDNEW
« no previous file with comments | « net/quic/crypto/quic_crypto_client_config_test.cc ('k') | net/quic/crypto/quic_crypto_server_config.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698