From 6df3ffaf4577a0c502c05a650c327fec3339d363 Mon Sep 17 00:00:00 2001 From: stelar7 Date: Fri, 14 Apr 2023 00:11:40 +0200 Subject: [PATCH] LibTLS: Move ECCurveType to Extensions.h Also add missing values from the IANA registry --- Userland/Libraries/LibTLS/Extensions.h | 10 ++++++++++ Userland/Libraries/LibTLS/HandshakeServer.cpp | 2 +- Userland/Libraries/LibTLS/TLSv12.h | 4 ---- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Userland/Libraries/LibTLS/Extensions.h b/Userland/Libraries/LibTLS/Extensions.h index ed4fe004af..0ae608dfeb 100644 --- a/Userland/Libraries/LibTLS/Extensions.h +++ b/Userland/Libraries/LibTLS/Extensions.h @@ -166,6 +166,16 @@ enum class NameType : u8 { __ENUM_NAME_TYPES }; +// https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-10 +#define __ENUM_EC_CURVE_TYPES \ + _ENUM_KEY_VALUE(EXPLICIT_PRIME, 1) \ + _ENUM_KEY_VALUE(EXPLICIT_CHAR2, 2) \ + _ENUM_KEY_VALUE(NAMED_CURVE, 3) + +enum class ECCurveType : u8 { + __ENUM_EC_CURVE_TYPES +}; + #undef _ENUM_KEY #undef _ENUM_KEY_VALUE diff --git a/Userland/Libraries/LibTLS/HandshakeServer.cpp b/Userland/Libraries/LibTLS/HandshakeServer.cpp index 04526484ba..f3cf7998ec 100644 --- a/Userland/Libraries/LibTLS/HandshakeServer.cpp +++ b/Userland/Libraries/LibTLS/HandshakeServer.cpp @@ -298,7 +298,7 @@ ssize_t TLSv12::handle_ecdhe_rsa_server_key_exchange(ReadonlyBytes buffer) return (i8)Error::NeedMoreData; auto curve_type = buffer[3]; - if (curve_type != (u8)ECCurveType::NamedCurve) + if (curve_type != (u8)ECCurveType::NAMED_CURVE) return (i8)Error::NotUnderstood; auto curve = static_cast(AK::convert_between_host_and_network_endian(ByteReader::load16(buffer.offset_pointer(4)))); diff --git a/Userland/Libraries/LibTLS/TLSv12.h b/Userland/Libraries/LibTLS/TLSv12.h index 8157d00de8..66d8c628d0 100644 --- a/Userland/Libraries/LibTLS/TLSv12.h +++ b/Userland/Libraries/LibTLS/TLSv12.h @@ -133,10 +133,6 @@ enum ClientVerificationStaus { VerificationNeeded, }; -enum class ECCurveType : u8 { - NamedCurve = 3, -}; - // Note for the 16 iv length instead of 8: // 4 bytes of fixed IV, 8 random (nonce) bytes, 4 bytes for counter // GCM specifically asks us to transmit only the nonce, the counter is zero