9d7d3f
From 6c5bb879f09c490ad9aebf50670cbe546d0aba4a Mon Sep 17 00:00:00 2001
9d7d3f
From: Kamil Dudka <kdudka@redhat.com>
9d7d3f
Date: Fri, 7 Mar 2014 13:02:03 +0100
9d7d3f
Subject: [PATCH 1/3] nss: do not enable AES cipher-suites by default
9d7d3f
9d7d3f
... but allow them to be enabled/disabled explicitly.  The default
9d7d3f
policy should be maintained at the NSS level.
9d7d3f
9d7d3f
Upstream-commit: b4f6cd46eb1b5a98573e0c0e619dc71646affdc8
9d7d3f
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
9d7d3f
---
9d7d3f
 lib/nss.c | 27 ++++-----------------------
9d7d3f
 1 file changed, 4 insertions(+), 23 deletions(-)
9d7d3f
9d7d3f
diff --git a/lib/nss.c b/lib/nss.c
9d7d3f
index abc8a91..289c55b 100644
9d7d3f
--- a/lib/nss.c
9d7d3f
+++ b/lib/nss.c
9d7d3f
@@ -122,6 +122,10 @@ static const cipher_s cipherlist[] = {
9d7d3f
   {"rsa_des_56_sha",             TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA},
9d7d3f
   {"rsa_rc4_56_sha",             TLS_RSA_EXPORT1024_WITH_RC4_56_SHA},
9d7d3f
   /* AES ciphers. */
9d7d3f
+  {"dhe_dss_aes_128_cbc_sha",    TLS_DHE_DSS_WITH_AES_128_CBC_SHA},
9d7d3f
+  {"dhe_dss_aes_256_cbc_sha",    TLS_DHE_DSS_WITH_AES_256_CBC_SHA},
9d7d3f
+  {"dhe_rsa_aes_128_cbc_sha",    TLS_DHE_RSA_WITH_AES_128_CBC_SHA},
9d7d3f
+  {"dhe_rsa_aes_256_cbc_sha",    TLS_DHE_RSA_WITH_AES_256_CBC_SHA},
9d7d3f
   {"rsa_aes_128_sha",            TLS_RSA_WITH_AES_128_CBC_SHA},
9d7d3f
   {"rsa_aes_256_sha",            TLS_RSA_WITH_AES_256_CBC_SHA},
9d7d3f
   /* ECC ciphers. */
9d7d3f
@@ -152,18 +156,6 @@ static const cipher_s cipherlist[] = {
9d7d3f
   {"ecdh_anon_aes_256_sha",      TLS_ECDH_anon_WITH_AES_256_CBC_SHA},
9d7d3f
 };
9d7d3f
 
9d7d3f
-/* following ciphers are new in NSS 3.4 and not enabled by default, therefore
9d7d3f
-   they are enabled explicitly */
9d7d3f
-static const int enable_ciphers_by_default[] = {
9d7d3f
-  TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
9d7d3f
-  TLS_DHE_DSS_WITH_AES_256_CBC_SHA,
9d7d3f
-  TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
9d7d3f
-  TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
9d7d3f
-  TLS_RSA_WITH_AES_128_CBC_SHA,
9d7d3f
-  TLS_RSA_WITH_AES_256_CBC_SHA,
9d7d3f
-  SSL_NULL_WITH_NULL_NULL
9d7d3f
-};
9d7d3f
-
9d7d3f
 static const char* pem_library = "libnsspem.so";
9d7d3f
 SECMODModule* mod = NULL;
9d7d3f
 
9d7d3f
@@ -1214,7 +1206,6 @@ CURLcode Curl_nss_connect(struct connectdata *conn, int sockindex)
9d7d3f
   curl_socket_t sockfd = conn->sock[sockindex];
9d7d3f
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
9d7d3f
   CURLcode curlerr;
9d7d3f
-  const int *cipher_to_enable;
9d7d3f
   PRSocketOptionData sock_opt;
9d7d3f
   long time_left;
9d7d3f
   PRUint32 timeout;
9d7d3f
@@ -1304,16 +1295,6 @@ CURLcode Curl_nss_connect(struct connectdata *conn, int sockindex)
9d7d3f
   /* reset the flag to avoid an infinite loop */
9d7d3f
   data->state.ssl_connect_retry = FALSE;
9d7d3f
 
9d7d3f
-  /* enable all ciphers from enable_ciphers_by_default */
9d7d3f
-  cipher_to_enable = enable_ciphers_by_default;
9d7d3f
-  while(SSL_NULL_WITH_NULL_NULL != *cipher_to_enable) {
9d7d3f
-    if(SSL_CipherPrefSet(model, *cipher_to_enable, PR_TRUE) != SECSuccess) {
9d7d3f
-      curlerr = CURLE_SSL_CIPHER;
9d7d3f
-      goto error;
9d7d3f
-    }
9d7d3f
-    cipher_to_enable++;
9d7d3f
-  }
9d7d3f
-
9d7d3f
   if(data->set.ssl.cipher_list) {
9d7d3f
     if(set_ciphers(data, model, data->set.ssl.cipher_list) != SECSuccess) {
9d7d3f
       curlerr = CURLE_SSL_CIPHER;
9d7d3f
-- 
9d7d3f
2.1.0
9d7d3f
9d7d3f
9d7d3f
From 0dac41d2469fe2990197912f4e2d58e1de6957e6 Mon Sep 17 00:00:00 2001
9d7d3f
From: Kamil Dudka <kdudka@redhat.com>
9d7d3f
Date: Fri, 7 Mar 2014 13:10:54 +0100
9d7d3f
Subject: [PATCH 2/3] nss: allow to enable/disable new HMAC-SHA256
9d7d3f
 cipher-suites
9d7d3f
9d7d3f
... if built against a new enough version of NSS
9d7d3f
9d7d3f
Upstream-commit: c864d81289297b04dbbca14e3c5307ef15e6f258
9d7d3f
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
9d7d3f
---
9d7d3f
 lib/nss.c | 10 ++++++++++
9d7d3f
 1 file changed, 10 insertions(+)
9d7d3f
9d7d3f
diff --git a/lib/nss.c b/lib/nss.c
9d7d3f
index 289c55b..ea0d4ef 100644
9d7d3f
--- a/lib/nss.c
9d7d3f
+++ b/lib/nss.c
9d7d3f
@@ -154,6 +154,16 @@ static const cipher_s cipherlist[] = {
9d7d3f
   {"ecdh_anon_3des_sha",         TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA},
9d7d3f
   {"ecdh_anon_aes_128_sha",      TLS_ECDH_anon_WITH_AES_128_CBC_SHA},
9d7d3f
   {"ecdh_anon_aes_256_sha",      TLS_ECDH_anon_WITH_AES_256_CBC_SHA},
9d7d3f
+#ifdef TLS_RSA_WITH_NULL_SHA256
9d7d3f
+  /* new HMAC-SHA256 cipher suites specified in RFC */
9d7d3f
+  {"rsa_null_sha_256",                TLS_RSA_WITH_NULL_SHA256},
9d7d3f
+  {"rsa_aes_128_cbc_sha_256",         TLS_RSA_WITH_AES_128_CBC_SHA256},
9d7d3f
+  {"rsa_aes_256_cbc_sha_256",         TLS_RSA_WITH_AES_256_CBC_SHA256},
9d7d3f
+  {"dhe_rsa_aes_128_cbc_sha_256",     TLS_DHE_RSA_WITH_AES_128_CBC_SHA256},
9d7d3f
+  {"dhe_rsa_aes_256_cbc_sha_256",     TLS_DHE_RSA_WITH_AES_256_CBC_SHA256},
9d7d3f
+  {"ecdhe_ecdsa_aes_128_cbc_sha_256", TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256},
9d7d3f
+  {"ecdhe_rsa_aes_128_cbc_sha_256",   TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256},
9d7d3f
+#endif
9d7d3f
 };
9d7d3f
 
9d7d3f
 static const char* pem_library = "libnsspem.so";
9d7d3f
-- 
9d7d3f
2.1.0
9d7d3f
9d7d3f
9d7d3f
From f9c89d4cf767a7e2ae39ae668ec30a71513a3d98 Mon Sep 17 00:00:00 2001
9d7d3f
From: Kamil Dudka <kdudka@redhat.com>
9d7d3f
Date: Fri, 7 Mar 2014 13:14:08 +0100
9d7d3f
Subject: [PATCH 3/3] nss: allow to enable/disable new AES GCM cipher-suites
9d7d3f
9d7d3f
... if built against a new enough version of NSS
9d7d3f
9d7d3f
Upstream-commit: 67061e3f4ec1c2f3b4bb02bbe2d91ccdeb147c60
9d7d3f
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
9d7d3f
---
9d7d3f
 lib/nss.c | 10 ++++++++++
9d7d3f
 1 file changed, 10 insertions(+)
9d7d3f
9d7d3f
diff --git a/lib/nss.c b/lib/nss.c
9d7d3f
index ea0d4ef..1381dc4 100644
9d7d3f
--- a/lib/nss.c
9d7d3f
+++ b/lib/nss.c
9d7d3f
@@ -164,6 +164,16 @@ static const cipher_s cipherlist[] = {
9d7d3f
   {"ecdhe_ecdsa_aes_128_cbc_sha_256", TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256},
9d7d3f
   {"ecdhe_rsa_aes_128_cbc_sha_256",   TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256},
9d7d3f
 #endif
9d7d3f
+#ifdef TLS_RSA_WITH_AES_128_GCM_SHA256
9d7d3f
+  /* AES GCM cipher suites in RFC 5288 and RFC 5289 */
9d7d3f
+  {"rsa_aes_128_gcm_sha_256",         TLS_RSA_WITH_AES_128_GCM_SHA256},
9d7d3f
+  {"dhe_rsa_aes_128_gcm_sha_256",     TLS_DHE_RSA_WITH_AES_128_GCM_SHA256},
9d7d3f
+  {"dhe_dss_aes_128_gcm_sha_256",     TLS_DHE_DSS_WITH_AES_128_GCM_SHA256},
9d7d3f
+  {"ecdhe_ecdsa_aes_128_gcm_sha_256", TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256},
9d7d3f
+  {"ecdh_ecdsa_aes_128_gcm_sha_256",  TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256},
9d7d3f
+  {"ecdhe_rsa_aes_128_gcm_sha_256",   TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256},
9d7d3f
+  {"ecdh_rsa_aes_128_gcm_sha_256",    TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256},
9d7d3f
+#endif
9d7d3f
 };
9d7d3f
 
9d7d3f
 static const char* pem_library = "libnsspem.so";
9d7d3f
-- 
9d7d3f
2.1.0
9d7d3f