Blame SOURCES/mod_nss-sha384_cipher.patch

b7538d
diff -up --recursive mod_nss-1.0.11/nss_engine_cipher.c mod_nss-1.0.11.cipher/nss_engine_cipher.c
b7538d
--- mod_nss-1.0.11/nss_engine_cipher.c	2015-09-22 10:08:46.977756724 -0400
b7538d
+++ mod_nss-1.0.11.cipher/nss_engine_cipher.c	2015-09-22 13:50:49.320055436 -0400
b7538d
@@ -42,6 +42,7 @@ cipher_properties ciphers_def[ciphernum]
b7538d
     {"rsa_rc4_56_sha", TLS_RSA_EXPORT1024_WITH_RC4_56_SHA, "EXP1024-RC4-SHA", SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_SHA1, TLSV1, SSL_EXPORT56, 56, 128},
b7538d
     {"camelia_256_sha", TLS_RSA_WITH_CAMELLIA_256_CBC_SHA, "CAMELLIA256-SHA", SSL_kRSA|SSL_aRSA|SSL_CAMELLIA256|SSL_SHA1, TLSV1, SSL_HIGH, 256, 256},
b7538d
     {"rsa_aes_128_gcm_sha_256", TLS_RSA_WITH_AES_128_GCM_SHA256, "AES128-GCM-SHA256", SSL_kRSA|SSL_aRSA|SSL_AES128GCM|SSL_AEAD, TLSV1_2, SSL_HIGH, 128, 128},
b7538d
+    {"rsa_aes_256_gcm_sha_384", TLS_RSA_WITH_AES_256_GCM_SHA384, "AES256-GCM-SHA384", SSL_kRSA|SSL_aRSA|SSL_AES256GCM|SSL_AEAD, TLSV1_2, SSL_HIGH, 256, 256},
b7538d
     {"fips_3des_sha", SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA, "FIPS-DES-CBC3-SHA", SSL_kRSA|SSL_aRSA|SSL_3DES|SSL_SHA1, SSLV3, SSL_HIGH, 112, 168},
b7538d
     {"fips_des_sha", SSL_RSA_FIPS_WITH_DES_CBC_SHA, "FIPS-DES-CBC-SHA", SSL_kRSA|SSL_aRSA|SSL_DES|SSL_SHA1, SSLV3, SSL_LOW, 56, 56},
b7538d
 #ifdef NSS_ENABLE_ECC
b7538d
@@ -73,6 +74,10 @@ cipher_properties ciphers_def[ciphernum]
b7538d
     {"ecdhe_ecdsa_aes_128_sha_256", TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, "ECDHE-ECDSA-AES128-SHA256", SSL_kEECDH|SSL_aECDSA|SSL_AES128|SSL_SHA256, TLSV1_2, SSL_HIGH, 128, 128},
b7538d
     {"ecdhe_rsa_aes_128_sha_256", TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, "ECDHE-RSA-AES128-SHA256", SSL_kEECDH|SSL_aRSA|SSL_AES128|SSL_SHA256, TLSV1_2, SSL_HIGH, 128, 128},
b7538d
     {"ecdhe_ecdsa_aes_128_gcm_sha_256", TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, "ECDHE-ECDSA-AES128-GCM-SHA256", SSL_kEECDH|SSL_aECDSA|SSL_AES128GCM|SSL_AEAD, TLSV1_2, SSL_HIGH, 128, 128},
b7538d
+    {"ecdhe_ecdsa_aes_256_sha_384", TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, "ECDHE-ECDSA-AES256-SHA384", SSL_kEECDH|SSL_aECDSA|SSL_AES256|SSL_SHA384, TLSV1_2, SSL_HIGH, 256, 256},
b7538d
+    {"ecdhe_rsa_aes_256_sha_384", TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, "ECDHE-RSA-AES256-SHA384", SSL_kEECDH|SSL_aRSA|SSL_AES256|SSL_SHA384, TLSV1_2, SSL_HIGH, 256, 256},
b7538d
+    {"ecdhe_ecdsa_aes_256_gcm_sha_384", TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, "ECDHE-ECDSA-AES256-GCM-SHA384", SSL_kEECDH|SSL_aECDSA|SSL_AES256GCM|SSL_AEAD, TLSV1_2, SSL_HIGH, 256, 256},
b7538d
+    {"ecdhe_rsa_aes_256_gcm_sha_384", TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, "ECDHE-RSA-AES256-GCM-SHA384", SSL_kEECDH|SSL_aRSA|SSL_AES256GCM|SSL_AEAD, TLSV1_2, SSL_HIGH, 256, 256},
b7538d
     {"ecdhe_rsa_aes_128_gcm_sha_256", TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, "ECDHE-RSA-AES128-GCM-SHA256", SSL_kEECDH|SSL_aRSA|SSL_AES128GCM|SSL_AEAD, TLSV1_2, SSL_HIGH, 128, 128},
