Extensions.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*
  2. * Copyright (c) 2020, Ali Mohammad Pur <mpfard@serenityos.org>
  3. * Copyright (c) 2023, stelar7 <dudedbz@gmail.com>
  4. *
  5. * SPDX-License-Identifier: BSD-2-Clause
  6. */
  7. #pragma once
  8. #include <AK/Types.h>
  9. namespace TLS {
  10. #define _ENUM_KEY(name) name,
  11. #define _ENUM_KEY_VALUE(name, value) name = value,
  12. // https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-5
  13. #define __ENUM_CONTENT_TYPES \
  14. _ENUM_KEY_VALUE(CHANGE_CIPHER_SPEC, 20) \
  15. _ENUM_KEY_VALUE(ALERT, 21) \
  16. _ENUM_KEY_VALUE(HANDSHAKE, 22) \
  17. _ENUM_KEY_VALUE(APPLICATION_DATA, 23) \
  18. _ENUM_KEY_VALUE(HEARTBEAT, 24) \
  19. _ENUM_KEY_VALUE(TLS12_CID, 25) \
  20. _ENUM_KEY_VALUE(ACK, 26)
  21. enum class ContentType : u8 {
  22. __ENUM_CONTENT_TYPES
  23. };
  24. #define __ENUM_PROTOCOL_VERSIONS \
  25. _ENUM_KEY_VALUE(VERSION_1_3, 0x0304) \
  26. _ENUM_KEY_VALUE(VERSION_1_2, 0x0303) \
  27. _ENUM_KEY_VALUE(VERSION_1_1, 0x0302) \
  28. _ENUM_KEY_VALUE(VERSION_1_0, 0x0301) \
  29. _ENUM_KEY_VALUE(GREASE_0, 0x0A0A) \
  30. _ENUM_KEY_VALUE(GREASE_1, 0x1A1A) \
  31. _ENUM_KEY_VALUE(GREASE_2, 0x2A2A) \
  32. _ENUM_KEY_VALUE(GREASE_3, 0x3A3A) \
  33. _ENUM_KEY_VALUE(GREASE_4, 0x4A4A) \
  34. _ENUM_KEY_VALUE(GREASE_5, 0x5A5A) \
  35. _ENUM_KEY_VALUE(GREASE_6, 0x6A6A) \
  36. _ENUM_KEY_VALUE(GREASE_7, 0x7A7A) \
  37. _ENUM_KEY_VALUE(GREASE_8, 0x8A8A) \
  38. _ENUM_KEY_VALUE(GREASE_9, 0x9A9A) \
  39. _ENUM_KEY_VALUE(GREASE_A, 0xAAAA) \
  40. _ENUM_KEY_VALUE(GREASE_B, 0xBABA) \
  41. _ENUM_KEY_VALUE(GREASE_C, 0xCACA) \
  42. _ENUM_KEY_VALUE(GREASE_D, 0xDADA) \
  43. _ENUM_KEY_VALUE(GREASE_E, 0xEAEA) \
  44. _ENUM_KEY_VALUE(GREASE_F, 0xFAFA)
  45. enum class ProtocolVersion : u16 {
  46. __ENUM_PROTOCOL_VERSIONS
  47. };
  48. #undef _ENUM_KEY
  49. #undef _ENUM_KEY_VALUE
  50. }