Commit 38442e01 authored by Kyle Nekritz's avatar Kyle Nekritz Committed by Facebook Github Bot

Log supported versions extension in AsyncSSLSocket.

Summary: To monitor client support of TLS 1.3.

Reviewed By: ngoyal

Differential Revision: D4308473

fbshipit-source-id: cb6fb444c8b7ced39e6655a0f63b18523c2fb9c5
parent c80831a5
......@@ -1697,6 +1697,14 @@ void AsyncSSLSocket::clientHelloParsingCallback(int written,
sock->clientHelloInfo_->
clientHelloSigAlgs_.emplace_back(hashAlg, sigAlg);
}
} else if (extensionType == ssl::TLSExtension::SUPPORTED_VERSIONS) {
cursor.skip(1);
extensionDataLength -= 1;
while (extensionDataLength) {
sock->clientHelloInfo_->clientHelloSupportedVersions_.push_back(
cursor.readBE<uint16_t>());
extensionDataLength -= 2;
}
} else {
cursor.skip(extensionDataLength);
}
......@@ -1790,6 +1798,13 @@ std::string AsyncSSLSocket::getSSLClientSigAlgs() const {
return sigAlgs;
}
std::string AsyncSSLSocket::getSSLClientSupportedVersions() const {
if (!parseClientHello_) {
return "";
}
return folly::join(":", clientHelloInfo_->clientHelloSupportedVersions_);
}
std::string AsyncSSLSocket::getSSLAlertsReceived() const {
std::string ret;
......
......@@ -561,6 +561,12 @@ class AsyncSSLSocket : public virtual AsyncSocket {
std::string getSSLClientSigAlgs() const;
/**
* Get the list of versions in the supported versions extension (used to
* negotiate TLS 1.3).
*/
std::string getSSLClientSupportedVersions() const;
std::string getSSLAlertsReceived() const;
/**
......
......@@ -51,6 +51,7 @@ enum class TLSExtension : uint16_t {
ENCRYPT_THEN_MAC = 22,
EXTENDED_MASTER_SECRET = 23,
SESSION_TICKET = 35,
SUPPORTED_VERSIONS = 43,
// Facebook-specific, not IANA assigned yet
TLS_CACHED_INFO_FB = 60001,
// End Facebook-specific
......@@ -84,6 +85,7 @@ struct ClientHelloInfo {
std::vector<uint8_t> clientHelloCompressionMethods_;
std::vector<TLSExtension> clientHelloExtensions_;
std::vector<std::pair<HashAlgorithm, SignatureAlgorithm>> clientHelloSigAlgs_;
std::vector<uint16_t> clientHelloSupportedVersions_;
};
} // ssl
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment