Improve decryption error logging This CL adds the decryption level to decryption failure logging. It helps debug tests by allowing us to see whether a decryption failure was expected. gfe-relnote: log-only change, not flag protected PiperOrigin-RevId: 304252053 Change-Id: Iab2970ab1ed6cbf4de7fd2fec0c34e0f3057707a
diff --git a/quic/core/quic_framer.cc b/quic/core/quic_framer.cc index d41b6b1..f900191 100644 --- a/quic/core/quic_framer.cc +++ b/quic/core/quic_framer.cc
@@ -1758,7 +1758,10 @@ visitor_->OnUndecryptablePacket( QuicEncryptedPacket(encrypted_reader->FullPayload()), decryption_level, has_decryption_key); - set_detailed_error("Unable to decrypt header protection."); + set_detailed_error(quiche::QuicheStrCat( + "Unable to decrypt ", EncryptionLevelToString(decryption_level), + " header protection", has_decryption_key ? "" : " (missing key)", + ".")); return RaiseError(QUIC_DECRYPTION_FAILURE); } RecordDroppedPacketReason(DroppedPacketReason::INVALID_PACKET_NUMBER); @@ -1823,7 +1826,13 @@ visitor_->OnUndecryptablePacket( QuicEncryptedPacket(encrypted_reader->FullPayload()), decryption_level, has_decryption_key); - set_detailed_error("Unable to decrypt payload."); + set_detailed_error(quiche::QuicheStrCat( + "Unable to decrypt ", EncryptionLevelToString(decryption_level), + " payload", + has_decryption_key || !version_.KnowsWhichDecrypterToUse() + ? "" + : " (missing key)", + ".")); RecordDroppedPacketReason(DroppedPacketReason::DECRYPTION_FAILURE); return RaiseError(QUIC_DECRYPTION_FAILURE); } @@ -1914,7 +1923,9 @@ QuicEncryptedPacket(encrypted_reader->FullPayload()), decryption_level, has_decryption_key); RecordDroppedPacketReason(DroppedPacketReason::DECRYPTION_FAILURE); - set_detailed_error("Unable to decrypt payload."); + set_detailed_error(quiche::QuicheStrCat( + "Unable to decrypt ", EncryptionLevelToString(decryption_level), + " payload.")); return RaiseError(QUIC_DECRYPTION_FAILURE); }
diff --git a/quic/core/quic_framer_test.cc b/quic/core/quic_framer_test.cc index 049b81e..813d4f6 100644 --- a/quic/core/quic_framer_test.cc +++ b/quic/core/quic_framer_test.cc
@@ -2399,7 +2399,8 @@ EXPECT_FALSE(framer_.ProcessPacket(encrypted)); if (framer_.version().HasHeaderProtection()) { EXPECT_THAT(framer_.error(), IsError(QUIC_DECRYPTION_FAILURE)); - EXPECT_EQ("Unable to decrypt header protection.", framer_.detailed_error()); + EXPECT_EQ("Unable to decrypt ENCRYPTION_ZERO_RTT header protection.", + framer_.detailed_error()); } else if (framer_.transport_version() >= QUIC_VERSION_46) { // Cannot read diversification nonce. EXPECT_THAT(framer_.error(), IsError(QUIC_INVALID_PACKET_HEADER));