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
Notes: sideshowbarker 2024-07-17 08:36:27 +09:00
5 changed files with 15 additions and 12 deletions

View file

@ -54,6 +54,14 @@ enum class ProtocolVersion : u16 {
__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_VALUE

View file

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

View file

@ -17,7 +17,7 @@ namespace TLS {
ByteBuffer TLSv12::build_alert(bool critical, u8 code)
{
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);
if (critical)
@ -31,7 +31,7 @@ ByteBuffer TLSv12::build_alert(bool critical, u8 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);
MUST(flush());
}
@ -531,7 +531,7 @@ ssize_t TLSv12::handle_message(ReadonlyBytes buffer)
auto code = plain[1];
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));
m_context.critical_error = code;
try_disambiguate_error();
@ -540,7 +540,7 @@ ssize_t TLSv12::handle_message(ReadonlyBytes buffer)
if (code == (u8)AlertDescription::CloseNotify) {
res += 2;
alert(AlertLevel::Critical, AlertDescription::CloseNotify);
alert(AlertLevel::FATAL, AlertDescription::CloseNotify);
if (!m_context.cipher_spec_set) {
// 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.");

View file

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

View file

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