LibTLS: Rename Version to ProtocolVersion
This matches the wording used in the TLS RFC Also define GREASE values as specified in RFC8701
This commit is contained in:
parent
082e64e167
commit
ca6b8bfe7f
Notes:
sideshowbarker
2024-07-17 08:35:21 +09:00
Author: https://github.com/stelar7 Commit: https://github.com/SerenityOS/serenity/commit/ca6b8bfe7f Pull-request: https://github.com/SerenityOS/serenity/pull/18356 Reviewed-by: https://github.com/alimpfard ✅
5 changed files with 33 additions and 14 deletions
Userland/Libraries/LibTLS
|
@ -28,6 +28,32 @@ enum class ContentType : u8 {
|
|||
__ENUM_CONTENT_TYPES
|
||||
};
|
||||
|
||||
#define __ENUM_PROTOCOL_VERSIONS \
|
||||
_ENUM_KEY_VALUE(VERSION_1_3, 0x0304) \
|
||||
_ENUM_KEY_VALUE(VERSION_1_2, 0x0303) \
|
||||
_ENUM_KEY_VALUE(VERSION_1_1, 0x0302) \
|
||||
_ENUM_KEY_VALUE(VERSION_1_0, 0x0301) \
|
||||
_ENUM_KEY_VALUE(GREASE_0, 0x0A0A) \
|
||||
_ENUM_KEY_VALUE(GREASE_1, 0x1A1A) \
|
||||
_ENUM_KEY_VALUE(GREASE_2, 0x2A2A) \
|
||||
_ENUM_KEY_VALUE(GREASE_3, 0x3A3A) \
|
||||
_ENUM_KEY_VALUE(GREASE_4, 0x4A4A) \
|
||||
_ENUM_KEY_VALUE(GREASE_5, 0x5A5A) \
|
||||
_ENUM_KEY_VALUE(GREASE_6, 0x6A6A) \
|
||||
_ENUM_KEY_VALUE(GREASE_7, 0x7A7A) \
|
||||
_ENUM_KEY_VALUE(GREASE_8, 0x8A8A) \
|
||||
_ENUM_KEY_VALUE(GREASE_9, 0x9A9A) \
|
||||
_ENUM_KEY_VALUE(GREASE_A, 0xAAAA) \
|
||||
_ENUM_KEY_VALUE(GREASE_B, 0xBABA) \
|
||||
_ENUM_KEY_VALUE(GREASE_C, 0xCACA) \
|
||||
_ENUM_KEY_VALUE(GREASE_D, 0xDADA) \
|
||||
_ENUM_KEY_VALUE(GREASE_E, 0xEAEA) \
|
||||
_ENUM_KEY_VALUE(GREASE_F, 0xFAFA)
|
||||
|
||||
enum class ProtocolVersion : u16 {
|
||||
__ENUM_PROTOCOL_VERSIONS
|
||||
};
|
||||
|
||||
#undef _ENUM_KEY
|
||||
#undef _ENUM_KEY_VALUE
|
||||
|
||||
|
|
|
@ -169,7 +169,7 @@ void TLSv12::build_rsa_pre_master_secret(PacketBuilder& builder)
|
|||
dbgln("Server mode not supported");
|
||||
return;
|
||||
} else {
|
||||
*(u16*)random_bytes = AK::convert_between_host_and_network_endian((u16)Version::V12);
|
||||
*(u16*)random_bytes = AK::convert_between_host_and_network_endian((u16)ProtocolVersion::VERSION_1_2);
|
||||
}
|
||||
|
||||
auto premaster_key_result = ByteBuffer::copy(random_bytes, bytes);
|
||||
|
|
|
@ -46,7 +46,7 @@ ssize_t TLSv12::handle_server_hello(ReadonlyBytes buffer, WritePacketStage& writ
|
|||
dbgln("not enough data for version");
|
||||
return (i8)Error::NeedMoreData;
|
||||
}
|
||||
auto version = static_cast<Version>(AK::convert_between_host_and_network_endian(ByteReader::load16(buffer.offset_pointer(res))));
|
||||
auto version = static_cast<ProtocolVersion>(AK::convert_between_host_and_network_endian(ByteReader::load16(buffer.offset_pointer(res))));
|
||||
|
||||
res += 2;
|
||||
if (!supports_version(version))
|
||||
|
|
|
@ -14,21 +14,14 @@
|
|||
|
||||
namespace TLS {
|
||||
|
||||
enum class Version : u16 {
|
||||
V10 = 0x0301,
|
||||
V11 = 0x0302,
|
||||
V12 = 0x0303,
|
||||
V13 = 0x0304
|
||||
};
|
||||
|
||||
class PacketBuilder {
|
||||
public:
|
||||
PacketBuilder(ContentType type, u16 version, size_t size_hint = 0xfdf)
|
||||
: PacketBuilder(type, (Version)version, size_hint)
|
||||
: PacketBuilder(type, (ProtocolVersion)version, size_hint)
|
||||
{
|
||||
}
|
||||
|
||||
PacketBuilder(ContentType type, Version version, size_t size_hint = 0xfdf)
|
||||
PacketBuilder(ContentType type, ProtocolVersion version, size_t size_hint = 0xfdf)
|
||||
{
|
||||
// FIXME: Handle possible OOM situation.
|
||||
m_packet_data = ByteBuffer::create_uninitialized(size_hint + 16).release_value_but_fixme_should_propagate_errors();
|
||||
|
|
|
@ -240,7 +240,7 @@ struct Options {
|
|||
return move(*this); \
|
||||
}
|
||||
|
||||
OPTION_WITH_DEFAULTS(Version, version, Version::V12)
|
||||
OPTION_WITH_DEFAULTS(ProtocolVersion, version, ProtocolVersion::VERSION_1_2)
|
||||
OPTION_WITH_DEFAULTS(Vector<SignatureAndHashAlgorithm>, supported_signature_algorithms,
|
||||
{ HashAlgorithm::SHA512, SignatureAlgorithm::RSA },
|
||||
{ HashAlgorithm::SHA384, SignatureAlgorithm::RSA },
|
||||
|
@ -419,9 +419,9 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
bool supports_version(Version v) const
|
||||
bool supports_version(ProtocolVersion v) const
|
||||
{
|
||||
return v == Version::V12;
|
||||
return v == ProtocolVersion::VERSION_1_2;
|
||||
}
|
||||
|
||||
void alert(AlertLevel, AlertDescription);
|
||||
|
|
Loading…
Add table
Reference in a new issue