Allow use of RSA-PSS certificates in TLS 1.2
authorDr. Stephen Henson <steve@openssl.org>
Thu, 14 Sep 2017 13:48:39 +0000 (14:48 +0100)
committerDr. Stephen Henson <steve@openssl.org>
Wed, 20 Sep 2017 11:50:23 +0000 (12:50 +0100)
Reviewed-by: Ben Kaduk <kaduk@mit.edu>
(Merged from https://github.com/openssl/openssl/pull/4368)

ssl/ssl_lib.c

index b02d4f1..cc110bc 100644 (file)
@@ -3090,9 +3090,15 @@ void ssl_set_masks(SSL *s)
     if (dh_tmp)
         mask_k |= SSL_kDHE;
 
-    if (rsa_enc || rsa_sign) {
+    /*
+     * If we only have an RSA-PSS certificate allow RSA authentication
+     * if TLS 1.2 and peer supports it.
+     */
+
+    if (rsa_enc || rsa_sign || (ssl_has_cert(s, SSL_PKEY_RSA_PSS_SIGN)
+                && pvalid[SSL_PKEY_RSA_PSS_SIGN] & CERT_PKEY_EXPLICIT_SIGN
+                && TLS1_get_version(s) == TLS1_2_VERSION))
         mask_a |= SSL_aRSA;
-    }
 
     if (dsa_sign) {
         mask_a |= SSL_aDSS;