Use SSL_early_data_reason_string in EarlyDataReasonToString.
ssl_early_data_reason_t is an extensible enum. Maintaining a switch-case in
QUICHE means compile failures and general churn when BoringSSL adds new values,
switch to the newly-added SSL_early_data_reason_string function.
This is gated by a BORINGSSL_API_VERSION preprocessor check to smooth the
landing between downstream repositories. (QUICHE is incompatible with BoringSSL
HEAD due to the addition of ssl_early_data_reason_alps. This CL unblocks the
update.)
Once https://boringssl-review.googlesource.com/c/boringssl/+/43724 has rolled
into all downstream repositories, we can remove the preprocessor check.
PiperOrigin-RevId: 340322863
Change-Id: Ie139b5515ac2bc50f21c7cf682fa0f1a3993fd82
diff --git a/quic/core/crypto/crypto_utils.cc b/quic/core/crypto/crypto_utils.cc
index 8445a6c..904a3c4 100644
--- a/quic/core/crypto/crypto_utils.cc
+++ b/quic/core/crypto/crypto_utils.cc
@@ -737,6 +737,15 @@
// static
const char* CryptoUtils::EarlyDataReasonToString(
ssl_early_data_reason_t reason) {
+#if BORINGSSL_API_VERSION >= 12
+ const char* reason_string = SSL_early_data_reason_string(reason);
+ if (reason_string != nullptr) {
+ return reason_string;
+ }
+#else
+ // TODO(davidben): Remove this logic once
+ // https://boringssl-review.googlesource.com/c/boringssl/+/43724 has landed in
+ // downstream repositories.
switch (reason) {
RETURN_STRING_LITERAL(ssl_early_data_unknown);
RETURN_STRING_LITERAL(ssl_early_data_disabled);
@@ -753,6 +762,7 @@
RETURN_STRING_LITERAL(ssl_early_data_ticket_age_skew);
RETURN_STRING_LITERAL(ssl_early_data_quic_parameter_mismatch);
}
+#endif
QUIC_BUG_IF(reason < 0 || reason > ssl_early_data_reason_max_value)
<< "Unknown ssl_early_data_reason_t " << reason;
return "unknown ssl_early_data_reason_t";