Hi,
is there a reason why the Camellia cipher suits with SHA2 HMAC is not
supported?
I added them and tested the result with an Nginx server and the s_client
command.
I would like to have a look to support the Camellia GCM based cipher
suites, but if there is a reason why libressl shouldn't support them, I
would spend my time with something else.
Best Regards,
Guenther
Index: lib/libssl/src/ssl/s3_lib.c
===================================================================
RCS file: /cvs/src/lib/libssl/src/ssl/s3_lib.c,v
retrieving revision 1.108
diff -u -p -r1.108 s3_lib.c
--- lib/libssl/src/ssl/s3_lib.c 28 Apr 2016 16:39:45 -0000 1.108
+++ lib/libssl/src/ssl/s3_lib.c 25 Aug 2016 13:45:27 -0000
@@ -1805,6 +1805,138 @@ SSL_CIPHER ssl3_ciphers[] = {
.strength_bits = 256,
.alg_bits = 256,
},
+
+#ifndef OPENSSL_NO_CAMELLIA
+ /* TLS 1.2 ECDH Camellia based ciphersuites from RFC 6367 */
+
+ /* Cipher C072 */
+ {
+ .valid = 1,
+ .name = TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
+ .id = TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
+ .algorithm_mkey = SSL_kECDHE,
+ .algorithm_auth = SSL_aECDSA,
+ .algorithm_enc = SSL_CAMELLIA128,
+ .algorithm_mac = SSL_SHA256,
+ .algorithm_ssl = SSL_TLSV1_2,
+ .algo_strength = SSL_HIGH,
+ .algorithm2 = SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
+ .strength_bits = 128,
+ .alg_bits = 128,
+ },
+
+ /* Cipher C073 */
+ {
+ .valid = 1,
+ .name = TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
+ .id = TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
+ .algorithm_mkey = SSL_kECDHE,
+ .algorithm_auth = SSL_aECDSA,
+ .algorithm_enc = SSL_CAMELLIA256,
+ .algorithm_mac = SSL_SHA384,
+ .algorithm_ssl = SSL_TLSV1_2,
+ .algo_strength = SSL_HIGH,
+ .algorithm2 = SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
+ .strength_bits = 256,
+ .alg_bits = 256,
+ },
+
+ /* Cipher C074 */
+ {
+ .valid = 1,
+ .name = TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
+ .id = TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256,
+ .algorithm_mkey = SSL_kECDHe,
+ .algorithm_auth = SSL_aECDH,
+ .algorithm_enc = SSL_CAMELLIA128,
+ .algorithm_mac = SSL_SHA256,
+ .algorithm_ssl = SSL_TLSV1_2,
+ .algo_strength = SSL_HIGH,
+ .algorithm2 = SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
+ .strength_bits = 128,
+ .alg_bits = 128,
+ },
+
+ /* Cipher C075 */
+ {
+ .valid = 1,
+ .name = TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
+ .id = TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384,
+ .algorithm_mkey = SSL_kECDHe,
+ .algorithm_auth = SSL_aECDH,
+ .algorithm_enc = SSL_CAMELLIA256,
+ .algorithm_mac = SSL_SHA384,
+ .algorithm_ssl = SSL_TLSV1_2,
+ .algo_strength = SSL_HIGH,
+ .algorithm2 = SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
+ .strength_bits = 256,
+ .alg_bits = 256,
+ },
+
+ /* Cipher C076 */
+ {
+ .valid = 1,
+ .name = TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
+ .id = TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256,
+ .algorithm_mkey = SSL_kECDHE,
+ .algorithm_auth = SSL_aRSA,
+ .algorithm_enc = SSL_CAMELLIA128,
+ .algorithm_mac = SSL_SHA256,
+ .algorithm_ssl = SSL_TLSV1_2,
+ .algo_strength = SSL_HIGH,
+ .algorithm2 = SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
+ .strength_bits = 128,
+ .alg_bits = 128,
+ },
+
+ /* Cipher C077 */
+ {
+ .valid = 1,
+ .name = TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
+ .id = TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384,
+ .algorithm_mkey = SSL_kECDHE,
+ .algorithm_auth = SSL_aRSA,
+ .algorithm_enc = SSL_CAMELLIA256,
+ .algorithm_mac = SSL_SHA384,
+ .algorithm_ssl = SSL_TLSV1_2,
+ .algo_strength = SSL_HIGH,
+ .algorithm2 = SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
+ .strength_bits = 256,
+ .alg_bits = 256,
+ },
+
+ /* Cipher C078 */
+ {
+ .valid = 1,
+ .name = TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256,
+ .id = TLS1_CK_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256,
+ .algorithm_mkey = SSL_kECDHe,
+ .algorithm_auth = SSL_aRSA,
+ .algorithm_enc = SSL_CAMELLIA128,
+ .algorithm_mac = SSL_SHA256,
+ .algorithm_ssl = SSL_TLSV1_2,
+ .algo_strength = SSL_HIGH,
+ .algorithm2 = SSL_HANDSHAKE_MAC_SHA256|TLS1_PRF_SHA256,
+ .strength_bits = 128,
+ .alg_bits = 128,
+ },
+
+ /* Cipher C079 */
+ {
+ .valid = 1,
+ .name = TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384,
+ .id = TLS1_CK_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384,
+ .algorithm_mkey = SSL_kECDHe,
+ .algorithm_auth = SSL_aRSA,
+ .algorithm_enc = SSL_CAMELLIA256,
+ .algorithm_mac = SSL_SHA384,
+ .algorithm_ssl = SSL_TLSV1_2,
+ .algo_strength = SSL_HIGH,
+ .algorithm2 = SSL_HANDSHAKE_MAC_SHA384|TLS1_PRF_SHA384,
+ .strength_bits = 256,
+ .alg_bits = 256,
+ },
+#endif /* OPENSSL_NO_CAMELLIA */
#if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305)
/* Cipher CC13 */
Index: lib/libssl/src/ssl/tls1.h
===================================================================
RCS file: /cvs/src/lib/libssl/src/ssl/tls1.h,v
retrieving revision 1.28
diff -u -p -r1.28 tls1.h
--- lib/libssl/src/ssl/tls1.h 28 Apr 2016 16:39:45 -0000 1.28
+++ lib/libssl/src/ssl/tls1.h 25 Aug 2016 13:45:27 -0000
@@ -536,6 +536,16 @@ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_T
#define TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256 0x0300C031
#define TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384 0x0300C032
+/* ECDH Camellia based ciphersuites from RFC 6367. */
+#define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C072
+#define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C073
+#define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C074
+#define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C075
+#define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C076
+#define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C077
+#define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C078
+#define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C079
+
/* ChaCha20-Poly1305 based ciphersuites. */
#define TLS1_CK_ECDHE_RSA_CHACHA20_POLY1305_OLD 0x0300CC13
#define TLS1_CK_ECDHE_ECDSA_CHACHA20_POLY1305_OLD 0x0300CC14
@@ -702,6 +712,16 @@ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_T
#define TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384
"ECDHE-RSA-AES256-GCM-SHA384"
#define TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256
"ECDH-RSA-AES128-GCM-SHA256"
#define TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384
"ECDH-RSA-AES256-GCM-SHA384"
+
+/* ECDH Camellia based ciphersuites from RFC 6367. */
+#define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
"ECDHE-ECDSA-CAMELLIA128-SHA256"
+#define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
"ECDHE-ECDSA-CAMELLIA256-SHA384"
+#define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
"ECDH-ECDSA-CAMELLIA128-SHA256"
+#define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
"ECDH-ECDSA-CAMELLIA256-SHA384"
+#define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
"ECDHE-RSA-CAMELLIA128-SHA256"
+#define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384
"ECDHE-RSA-CAMELLIA256-SHA384"
+#define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256
"ECDH-RSA-CAMELLIA128-SHA256"
+#define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384
"ECDH-RSA-CAMELLIA256-SHA384"
/* ChaCha20-Poly1305 based ciphersuites. */
#define TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305_OLD
"ECDHE-RSA-CHACHA20-POLY1305-OLD"