Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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_CRYPTO_HANDSHAKE_H_ | 5 #ifndef NET_QUIC_CRYPTO_CRYPTO_HANDSHAKE_H_ |
| 6 #define NET_QUIC_CRYPTO_CRYPTO_HANDSHAKE_H_ | 6 #define NET_QUIC_CRYPTO_CRYPTO_HANDSHAKE_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 266 // SetProofValid records that the certificate chain and signature have been | 266 // SetProofValid records that the certificate chain and signature have been |
| 267 // validated and that it's safe to assume that the server is legitimate. | 267 // validated and that it's safe to assume that the server is legitimate. |
| 268 // (Note: this does not check the chain or signature.) | 268 // (Note: this does not check the chain or signature.) |
| 269 void SetProofValid(); | 269 void SetProofValid(); |
| 270 | 270 |
| 271 const std::string& server_config() const; | 271 const std::string& server_config() const; |
| 272 const std::string& source_address_token() const; | 272 const std::string& source_address_token() const; |
| 273 const std::vector<std::string>& certs() const; | 273 const std::vector<std::string>& certs() const; |
| 274 const std::string& signature() const; | 274 const std::string& signature() const; |
| 275 bool proof_valid() const; | 275 bool proof_valid() const; |
| 276 uint64 generation_counter() const; | |
| 276 | 277 |
| 277 void set_source_address_token(base::StringPiece token); | 278 void set_source_address_token(base::StringPiece token); |
| 278 | 279 |
| 279 private: | 280 private: |
| 280 std::string server_config_id_; // An opaque id from the server. | 281 std::string server_config_id_; // An opaque id from the server. |
| 281 std::string server_config_; // A serialized handshake message. | 282 std::string server_config_; // A serialized handshake message. |
| 282 std::string source_address_token_; // An opaque proof of IP ownership. | 283 std::string source_address_token_; // An opaque proof of IP ownership. |
| 283 std::vector<std::string> certs_; // A list of certificates in leaf-first | 284 std::vector<std::string> certs_; // A list of certificates in leaf-first |
| 284 // order. | 285 // order. |
| 285 std::string server_config_sig_; // A signature of |server_config_|. | 286 std::string server_config_sig_; // A signature of |server_config_|. |
| 286 bool server_config_valid_; // true if |server_config_| is correctly signed | 287 bool server_config_valid_; // True if |server_config_| is correctly |
| 287 // and |certs_| has been validated. | 288 // signed and |certs_| has been |
| 289 // validated. | |
| 290 uint64 generation_counter_; // Generation counter associated with | |
| 291 // the |server_config_|, |certs_| and | |
| 292 // |server_config_sig_| combination. | |
|
wtc
2013/07/03 00:20:26
Nit: it would be nice to point out that generation
ramant (doing other things)
2013/07/03 05:46:34
Done.
| |
| 288 | 293 |
| 289 // scfg contains the cached, parsed value of |server_config|. | 294 // scfg contains the cached, parsed value of |server_config|. |
| 290 mutable scoped_ptr<CryptoHandshakeMessage> scfg_; | 295 mutable scoped_ptr<CryptoHandshakeMessage> scfg_; |
| 291 }; | 296 }; |
| 292 | 297 |
| 293 QuicCryptoClientConfig(); | 298 QuicCryptoClientConfig(); |
| 294 ~QuicCryptoClientConfig(); | 299 ~QuicCryptoClientConfig(); |
| 295 | 300 |
| 296 // Sets the members to reasonable, default values. | 301 // Sets the members to reasonable, default values. |
| 297 void SetDefaults(); | 302 void SetDefaults(); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 341 | 346 |
| 342 // ProcessServerHello processes the message in |server_hello|, writes the | 347 // ProcessServerHello processes the message in |server_hello|, writes the |
| 343 // negotiated parameters to |out_params| and returns QUIC_NO_ERROR. If | 348 // negotiated parameters to |out_params| and returns QUIC_NO_ERROR. If |
| 344 // |server_hello| is unacceptable then it puts an error message in | 349 // |server_hello| is unacceptable then it puts an error message in |
| 345 // |error_details| and returns an error code. | 350 // |error_details| and returns an error code. |
| 346 QuicErrorCode ProcessServerHello(const CryptoHandshakeMessage& server_hello, | 351 QuicErrorCode ProcessServerHello(const CryptoHandshakeMessage& server_hello, |
| 347 QuicGuid guid, | 352 QuicGuid guid, |
| 348 QuicCryptoNegotiatedParameters* out_params, | 353 QuicCryptoNegotiatedParameters* out_params, |
| 349 std::string* error_details); | 354 std::string* error_details); |
| 350 | 355 |
| 351 const ProofVerifier* proof_verifier() const; | 356 ProofVerifier* proof_verifier() const; |
| 352 | 357 |
| 353 // SetProofVerifier takes ownership of a |ProofVerifier| that clients are | 358 // SetProofVerifier takes ownership of a |ProofVerifier| that clients are |
| 354 // free to use in order to verify certificate chains from servers. If a | 359 // free to use in order to verify certificate chains from servers. If a |
| 355 // ProofVerifier is set then the client will request a certificate chain from | 360 // ProofVerifier is set then the client will request a certificate chain from |
| 356 // the server. | 361 // the server. |
| 357 void SetProofVerifier(ProofVerifier* verifier); | 362 void SetProofVerifier(ProofVerifier* verifier); |
| 358 | 363 |
| 359 ChannelIDSigner* channel_id_signer() const; | 364 ChannelIDSigner* channel_id_signer() const; |
| 360 | 365 |
| 361 // SetChannelIDSigner sets a ChannelIDSigner that will be called when the | 366 // SetChannelIDSigner sets a ChannelIDSigner that will be called when the |
| 362 // server supports channel IDs to sign a message proving possession of the | 367 // server supports channel IDs to sign a message proving possession of the |
| 363 // given ChannelID. This object takes ownership of |signer|. | 368 // given ChannelID. This object takes ownership of |signer|. |
| 364 void SetChannelIDSigner(ChannelIDSigner* signer); | 369 void SetChannelIDSigner(ChannelIDSigner* signer); |
| 365 | 370 |
| 366 private: | 371 private: |
| 367 // cached_states_ maps from the server hostname to the cached information | 372 // cached_states_ maps from the server hostname to the cached information |
| 368 // about that server. | 373 // about that server. |
| 369 std::map<std::string, CachedState*> cached_states_; | 374 std::map<std::string, CachedState*> cached_states_; |
| 370 | 375 |
| 371 scoped_ptr<ProofVerifier> proof_verifier_; | 376 scoped_ptr<ProofVerifier> proof_verifier_; |
| 372 scoped_ptr<ChannelIDSigner> channel_id_signer_; | 377 scoped_ptr<ChannelIDSigner> channel_id_signer_; |
| 373 | 378 |
| 374 DISALLOW_COPY_AND_ASSIGN(QuicCryptoClientConfig); | 379 DISALLOW_COPY_AND_ASSIGN(QuicCryptoClientConfig); |
| 375 }; | 380 }; |
| 376 | 381 |
| 377 } // namespace net | 382 } // namespace net |
| 378 | 383 |
| 379 #endif // NET_QUIC_CRYPTO_CRYPTO_HANDSHAKE_H_ | 384 #endif // NET_QUIC_CRYPTO_CRYPTO_HANDSHAKE_H_ |
| OLD | NEW |