| Index: net/quic/quic_crypto_client_stream.h
|
| ===================================================================
|
| --- net/quic/quic_crypto_client_stream.h (revision 280648)
|
| +++ net/quic/quic_crypto_client_stream.h (working copy)
|
| @@ -7,6 +7,7 @@
|
|
|
| #include <string>
|
|
|
| +#include "net/quic/crypto/channel_id.h"
|
| #include "net/quic/crypto/proof_verifier.h"
|
| #include "net/quic/crypto/quic_crypto_client_config.h"
|
| #include "net/quic/quic_config.h"
|
| @@ -44,6 +45,25 @@
|
| int num_sent_client_hellos() const;
|
|
|
| private:
|
| + // ChannelIDSourceCallbackImpl is passed as the callback method to
|
| + // GetChannelIDKey. The ChannelIDSource calls this class with the result of
|
| + // channel ID lookup when lookup is performed asynchronously.
|
| + class ChannelIDSourceCallbackImpl : public ChannelIDSourceCallback {
|
| + public:
|
| + explicit ChannelIDSourceCallbackImpl(QuicCryptoClientStream* stream);
|
| + virtual ~ChannelIDSourceCallbackImpl();
|
| +
|
| + // ChannelIDSourceCallback interface.
|
| + virtual void Run(scoped_ptr<ChannelIDKey>* channel_id_key) OVERRIDE;
|
| +
|
| + // Cancel causes any future callbacks to be ignored. It must be called on
|
| + // the same thread as the callback will be made on.
|
| + void Cancel();
|
| +
|
| + private:
|
| + QuicCryptoClientStream* stream_;
|
| + };
|
| +
|
| // ProofVerifierCallbackImpl is passed as the callback method to VerifyProof.
|
| // The ProofVerifier calls this class with the result of proof verification
|
| // when verification is performed asynchronously.
|
| @@ -66,7 +86,6 @@
|
| };
|
|
|
| friend class test::CryptoTestUtils;
|
| - friend class ProofVerifierCallbackImpl;
|
|
|
| enum State {
|
| STATE_IDLE,
|
| @@ -75,6 +94,8 @@
|
| STATE_RECV_REJ,
|
| STATE_VERIFY_PROOF,
|
| STATE_VERIFY_PROOF_COMPLETE,
|
| + STATE_GET_CHANNEL_ID,
|
| + STATE_GET_CHANNEL_ID_COMPLETE,
|
| STATE_RECV_SHLO,
|
| };
|
|
|
| @@ -86,6 +107,10 @@
|
| // OnProofValid() method.
|
| void SetCachedProofValid(QuicCryptoClientConfig::CachedState* cached);
|
|
|
| + // Returns true if the server crypto config in |cached| requires a ChannelID
|
| + // and the client config settings also allow sending a ChannelID.
|
| + bool RequiresChannelID(QuicCryptoClientConfig::CachedState* cached);
|
| +
|
| QuicClientSessionBase* client_session();
|
|
|
| State next_state_;
|
| @@ -103,6 +128,20 @@
|
| // Generation counter from QuicCryptoClientConfig's CachedState.
|
| uint64 generation_counter_;
|
|
|
| + // channel_id_source_callback_ contains the callback object that we passed
|
| + // to an asynchronous channel ID lookup. The ChannelIDSource owns this
|
| + // object.
|
| + ChannelIDSourceCallbackImpl* channel_id_source_callback_;
|
| +
|
| + // These members are used to store the result of an asynchronous channel ID
|
| + // lookup. These members must not be used after
|
| + // STATE_GET_CHANNEL_ID_COMPLETE.
|
| + scoped_ptr<ChannelIDKey> channel_id_key_;
|
| +
|
| + // verify_context_ contains the context object that we pass to asynchronous
|
| + // proof verifications.
|
| + scoped_ptr<ProofVerifyContext> verify_context_;
|
| +
|
| // proof_verify_callback_ contains the callback object that we passed to an
|
| // asynchronous proof verification. The ProofVerifier owns this object.
|
| ProofVerifierCallbackImpl* proof_verify_callback_;
|
| @@ -113,7 +152,6 @@
|
| bool verify_ok_;
|
| string verify_error_details_;
|
| scoped_ptr<ProofVerifyDetails> verify_details_;
|
| - scoped_ptr<ProofVerifyContext> verify_context_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(QuicCryptoClientStream);
|
| };
|
|
|