[openssl-commits] [openssl] master update

Dr. Stephen Henson steve at openssl.org
Mon May 9 16:46:50 UTC 2016


The branch master has been updated
       via  f7aa318552c4ef62d902c480b59bd7c4513c0009 (commit)
      from  3105d695358d86c0f2a404b2b74a1870b941ce5e (commit)


- Log -----------------------------------------------------------------
commit f7aa318552c4ef62d902c480b59bd7c4513c0009
Author: David Benjamin <davidben at google.com>
Date:   Sat Mar 5 19:49:20 2016 -0500

    Don't send signature algorithms when client_version is below TLS 1.2.
    
    Per RFC 5246,
    
        Note: this extension is not meaningful for TLS versions prior to 1.2.
        Clients MUST NOT offer it if they are offering prior versions.
        However, even if clients do offer it, the rules specified in [TLSEXT]
        require servers to ignore extensions they do not understand.
    
    Although second sentence would suggest that there would be no interop
    problems in always offering the extension, WebRTC has reported issues
    with Bouncy Castle on < TLS 1.2 ClientHellos that still include
    signature_algorithms. See also
    https://bugs.chromium.org/p/webrtc/issues/detail?id=4223
    
    RT#4390
    
    Reviewed-by: Matt Caswell <matt at openssl.org>
    Reviewed-by: Stephen Henson <steve at openssl.org>

-----------------------------------------------------------------------

Summary of changes:
 ssl/ssl_locl.h | 6 ++++++
 ssl/t1_lib.c   | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h
index 50e0d39..983c36b 100644
--- a/ssl/ssl_locl.h
+++ b/ssl/ssl_locl.h
@@ -453,6 +453,12 @@
 # define SSL_CLIENT_USE_TLS1_2_CIPHERS(s)        \
     ((!SSL_IS_DTLS(s) && s->client_version >= TLS1_2_VERSION) || \
      (SSL_IS_DTLS(s) && DTLS_VERSION_GE(s->client_version, DTLS1_2_VERSION)))
+/*
+ * Determine if a client should send signature algorithms extension:
+ * as with TLS1.2 cipher we can't rely on method flags.
+ */
+# define SSL_CLIENT_USE_SIGALGS(s)        \
+    SSL_CLIENT_USE_TLS1_2_CIPHERS(s)
 
 # ifdef TLSEXT_TYPE_encrypt_then_mac
 #  define SSL_USE_ETM(s) (s->s3->flags & TLS1_FLAGS_ENCRYPT_THEN_MAC)
diff --git a/ssl/t1_lib.c b/ssl/t1_lib.c
index 0a66c09..6363348 100644
--- a/ssl/t1_lib.c
+++ b/ssl/t1_lib.c
@@ -1331,7 +1331,7 @@ unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *buf,
     }
  skip_ext:
 
-    if (SSL_USE_SIGALGS(s)) {
+    if (SSL_CLIENT_USE_SIGALGS(s)) {
         size_t salglen;
         const unsigned char *salg;
         unsigned char *etmp;


More information about the openssl-commits mailing list