1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 20:07:36 +00:00

LibTLS: Rename AlertLevel Critial to FATAL

This matches the wording used in the TLS RFC
This commit is contained in:
stelar7 2023-04-13 23:56:52 +02:00 committed by Sam Atkins
parent ca6b8bfe7f
commit 611a235a52
5 changed files with 15 additions and 12 deletions

View file

@ -54,6 +54,14 @@ enum class ProtocolVersion : u16 {
__ENUM_PROTOCOL_VERSIONS __ENUM_PROTOCOL_VERSIONS
}; };
#define __ENUM_ALERT_LEVELS \
_ENUM_KEY_VALUE(WARNING, 1) \
_ENUM_KEY_VALUE(FATAL, 2)
enum class AlertLevel : u8 {
__ENUM_ALERT_LEVELS
};
#undef _ENUM_KEY #undef _ENUM_KEY
#undef _ENUM_KEY_VALUE #undef _ENUM_KEY_VALUE

View file

@ -365,7 +365,7 @@ ByteBuffer TLSv12::build_client_key_exchange()
bool chain_verified = m_context.verify_chain(m_context.extensions.SNI); bool chain_verified = m_context.verify_chain(m_context.extensions.SNI);
if (!chain_verified) { if (!chain_verified) {
dbgln("certificate verification failed :("); dbgln("certificate verification failed :(");
alert(AlertLevel::Critical, AlertDescription::BadCertificate); alert(AlertLevel::FATAL, AlertDescription::BadCertificate);
return {}; return {};
} }

View file

@ -17,7 +17,7 @@ namespace TLS {
ByteBuffer TLSv12::build_alert(bool critical, u8 code) ByteBuffer TLSv12::build_alert(bool critical, u8 code)
{ {
PacketBuilder builder(ContentType::ALERT, (u16)m_context.options.version); PacketBuilder builder(ContentType::ALERT, (u16)m_context.options.version);
builder.append((u8)(critical ? AlertLevel::Critical : AlertLevel::Warning)); builder.append((u8)(critical ? AlertLevel::FATAL : AlertLevel::WARNING));
builder.append(code); builder.append(code);
if (critical) if (critical)
@ -31,7 +31,7 @@ ByteBuffer TLSv12::build_alert(bool critical, u8 code)
void TLSv12::alert(AlertLevel level, AlertDescription code) void TLSv12::alert(AlertLevel level, AlertDescription code)
{ {
auto the_alert = build_alert(level == AlertLevel::Critical, (u8)code); auto the_alert = build_alert(level == AlertLevel::FATAL, (u8)code);
write_packet(the_alert); write_packet(the_alert);
MUST(flush()); MUST(flush());
} }
@ -531,7 +531,7 @@ ssize_t TLSv12::handle_message(ReadonlyBytes buffer)
auto code = plain[1]; auto code = plain[1];
dbgln_if(TLS_DEBUG, "Alert received with level {}, code {}", level, code); dbgln_if(TLS_DEBUG, "Alert received with level {}, code {}", level, code);
if (level == (u8)AlertLevel::Critical) { if (level == (u8)AlertLevel::FATAL) {
dbgln("We were alerted of a critical error: {} ({})", code, alert_name((AlertDescription)code)); dbgln("We were alerted of a critical error: {} ({})", code, alert_name((AlertDescription)code));
m_context.critical_error = code; m_context.critical_error = code;
try_disambiguate_error(); try_disambiguate_error();
@ -540,7 +540,7 @@ ssize_t TLSv12::handle_message(ReadonlyBytes buffer)
if (code == (u8)AlertDescription::CloseNotify) { if (code == (u8)AlertDescription::CloseNotify) {
res += 2; res += 2;
alert(AlertLevel::Critical, AlertDescription::CloseNotify); alert(AlertLevel::FATAL, AlertDescription::CloseNotify);
if (!m_context.cipher_spec_set) { if (!m_context.cipher_spec_set) {
// AWS CloudFront hits this. // AWS CloudFront hits this.
dbgln("Server sent a close notify and we haven't agreed on a cipher suite. Treating it as a handshake failure."); dbgln("Server sent a close notify and we haven't agreed on a cipher suite. Treating it as a handshake failure.");

View file

@ -135,7 +135,7 @@ void TLSv12::setup_connection()
if (timeout_diff < m_max_wait_time_for_handshake_in_seconds + 1) { if (timeout_diff < m_max_wait_time_for_handshake_in_seconds + 1) {
// The server did not respond fast enough, // The server did not respond fast enough,
// time the connection out. // time the connection out.
alert(AlertLevel::Critical, AlertDescription::UserCanceled); alert(AlertLevel::FATAL, AlertDescription::UserCanceled);
m_context.tls_buffer.clear(); m_context.tls_buffer.clear();
m_context.error_code = Error::TimedOut; m_context.error_code = Error::TimedOut;
m_context.critical_error = (u8)Error::TimedOut; m_context.critical_error = (u8)Error::TimedOut;
@ -317,7 +317,7 @@ ErrorOr<bool> TLSv12::flush()
void TLSv12::close() void TLSv12::close()
{ {
alert(AlertLevel::Critical, AlertDescription::CloseNotify); alert(AlertLevel::FATAL, AlertDescription::CloseNotify);
// bye bye. // bye bye.
m_context.connection_status = ConnectionStatus::Disconnected; m_context.connection_status = ConnectionStatus::Disconnected;
} }

View file

@ -113,11 +113,6 @@ enum class Error : i8 {
OutOfMemory = -23, OutOfMemory = -23,
}; };
enum class AlertLevel : u8 {
Warning = 0x01,
Critical = 0x02
};
enum HandshakeType { enum HandshakeType {
HelloRequest = 0x00, HelloRequest = 0x00,
ClientHello = 0x01, ClientHello = 0x01,