| Index: net/quic/quic_crypto_client_stream.h
|
| diff --git a/net/quic/quic_crypto_client_stream.h b/net/quic/quic_crypto_client_stream.h
|
| index cd2e7da23d32c6b86e3b0f91eb2bb6b1cdfb6e6d..16f0da9efe4e28e57c1d256135b03bd11a167e82 100644
|
| --- a/net/quic/quic_crypto_client_stream.h
|
| +++ b/net/quic/quic_crypto_client_stream.h
|
| @@ -19,8 +19,6 @@
|
|
|
| namespace net {
|
|
|
| -class QuicClientSessionBase;
|
| -
|
| namespace test {
|
| class CryptoTestUtils;
|
| class QuicChromiumClientSessionPeer;
|
| @@ -28,7 +26,7 @@ class QuicChromiumClientSessionPeer;
|
|
|
| class NET_EXPORT_PRIVATE QuicCryptoClientStreamBase : public QuicCryptoStream {
|
| public:
|
| - explicit QuicCryptoClientStreamBase(QuicClientSessionBase* session);
|
| + explicit QuicCryptoClientStreamBase(QuicSession* session);
|
|
|
| ~QuicCryptoClientStreamBase() override{};
|
|
|
| @@ -51,10 +49,31 @@ class NET_EXPORT_PRIVATE QuicCryptoClientStream
|
| // the server being unwilling to send it without a valid source-address
|
| // token.
|
| static const int kMaxClientHellos = 3;
|
| +
|
| + // ProofHandler is an interface that handles callbacks from the crypto
|
| + // stream when the client has proof verification details of the server.
|
| + class NET_EXPORT_PRIVATE ProofHandler {
|
| + public:
|
| + virtual ~ProofHandler() {}
|
| +
|
| + // Called when the proof in |cached| is marked valid. If this is a secure
|
| + // QUIC session, then this will happen only after the proof verifier
|
| + // completes.
|
| + virtual void OnProofValid(
|
| + const QuicCryptoClientConfig::CachedState& cached) = 0;
|
| +
|
| + // Called when proof verification details become available, either because
|
| + // proof verification is complete, or when cached details are used. This
|
| + // will only be called for secure QUIC connections.
|
| + virtual void OnProofVerifyDetailsAvailable(
|
| + const ProofVerifyDetails& verify_details) = 0;
|
| + };
|
| +
|
| QuicCryptoClientStream(const QuicServerId& server_id,
|
| - QuicClientSessionBase* session,
|
| + QuicSession* session,
|
| ProofVerifyContext* verify_context,
|
| - QuicCryptoClientConfig* crypto_config);
|
| + QuicCryptoClientConfig* crypto_config,
|
| + ProofHandler* proof_handler);
|
|
|
| ~QuicCryptoClientStream() override;
|
|
|
| @@ -183,8 +202,6 @@ class NET_EXPORT_PRIVATE QuicCryptoClientStream
|
| // and the client config settings also allow sending a ChannelID.
|
| bool RequiresChannelID(QuicCryptoClientConfig::CachedState* cached);
|
|
|
| - QuicClientSessionBase* client_session();
|
| -
|
| State next_state_;
|
| // num_client_hellos_ contains the number of client hello messages that this
|
| // connection has sent.
|
| @@ -223,6 +240,9 @@ class NET_EXPORT_PRIVATE QuicCryptoClientStream
|
| // proof_verify_callback_ contains the callback object that we passed to an
|
| // asynchronous proof verification. The ProofVerifier owns this object.
|
| ProofVerifierCallbackImpl* proof_verify_callback_;
|
| + // proof_handler_ contains the callback object used by a quic client
|
| + // for proof verification. It is not owned by this class.
|
| + ProofHandler* proof_handler_;
|
|
|
| // These members are used to store the result of an asynchronous proof
|
| // verification. These members must not be used after
|
|
|