=item TLS_AES_128_CCM_8_SHA256
+=item TLS_SM4_GCM_SM3
+
+=item TLS_SM4_CCM_SM3
+
=item TLS_SHA384_SHA384 - integrity-only
=item TLS_SHA256_SHA256 - integrity-only
#define TLS1_CK_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06E
#define TLS1_CK_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06F
+/* SM ciphersuites from RFC8998 */
+#define TLS1_3_CK_SM4_GCM_SM3 0x030000C6
+#define TLS1_3_CK_SM4_CCM_SM3 0x030000C7
+
/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */
#define TLS1_RFC_RSA_WITH_AES_128_SHA "TLS_RSA_WITH_AES_128_CBC_SHA"
#define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA "TLS_DHE_DSS_WITH_AES_128_CBC_SHA"
#define TLS1_RFC_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384"
#define TLS1_RFC_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256"
#define TLS1_RFC_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384"
+#define TLS1_3_RFC_SM4_GCM_SM3 "TLS_SM4_GCM_SM3"
+#define TLS1_3_RFC_SM4_CCM_SM3 "TLS_SM4_CCM_SM3"
/*
* XXX Backward compatibility alert: Older versions of OpenSSL gave some DHE
384,
},
#endif
+ {
+ 1,
+ TLS1_3_RFC_SM4_GCM_SM3,
+ TLS1_3_RFC_SM4_GCM_SM3,
+ TLS1_3_CK_SM4_GCM_SM3,
+ SSL_kANY,
+ SSL_aANY,
+ SSL_SM4GCM,
+ SSL_AEAD,
+ TLS1_3_VERSION,
+ TLS1_3_VERSION,
+ 0,
+ 0,
+ SSL_NOT_DEFAULT | SSL_HIGH,
+ SSL_HANDSHAKE_MAC_SM3,
+ 128,
+ 128,
+ },
+ {
+ 1,
+ TLS1_3_RFC_SM4_CCM_SM3,
+ TLS1_3_RFC_SM4_CCM_SM3,
+ TLS1_3_CK_SM4_CCM_SM3,
+ SSL_kANY,
+ SSL_aANY,
+ SSL_SM4CCM,
+ SSL_AEAD,
+ TLS1_3_VERSION,
+ TLS1_3_VERSION,
+ 0,
+ 0,
+ SSL_NOT_DEFAULT | SSL_HIGH,
+ SSL_HANDSHAKE_MAC_SM3,
+ 128,
+ 128,
+ },
};
/*
{ SSL_CHACHA20POLY1305, NID_chacha20_poly1305 }, /* SSL_ENC_CHACHA_IDX 19 */
{ SSL_ARIA128GCM, NID_aria_128_gcm }, /* SSL_ENC_ARIA128GCM_IDX 20 */
{ SSL_ARIA256GCM, NID_aria_256_gcm }, /* SSL_ENC_ARIA256GCM_IDX 21 */
- { SSL_MAGMA, NID_magma_ctr_acpkm }, /* SSL_ENC_MAGMA_IDX */
- { SSL_KUZNYECHIK, NID_kuznyechik_ctr_acpkm }, /* SSL_ENC_KUZNYECHIK_IDX */
+ { SSL_MAGMA, NID_magma_ctr_acpkm }, /* SSL_ENC_MAGMA_IDX 22 */
+ { SSL_KUZNYECHIK, NID_kuznyechik_ctr_acpkm }, /* SSL_ENC_KUZNYECHIK_IDX 23 */
+ { SSL_SM4GCM, NID_sm4_gcm }, /* SSL_ENC_SM4GCM_IDX 24 */
+ { SSL_SM4CCM, NID_sm4_ccm }, /* SSL_ENC_SM4CCM_IDX 25 */
};
/* NB: make sure indices in this table matches values above */
{ 0, NID_md5_sha1 }, /* SSL_MD_MD5_SHA1_IDX 9 */
{ 0, NID_sha224 }, /* SSL_MD_SHA224_IDX 10 */
{ 0, NID_sha512 }, /* SSL_MD_SHA512_IDX 11 */
- { SSL_MAGMAOMAC, NID_magma_mac }, /* sSL_MD_MAGMAOMAC_IDX */
- { SSL_KUZNYECHIKOMAC, NID_kuznyechik_mac } /* SSL_MD_KUZNYECHIKOMAC_IDX */
+ { SSL_MAGMAOMAC, NID_magma_mac }, /* sSL_MD_MAGMAOMAC_IDX 12 */
+ { SSL_KUZNYECHIKOMAC, NID_kuznyechik_mac }, /* SSL_MD_KUZNYECHIKOMAC_IDX 13 */
+ { 0, NID_sm3 }, /* SSL_MD_SM3_IDX 14 */
};
/* *INDENT-OFF* */
case SSL_CHACHA20POLY1305:
enc = "CHACHA20/POLY1305(256)";
break;
+ case SSL_SM4GCM:
+ enc = "SM4GCM";
+ break;
+ case SSL_SM4CCM:
+ enc = "SM4CCM";
+ break;
default:
enc = "unknown";
break;
#define SSL_ARIA256GCM 0x00200000U
#define SSL_MAGMA 0x00400000U
#define SSL_KUZNYECHIK 0x00800000U
+#define SSL_SM4GCM 0x01000000U
+#define SSL_SM4CCM 0x02000000U
#define SSL_AESGCM (SSL_AES128GCM | SSL_AES256GCM)
#define SSL_AESCCM (SSL_AES128CCM | SSL_AES256CCM | SSL_AES128CCM8 | SSL_AES256CCM8)
#define SSL_MD_SHA512_IDX 11
#define SSL_MD_MAGMAOMAC_IDX 12
#define SSL_MD_KUZNYECHIKOMAC_IDX 13
-#define SSL_MAX_DIGEST 14
+#define SSL_MD_SM3_IDX 14
+#define SSL_MAX_DIGEST 15
#define SSL_MD_NUM_IDX SSL_MAX_DIGEST
#define SSL_HANDSHAKE_MAC_GOST94 SSL_MD_GOST94_IDX
#define SSL_HANDSHAKE_MAC_GOST12_256 SSL_MD_GOST12_256_IDX
#define SSL_HANDSHAKE_MAC_GOST12_512 SSL_MD_GOST12_512_IDX
+#define SSL_HANDSHAKE_MAC_SM3 SSL_MD_SM3_IDX
#define SSL_HANDSHAKE_MAC_DEFAULT SSL_HANDSHAKE_MAC_MD5_SHA1
/* Bits 8-15 bits are PRF */
#define SSL_ENC_ARIA256GCM_IDX 21
#define SSL_ENC_MAGMA_IDX 22
#define SSL_ENC_KUZNYECHIK_IDX 23
-#define SSL_ENC_NUM_IDX 24
+#define SSL_ENC_SM4GCM_IDX 24
+#define SSL_ENC_SM4CCM_IDX 25
+#define SSL_ENC_NUM_IDX 26
/*-
* SSL_kRSA <- RSA_ENC
{ 0x00C3, TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 },
{ 0x00C4, TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 },
{ 0x00C5, TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA256 },
+ { 0x00C6, TLS1_3_RFC_SM4_GCM_SM3 },
+ { 0x00C7, TLS1_3_RFC_SM4_CCM_SM3 },
{ 0x00FF, "TLS_EMPTY_RENEGOTIATION_INFO_SCSV" },
{ 0x5600, "TLS_FALLBACK_SCSV" },
{ 0xC001, "TLS_ECDH_ECDSA_WITH_NULL_SHA" },
{ 0x00C3, "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256" },
{ 0x00C4, "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256" },
{ 0x00C5, "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256" },
+ { 0x00C6, "TLS_SM4_GCM_SM3" },
+ { 0x00C7, "TLS_SM4_CCM_SM3" },
{ 0x00FF, "TLS_EMPTY_RENEGOTIATION_INFO_SCSV" },
{ 0x5600, "TLS_FALLBACK_SCSV" },
{ 0xC001, "TLS_ECDH_ECDSA_WITH_NULL_SHA" },