aboutsummaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorLuca Deri <deri@ntop.org>2021-05-13 12:37:07 +0200
committerLuca Deri <deri@ntop.org>2021-05-13 12:37:07 +0200
commita62be9b8ecd4d3bd885654ee27d7041c005d0121 (patch)
tree17dbfe105098a09a0cd44cd360d808ad1edd34bb /src/include
parent87076dcd5bcadbe9dbd24284429db59368af04a4 (diff)
Implemented heuristic to detect Safari and Firefox TLS browsing
Diffstat (limited to 'src/include')
-rw-r--r--src/include/ndpi_encryption.h408
1 files changed, 408 insertions, 0 deletions
diff --git a/src/include/ndpi_encryption.h b/src/include/ndpi_encryption.h
new file mode 100644
index 000000000..b54de84de
--- /dev/null
+++ b/src/include/ndpi_encryption.h
@@ -0,0 +1,408 @@
+/*
+ * ndpi_encryption.h
+ *
+ * Copyright (C) 2016-21 - ntop.org
+ *
+ * nDPI is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * nDPI is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with nDPI. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/* https://wiki.mozilla.org/Security/Cipher_Suites */
+/* https://www.oryx-embedded.com/doc/tls__cipher__suites_8h.html */
+
+#define TLS_NULL_WITH_NULL_NULL 0x0000
+#define TLS_RSA_EXPORT_WITH_RC4_40_MD5 0x0003
+#define TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 0x0006
+#define TLS_RSA_EXPORT_WITH_DES40_CBC_SHA 0x0008
+#define TLS_RSA_WITH_NULL_MD5 0x0001
+#define TLS_RSA_WITH_NULL_SHA 0x0002
+#define TLS_RSA_WITH_NULL_SHA256 0x003B
+#define TLS_RSA_WITH_RC4_128_MD5 0x0004
+#define TLS_RSA_WITH_RC4_128_SHA 0x0005
+#define TLS_RSA_WITH_IDEA_CBC_SHA 0x0007
+#define TLS_RSA_WITH_DES_CBC_SHA 0x0009
+#define TLS_RSA_WITH_3DES_EDE_CBC_SHA 0x000A
+#define TLS_RSA_WITH_AES_128_CBC_SHA 0x002F
+#define TLS_RSA_WITH_AES_256_CBC_SHA 0x0035
+#define TLS_RSA_WITH_AES_128_CBC_SHA256 0x003C
+#define TLS_RSA_WITH_AES_256_CBC_SHA256 0x003D
+#define TLS_RSA_WITH_AES_128_GCM_SHA256 0x009C
+#define TLS_RSA_WITH_AES_256_GCM_SHA384 0x009D
+#define TLS_RSA_WITH_AES_128_CCM 0xC09C
+#define TLS_RSA_WITH_AES_256_CCM 0xC09D
+#define TLS_RSA_WITH_AES_128_CCM_8 0xC0A0
+#define TLS_RSA_WITH_AES_256_CCM_8 0xC0A1
+#define TLS_RSA_WITH_CAMELLIA_128_CBC_SHA 0x0041
+#define TLS_RSA_WITH_CAMELLIA_256_CBC_SHA 0x0084
+#define TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x00BA
+#define TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x00C0
+#define TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC07A
+#define TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC07B
+#define TLS_RSA_WITH_SEED_CBC_SHA 0x0096
+#define TLS_RSA_WITH_ARIA_128_CBC_SHA256 0xC03C
+#define TLS_RSA_WITH_ARIA_256_CBC_SHA384 0xC03D
+#define TLS_RSA_WITH_ARIA_128_GCM_SHA256 0xC050
+#define TLS_RSA_WITH_ARIA_256_GCM_SHA384 0xC051
+#define TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA 0x000E
+#define TLS_DH_RSA_WITH_DES_CBC_SHA 0x000F
+#define TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA 0x0010
+#define TLS_DH_RSA_WITH_AES_128_CBC_SHA 0x0031
+#define TLS_DH_RSA_WITH_AES_256_CBC_SHA 0x0037
+#define TLS_DH_RSA_WITH_AES_128_CBC_SHA256 0x003F
+#define TLS_DH_RSA_WITH_AES_256_CBC_SHA256 0x0069
+#define TLS_DH_RSA_WITH_AES_128_GCM_SHA256 0x00A0
+#define TLS_DH_RSA_WITH_AES_256_GCM_SHA384 0x00A1
+#define TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA 0x0043
+#define TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA 0x0086
+#define TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x00BC
+#define TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x00C2
+#define TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC07E
+#define TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC07F
+#define TLS_DH_RSA_WITH_SEED_CBC_SHA 0x0098
+#define TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256 0xC040
+#define TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384 0xC041
+#define TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256 0xC054
+#define TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384 0xC055
+#define TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA 0x0014
+#define TLS_DHE_RSA_WITH_DES_CBC_SHA 0x0015
+#define TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA 0x0016
+#define TLS_DHE_RSA_WITH_AES_128_CBC_SHA 0x0033
+#define TLS_DHE_RSA_WITH_AES_256_CBC_SHA 0x0039
+#define TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 0x0067
+#define TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 0x006B
+#define TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 0x009E
+#define TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 0x009F
+#define TLS_DHE_RSA_WITH_AES_128_CCM 0xC09E
+#define TLS_DHE_RSA_WITH_AES_256_CCM 0xC09F
+#define TLS_DHE_RSA_WITH_AES_128_CCM_8 0xC0A2
+#define TLS_DHE_RSA_WITH_AES_256_CCM_8 0xC0A3
+#define TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x0045
+#define TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x0088
+#define TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x00BE
+#define TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x00C4
+#define TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC07C
+#define TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC07D
+#define TLS_DHE_RSA_WITH_SEED_CBC_SHA 0x009A
+#define TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC044
+#define TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC045
+#define TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC052
+#define TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC053
+#define TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 0xCCAA
+#define TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA 0x000B
+#define TLS_DH_DSS_WITH_DES_CBC_SHA 0x000C
+#define TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA 0x000D
+#define TLS_DH_DSS_WITH_AES_128_CBC_SHA 0x0030
+#define TLS_DH_DSS_WITH_AES_256_CBC_SHA 0x0036
+#define TLS_DH_DSS_WITH_AES_128_CBC_SHA256 0x003E
+#define TLS_DH_DSS_WITH_AES_256_CBC_SHA256 0x0068
+#define TLS_DH_DSS_WITH_AES_128_GCM_SHA256 0x00A4
+#define TLS_DH_DSS_WITH_AES_256_GCM_SHA384 0x00A5
+#define TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA 0x0042
+#define TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA 0x0085
+#define TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x00BB
+#define TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x00C1
+#define TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256 0xC082
+#define TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384 0xC083
+#define TLS_DH_DSS_WITH_SEED_CBC_SHA 0x0097
+#define TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256 0xC03E
+#define TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384 0xC03F
+#define TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256 0xC058
+#define TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384 0xC059
+#define TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA 0x0011
+#define TLS_DHE_DSS_WITH_DES_CBC_SHA 0x0012
+#define TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA 0x0013
+#define TLS_DHE_DSS_WITH_AES_128_CBC_SHA 0x0032
+#define TLS_DHE_DSS_WITH_AES_256_CBC_SHA 0x0038
+#define TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 0x0040
+#define TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 0x006A
+#define TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 0x00A2
+#define TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 0x00A3
+#define TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA 0x0044
+#define TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA 0x0087
+#define TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x00BD
+#define TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x00C3
+#define TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256 0xC080
+#define TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384 0xC081
+#define TLS_DHE_DSS_WITH_SEED_CBC_SHA 0x0099
+#define TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256 0xC042
+#define TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384 0xC043
+#define TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256 0xC056
+#define TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384 0xC057
+#define TLS_DH_ANON_EXPORT_WITH_RC4_40_MD5 0x0017
+#define TLS_DH_ANON_EXPORT_WITH_DES40_CBC_SHA 0x0019
+#define TLS_DH_ANON_WITH_RC4_128_MD5 0x0018
+#define TLS_DH_ANON_WITH_DES_CBC_SHA 0x001A
+#define TLS_DH_ANON_WITH_3DES_EDE_CBC_SHA 0x001B
+#define TLS_DH_ANON_WITH_AES_128_CBC_SHA 0x0034
+#define TLS_DH_ANON_WITH_AES_256_CBC_SHA 0x003A
+#define TLS_DH_ANON_WITH_AES_128_CBC_SHA256 0x006C
+#define TLS_DH_ANON_WITH_AES_256_CBC_SHA256 0x006D
+#define TLS_DH_ANON_WITH_AES_128_GCM_SHA256 0x00A6
+#define TLS_DH_ANON_WITH_AES_256_GCM_SHA384 0x00A7
+#define TLS_DH_ANON_WITH_CAMELLIA_128_CBC_SHA 0x0046
+#define TLS_DH_ANON_WITH_CAMELLIA_256_CBC_SHA 0x0089
+#define TLS_DH_ANON_WITH_CAMELLIA_128_CBC_SHA256 0x00BF
+#define TLS_DH_ANON_WITH_CAMELLIA_256_CBC_SHA256 0x00C5
+#define TLS_DH_ANON_WITH_CAMELLIA_128_GCM_SHA256 0xC084
+#define TLS_DH_ANON_WITH_CAMELLIA_256_GCM_SHA384 0xC085
+#define TLS_DH_ANON_WITH_SEED_CBC_SHA 0x009B
+#define TLS_DH_ANON_WITH_ARIA_128_CBC_SHA256 0xC046
+#define TLS_DH_ANON_WITH_ARIA_256_CBC_SHA384 0xC047
+#define TLS_DH_ANON_WITH_ARIA_128_GCM_SHA256 0xC05A
+#define TLS_DH_ANON_WITH_ARIA_256_GCM_SHA384 0xC05B
+#define TLS_ECDH_RSA_WITH_NULL_SHA 0xC00B
+#define TLS_ECDH_RSA_WITH_RC4_128_SHA 0xC00C
+#define TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA 0xC00D
+#define TLS_ECDH_RSA_WITH_AES_128_CBC_SHA 0xC00E
+#define TLS_ECDH_RSA_WITH_AES_256_CBC_SHA 0xC00F
+#define TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 0xC029
+#define TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 0xC02A
+#define TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 0xC031
+#define TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 0xC032
+#define TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xC078
+#define TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 0xC079
+#define TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC08C
+#define TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC08D
+#define TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 0xC04E
+#define TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 0xC04F
+#define TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0xC062
+#define TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0xC063
+#define TLS_ECDHE_RSA_WITH_NULL_SHA 0xC010
+#define TLS_ECDHE_RSA_WITH_RC4_128_SHA 0xC011
+#define TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA 0xC012
+#define TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 0xC013
+#define TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 0xC014
+#define TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 0xC027
+#define TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 0xC028
+#define TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0xC02F
+#define TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0xC030
+#define TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xC076
+#define TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0xC077
+#define TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC08A
+#define TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC08B
+#define TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC04C
+#define TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC04D
+#define TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC060
+#define TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC061
+#define TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 0xCCA8
+#define TLS_ECDH_ECDSA_WITH_NULL_SHA 0xC001
+#define TLS_ECDH_ECDSA_WITH_RC4_128_SHA 0xC002
+#define TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA 0xC003
+#define TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0xC004
+#define TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0xC005
+#define TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 0xC025
+#define TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 0xC026
+#define TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0xC02D
+#define TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0xC02E
+#define TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0xC074
+#define TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0xC075
+#define TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 0xC088
+#define TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 0xC089
+#define TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC04A
+#define TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC04B
+#define TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05E
+#define TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05F
+#define TLS_ECDHE_ECDSA_WITH_NULL_SHA 0xC006
+#define TLS_ECDHE_ECDSA_WITH_RC4_128_SHA 0xC007
+#define TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA 0xC008
+#define TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0xC009
+#define TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0xC00A
+#define TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 0xC023
+#define TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 0xC024
+#define TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0xC02B
+#define TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0xC02C
+#define TLS_ECDHE_ECDSA_WITH_AES_128_CCM 0xC0AC
+#define TLS_ECDHE_ECDSA_WITH_AES_256_CCM 0xC0AD
+#define TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 0xC0AE
+#define TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 0xC0AF
+#define TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0xC072
+#define TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0xC073
+#define TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 0xC086
+#define TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 0xC087
+#define TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC048
+#define TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC049
+#define TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05C
+#define TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05D
+#define TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 0xCCA9
+#define TLS_ECDH_ANON_WITH_NULL_SHA 0xC015
+#define TLS_ECDH_ANON_WITH_RC4_128_SHA 0xC016
+#define TLS_ECDH_ANON_WITH_3DES_EDE_CBC_SHA 0xC017
+#define TLS_ECDH_ANON_WITH_AES_128_CBC_SHA 0xC018
+#define TLS_ECDH_ANON_WITH_AES_256_CBC_SHA 0xC019
+#define TLS_PSK_WITH_NULL_SHA 0x002C
+#define TLS_PSK_WITH_NULL_SHA256 0x00B0
+#define TLS_PSK_WITH_NULL_SHA384 0x00B1
+#define TLS_PSK_WITH_RC4_128_SHA 0x008A
+#define TLS_PSK_WITH_3DES_EDE_CBC_SHA 0x008B
+#define TLS_PSK_WITH_AES_128_CBC_SHA 0x008C
+#define TLS_PSK_WITH_AES_256_CBC_SHA 0x008D
+#define TLS_PSK_WITH_AES_128_CBC_SHA256 0x00AE
+#define TLS_PSK_WITH_AES_256_CBC_SHA384 0x00AF
+#define TLS_PSK_WITH_AES_128_GCM_SHA256 0x00A8
+#define TLS_PSK_WITH_AES_256_GCM_SHA384 0x00A9
+#define TLS_PSK_WITH_AES_128_CCM 0xC0A4
+#define TLS_PSK_WITH_AES_256_CCM 0xC0A5
+#define TLS_PSK_WITH_AES_128_CCM_8 0xC0A8
+#define TLS_PSK_WITH_AES_256_CCM_8 0xC0A9
+#define TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC094
+#define TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC095
+#define TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC08E
+#define TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC08F
+#define TLS_PSK_WITH_ARIA_128_CBC_SHA256 0xC064
+#define TLS_PSK_WITH_ARIA_256_CBC_SHA384 0xC065
+#define TLS_PSK_WITH_ARIA_128_GCM_SHA256 0xC06A
+#define TLS_PSK_WITH_ARIA_256_GCM_SHA384 0xC06B
+#define TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAB
+#define TLS_RSA_PSK_WITH_NULL_SHA 0x002E
+#define TLS_RSA_PSK_WITH_NULL_SHA256 0x00B8
+#define TLS_RSA_PSK_WITH_NULL_SHA384 0x00B9
+#define TLS_RSA_PSK_WITH_RC4_128_SHA 0x0092
+#define TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA 0x0093
+#define TLS_RSA_PSK_WITH_AES_128_CBC_SHA 0x0094
+#define TLS_RSA_PSK_WITH_AES_256_CBC_SHA 0x0095
+#define TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 0x00B6
+#define TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 0x00B7
+#define TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 0x00AC
+#define TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 0x00AD
+#define TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC098
+#define TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC099
+#define TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC092
+#define TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC093
+#define TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 0xC068
+#define TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 0xC069
+#define TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0xC06E
+#define TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0xC06F
+#define TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAE
+#define TLS_DHE_PSK_WITH_NULL_SHA 0x002D
+#define TLS_DHE_PSK_WITH_NULL_SHA256 0x00B4
+#define TLS_DHE_PSK_WITH_NULL_SHA384 0x00B5
+#define TLS_DHE_PSK_WITH_RC4_128_SHA 0x008E
+#define TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA 0x008F
+#define TLS_DHE_PSK_WITH_AES_128_CBC_SHA 0x0090
+#define TLS_DHE_PSK_WITH_AES_256_CBC_SHA 0x0091
+#define TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 0x00B2
+#define TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 0x00B3
+#define TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 0x00AA
+#define TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 0x00AB
+#define TLS_DHE_PSK_WITH_AES_128_CCM 0xC0A6
+#define TLS_DHE_PSK_WITH_AES_256_CCM 0xC0A7
+#define TLS_DHE_PSK_WITH_AES_128_CCM_8 0xC0AA
+#define TLS_DHE_PSK_WITH_AES_256_CCM_8 0xC0AB
+#define TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC096
+#define TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC097
+#define TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 0xC090
+#define TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 0xC091
+#define TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 0xC066
+#define TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 0xC067
+#define TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0xC06C
+#define TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0xC06D
+#define TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAD
+#define TLS_ECDHE_PSK_WITH_NULL_SHA 0xC039
+#define TLS_ECDHE_PSK_WITH_NULL_SHA256 0xC03A
+#define TLS_ECDHE_PSK_WITH_NULL_SHA384 0xC03B
+#define TLS_ECDHE_PSK_WITH_RC4_128_SHA 0xC033
+#define TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA 0xC034
+#define TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA 0xC035
+#define TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA 0xC036
+#define TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 0xC037
+#define TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 0xC038
+#define TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256 0xD001
+#define TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384 0xD002
+#define TLS_ECDHE_PSK_WITH_AES_128_CCM_SHA256 0xD005
+#define TLS_ECDHE_PSK_WITH_AES_128_CCM_8_SHA256 0xD003
+#define TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0xC09A
+#define TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0xC09B
+#define TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 0xC070
+#define TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 0xC071
+#define TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAC
+#define TLS_KRB5_EXPORT_WITH_RC4_40_MD5 0x002B
+#define TLS_KRB5_EXPORT_WITH_RC4_40_SHA 0x0028
+#define TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5 0x002A
+#define TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA 0x0027
+#define TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5 0x0029
+#define TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA 0x0026
+#define TLS_KRB5_WITH_RC4_128_MD5 0x0024
+#define TLS_KRB5_WITH_RC4_128_SHA 0x0020
+#define TLS_KRB5_WITH_IDEA_CBC_MD5 0x0025
+#define TLS_KRB5_WITH_IDEA_CBC_SHA 0x0021
+#define TLS_KRB5_WITH_DES_CBC_MD5 0x0022
+#define TLS_KRB5_WITH_DES_CBC_SHA 0x001E
+#define TLS_KRB5_WITH_3DES_EDE_CBC_MD5 0x0023
+#define TLS_KRB5_WITH_3DES_EDE_CBC_SHA 0x001F
+#define TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA 0xC01A
+#define TLS_SRP_SHA_WITH_AES_128_CBC_SHA 0xC01D
+#define TLS_SRP_SHA_WITH_AES_256_CBC_SHA 0xC020
+#define TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA 0xC01B
+#define TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA 0xC01E
+#define TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA 0xC021
+#define TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA 0xC01C
+#define TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA 0xC01F
+#define TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA 0xC022
+#define TLS_ECCPWD_WITH_AES_128_GCM_SHA256 0xC0B0
+#define TLS_ECCPWD_WITH_AES_256_GCM_SHA384 0xC0B1
+#define TLS_ECCPWD_WITH_AES_128_CCM_SHA256 0xC0B2
+#define TLS_ECCPWD_WITH_AES_256_CCM_SHA384 0xC0B3
+#define TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC 0xC100
+#define TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC 0xC101
+#define TLS_GOSTR341112_256_WITH_28147_CNT_IMIT 0xC102
+#define TLS_AES_128_GCM_SHA256 0x1301
+#define TLS_AES_256_GCM_SHA384 0x1302
+#define TLS_AES_128_CCM_SHA256 0x1304
+#define TLS_AES_128_CCM_8_SHA256 0x1305
+#define TLS_CHACHA20_POLY1305_SHA256 0x1303
+#define TLS_SM4_GCM_SM3 0x00C6
+#define TLS_SM4_CCM_SM3 0x00C7
+#define TLS_SHA256_SHA256 0xC0B4
+#define TLS_SHA384_SHA384 0xC0B5
+#define TLS_EMPTY_RENEGOTIATION_INFO_SCSV 0x00FF
+#define TLS_FALLBACK_SCSV 0x5600
+
+/* https://datatracker.ietf.org/doc/html/rfc8701 */
+#define TLS_CIPHER_GREASE_RESERVED_0 0x0A0A
+#define TLS_CIPHER_GREASE_RESERVED_1 0x1A1A
+#define TLS_CIPHER_GREASE_RESERVED_2 0x2A2A
+#define TLS_CIPHER_GREASE_RESERVED_3 0x3A3A
+#define TLS_CIPHER_GREASE_RESERVED_4 0x4A4A
+#define TLS_CIPHER_GREASE_RESERVED_5 0x5A5A
+#define TLS_CIPHER_GREASE_RESERVED_6 0x6A6A
+#define TLS_CIPHER_GREASE_RESERVED_7 0x7A7A
+#define TLS_CIPHER_GREASE_RESERVED_8 0x8A8A
+#define TLS_CIPHER_GREASE_RESERVED_9 0x9A9A
+#define TLS_CIPHER_GREASE_RESERVED_A 0xAAAA
+#define TLS_CIPHER_GREASE_RESERVED_B 0xBABA
+#define TLS_CIPHER_GREASE_RESERVED_C 0xCACA
+#define TLS_CIPHER_GREASE_RESERVED_D 0xDADA
+#define TLS_CIPHER_GREASE_RESERVED_E 0xEAEA
+#define TLS_CIPHER_GREASE_RESERVED_F 0xFAFA
+
+/* ********************************************** */
+
+/* Signature algorithms */
+
+#define RSA_PKCS1_SHA1 0x0201
+#define ECDSA_SHA1 0x0203
+#define RSA_PKCS1_SHA256 0x0401
+#define ECDSA_SECP256R1_SHA256 0x0403
+#define RSA_PKCS1_SHA384 0x0501
+#define ECDSA_SECP384R1_SHA384 0x0503
+#define RSA_PKCS1_SHA512 0x0601
+#define ECDSA_SECP521R1_SHA512 0x0603
+#define RSA_PSS_RSAE_SHA256 0x0804
+#define RSA_PSS_RSAE_SHA384 0x0805
+#define RSA_PSS_RSAE_SHA512 0x0806
+#define ED25519 0x0807
+#define ED448 0x0808
+#define RSA_PSS_PSS_SHA256 0x0809
+#define RSA_PSS_PSS_SHA384 0x080A
+#define RSA_PSS_PSS_SHA512 0x080B