Add IsResumption method to QUIC client handshakers
gfe-relnote: no behavior change: adding unused method
PiperOrigin-RevId: 279141655
Change-Id: Icfe08baf904b37a702c73c071334b11bb6cf2234
diff --git a/quic/core/quic_crypto_client_handshaker.cc b/quic/core/quic_crypto_client_handshaker.cc
index 1f63042..a6f531a 100644
--- a/quic/core/quic_crypto_client_handshaker.cc
+++ b/quic/core/quic_crypto_client_handshaker.cc
@@ -116,6 +116,13 @@
return num_client_hellos_;
}
+bool QuicCryptoClientHandshaker::IsResumption() const {
+ QUIC_BUG_IF(!handshake_confirmed_);
+ // While 0-RTT handshakes could be considered to be like resumption, QUIC
+ // Crypto doesn't have the same notion of a resumption like TLS does.
+ return false;
+}
+
int QuicCryptoClientHandshaker::num_scup_messages_received() const {
return num_scup_messages_received_;
}
diff --git a/quic/core/quic_crypto_client_handshaker.h b/quic/core/quic_crypto_client_handshaker.h
index f880fb3..bce4ab3 100644
--- a/quic/core/quic_crypto_client_handshaker.h
+++ b/quic/core/quic_crypto_client_handshaker.h
@@ -37,6 +37,7 @@
// From QuicCryptoClientStream::HandshakerDelegate
bool CryptoConnect() override;
int num_sent_client_hellos() const override;
+ bool IsResumption() const override;
int num_scup_messages_received() const override;
std::string chlo_hash() const override;
bool encryption_established() const override;
diff --git a/quic/core/quic_crypto_client_stream.cc b/quic/core/quic_crypto_client_stream.cc
index 12b538f..354debb 100644
--- a/quic/core/quic_crypto_client_stream.cc
+++ b/quic/core/quic_crypto_client_stream.cc
@@ -63,6 +63,10 @@
return handshaker_->num_sent_client_hellos();
}
+bool QuicCryptoClientStream::IsResumption() const {
+ return handshaker_->IsResumption();
+}
+
int QuicCryptoClientStream::num_scup_messages_received() const {
return handshaker_->num_scup_messages_received();
}
diff --git a/quic/core/quic_crypto_client_stream.h b/quic/core/quic_crypto_client_stream.h
index 89f0d2e..d175ece 100644
--- a/quic/core/quic_crypto_client_stream.h
+++ b/quic/core/quic_crypto_client_stream.h
@@ -35,6 +35,13 @@
// than the number of round-trips needed for the handshake.
virtual int num_sent_client_hellos() const = 0;
+ // Returns true if the handshake performed was a resumption instead of a full
+ // handshake. Resumption only makes sense for TLS handshakes - there is no
+ // concept of resumption for QUIC crypto even though it supports a 0-RTT
+ // handshake. This function only returns valid results once the handshake is
+ // complete.
+ virtual bool IsResumption() const = 0;
+
// The number of server config update messages received by the
// client. Does not count update messages that were received prior
// to handshake confirmation.
@@ -79,6 +86,13 @@
// than the number of round-trips needed for the handshake.
virtual int num_sent_client_hellos() const = 0;
+ // Returns true if the handshake performed was a resumption instead of a
+ // full handshake. Resumption only makes sense for TLS handshakes - there is
+ // no concept of resumption for QUIC crypto even though it supports a 0-RTT
+ // handshake. This function only returns valid results once the handshake is
+ // complete.
+ virtual bool IsResumption() const = 0;
+
// The number of server config update messages received by the
// client. Does not count update messages that were received prior
// to handshake confirmation.
@@ -137,6 +151,7 @@
// From QuicCryptoClientStreamBase
bool CryptoConnect() override;
int num_sent_client_hellos() const override;
+ bool IsResumption() const override;
int num_scup_messages_received() const override;
diff --git a/quic/core/quic_crypto_client_stream_test.cc b/quic/core/quic_crypto_client_stream_test.cc
index 8e1ef25..2622439 100644
--- a/quic/core/quic_crypto_client_stream_test.cc
+++ b/quic/core/quic_crypto_client_stream_test.cc
@@ -93,6 +93,7 @@
CompleteCryptoHandshake();
EXPECT_TRUE(stream()->encryption_established());
EXPECT_TRUE(stream()->handshake_confirmed());
+ EXPECT_FALSE(stream()->IsResumption());
}
TEST_F(QuicCryptoClientStreamTest, ConnectedAfterTlsHandshake) {
@@ -109,6 +110,7 @@
EXPECT_EQ(PROTOCOL_TLS1_3, stream()->handshake_protocol());
EXPECT_TRUE(stream()->encryption_established());
EXPECT_TRUE(stream()->handshake_confirmed());
+ EXPECT_FALSE(stream()->IsResumption());
}
TEST_F(QuicCryptoClientStreamTest,
diff --git a/quic/core/tls_client_handshaker.cc b/quic/core/tls_client_handshaker.cc
index 749d15f..2056953 100644
--- a/quic/core/tls_client_handshaker.cc
+++ b/quic/core/tls_client_handshaker.cc
@@ -197,6 +197,12 @@
return 0;
}
+bool TlsClientHandshaker::IsResumption() const {
+ QUIC_BUG_IF(!handshake_confirmed_);
+ // We don't support resumption (yet).
+ return false;
+}
+
int TlsClientHandshaker::num_scup_messages_received() const {
// SCUP messages aren't sent or received when using the TLS handshake.
return 0;
diff --git a/quic/core/tls_client_handshaker.h b/quic/core/tls_client_handshaker.h
index ad7939b..17b529e 100644
--- a/quic/core/tls_client_handshaker.h
+++ b/quic/core/tls_client_handshaker.h
@@ -40,6 +40,7 @@
// From QuicCryptoClientStream::HandshakerDelegate
bool CryptoConnect() override;
int num_sent_client_hellos() const override;
+ bool IsResumption() const override;
int num_scup_messages_received() const override;
std::string chlo_hash() const override;