b7538d
     /* TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 is not implemented */
b7538d
     /* TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 is not implemented */
b7538d
@@ -323,6 +328,8 @@ static int parse_openssl_ciphers(server_
b7538d
                     mask |= SSL_SHA1;
b7538d
                 } else if (!strcmp(cipher, "SHA256")) {
b7538d
                     mask |= SSL_SHA256;
b7538d
+                } else if (!strcmp(cipher, "SHA384")) {
b7538d
+                    mask |= SSL_SHA384;
b7538d
                 } else if (!strcmp(cipher, "SSLv2")) {
b7538d
                     /* no-op */
b7538d
                 } else if (!strcmp(cipher, "SSLv3")) {
b7538d
diff -up --recursive mod_nss-1.0.11/nss_engine_cipher.h mod_nss-1.0.11.cipher/nss_engine_cipher.h
b7538d
--- mod_nss-1.0.11/nss_engine_cipher.h	2015-09-22 10:08:13.915509295 -0400
b7538d
+++ mod_nss-1.0.11.cipher/nss_engine_cipher.h	2015-09-22 13:45:18.838532130 -0400
b7538d
@@ -70,7 +70,8 @@ typedef struct
b7538d
 #define SSL_AES128GCM     0x04000000L
b7538d
 #define SSL_AES256GCM     0x08000000L
b7538d
 #define SSL_SHA256        0x10000000L
b7538d
-#define SSL_AEAD          0x20000000L
b7538d
+#define SSL_SHA384        0x20000000L
b7538d
+#define SSL_AEAD          0x40000000L
b7538d
 
b7538d
 #define SSL_AES           (SSL_AES128|SSL_AES256|SSL_AES128GCM|SSL_AES256GCM)
b7538d
 #define SSL_CAMELLIA      (SSL_CAMELLIA128|SSL_CAMELLIA256)
b7538d
@@ -83,9 +84,9 @@ typedef struct
b7538d
 
b7538d
 /* the table itself is defined in nss_engine_cipher.c */
b7538d
 #ifdef NSS_ENABLE_ECC
b7538d
-#define ciphernum 49
b7538d
+#define ciphernum 54
b7538d
 #else
b7538d
-#define ciphernum 20
b7538d
+#define ciphernum 21
b7538d
 #endif
b7538d
 
b7538d
 /* function prototypes */
b7538d
diff -up --recursive mod_nss-1.0.11/test/test_cipher.py mod_nss-1.0.11.cipher/test/test_cipher.py
b7538d
--- mod_nss-1.0.11/test/test_cipher.py	2015-09-22 10:08:46.977756724 -0400
b7538d
+++ mod_nss-1.0.11.cipher/test/test_cipher.py	2015-09-22 13:50:05.214717202 -0400
b7538d
@@ -19,6 +19,10 @@ CIPHERS_NOT_IN_NSS = ['ECDH-RSA-AES128-S
b7538d
                       'ECDH-ECDSA-AES128-SHA256',
b7538d
                       'ECDH-RSA-AES128-GCM-SHA256',
b7538d
                       'EXP-DES-CBC-SHA',
b7538d
+                      'ECDH-RSA-AES256-GCM-SHA384',
b7538d
+                      'ECDH-ECDSA-AES256-SHA384',
b7538d
+                      'ECDH-RSA-AES256-SHA384',
b7538d
+                      'ECDH-ECDSA-AES256-GCM-SHA384',
b7538d
 ]
b7538d
 
b7538d
 def assert_equal_openssl(nss_ciphers, ossl_ciphers):
b7538d
@@ -34,12 +38,10 @@ def assert_equal_openssl(nss_ciphers, os
b7538d
     ossl_list = list(set(ossl_list))
b7538d
     ossl_list.sort()
b7538d
 
b7538d
-    # NSS doesn't support the SHA-384 ciphers, remove them from the OpenSSL
b7538d
-    # output.
b7538d
+    # NSS doesn't support the all the same ciphers as OpenSSL. Remove
b7538d
+    # the ones we know about from the OpenSSL output.
b7538d
     t = list()
b7538d
     for o in ossl_list:
b7538d
-        if 'SHA384' in o:
b7538d
-            continue
b7538d
         if o in CIPHERS_NOT_IN_NSS:
b7538d
             continue
b7538d
         t.append(o)