diff options
| author | Kamil Dudka <kdudka@redhat.com> | 2016-10-27 14:57:11 +0200 | 
|---|---|---|
| committer | Kamil Dudka <kdudka@redhat.com> | 2016-11-07 11:52:07 +0100 | 
| commit | 6ad3add60654182a747f5971afb40817488ef0e8 (patch) | |
| tree | 7e45ea9851feb2bc253503c35967a46098f438b5 /lib/vtls | |
| parent | 5d45ced7a45ea38e32f1cbf73d7c63a3e4f241e7 (diff) | |
vtls: support TLS 1.3 via CURL_SSLVERSION_TLSv1_3
Fully implemented with the NSS backend only for now.
Reviewed-by: Ray Satiro
Diffstat (limited to 'lib/vtls')
| -rw-r--r-- | lib/vtls/darwinssl.c | 9 | ||||
| -rw-r--r-- | lib/vtls/gskit.c | 3 | ||||
| -rw-r--r-- | lib/vtls/gtls.c | 6 | ||||
| -rw-r--r-- | lib/vtls/nss.c | 8 | ||||
| -rw-r--r-- | lib/vtls/polarssl.c | 3 | ||||
| -rw-r--r-- | lib/vtls/schannel.c | 3 | 
6 files changed, 32 insertions, 0 deletions
diff --git a/lib/vtls/darwinssl.c b/lib/vtls/darwinssl.c index 66e74f1ba..6aa30d451 100644 --- a/lib/vtls/darwinssl.c +++ b/lib/vtls/darwinssl.c @@ -1071,6 +1071,9 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,          (void)SSLSetProtocolVersionMin(connssl->ssl_ctx, kTLSProtocol12);          (void)SSLSetProtocolVersionMax(connssl->ssl_ctx, kTLSProtocol12);          break; +      case CURL_SSLVERSION_TLSv1_3: +        failf(data, "TLSv1.3 is not yet supported with this TLS backend"); +        return CURLE_SSL_CONNECT_ERROR;        case CURL_SSLVERSION_SSLv3:          err = SSLSetProtocolVersionMin(connssl->ssl_ctx, kSSLProtocol3);          if(err != noErr) { @@ -1122,6 +1125,9 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,                                             kTLSProtocol12,                                             true);          break; +      case CURL_SSLVERSION_TLSv1_3: +        failf(data, "TLSv1.3 is not yet supported with this TLS backend"); +        return CURLE_SSL_CONNECT_ERROR;        case CURL_SSLVERSION_SSLv3:          err = SSLSetProtocolVersionEnabled(connssl->ssl_ctx,                                             kSSLProtocol3, @@ -1160,6 +1166,9 @@ static CURLcode darwinssl_connect_step1(struct connectdata *conn,      case CURL_SSLVERSION_TLSv1_2:        failf(data, "Your version of the OS does not support TLSv1.2");        return CURLE_SSL_CONNECT_ERROR; +    case CURL_SSLVERSION_TLSv1_3: +      failf(data, "Your version of the OS does not support TLSv1.3"); +      return CURLE_SSL_CONNECT_ERROR;      case CURL_SSLVERSION_SSLv2:        err = SSLSetProtocolVersionEnabled(connssl->ssl_ctx,                                           kSSLProtocol2, diff --git a/lib/vtls/gskit.c b/lib/vtls/gskit.c index 3b0cfd5a0..9760c93ab 100644 --- a/lib/vtls/gskit.c +++ b/lib/vtls/gskit.c @@ -639,6 +639,9 @@ static CURLcode gskit_connect_step1(struct connectdata *conn, int sockindex)    case CURL_SSLVERSION_TLSv1_2:      protoflags = CURL_GSKPROTO_TLSV12_MASK;      break; +  case CURL_SSLVERSION_TLSv1_3: +    failf(data, "TLS 1.3 not yet supported"); +    return CURLE_SSL_CIPHER;    }    /* Process SNI. Ignore if not supported (on OS400 < V7R1). */ diff --git a/lib/vtls/gtls.c b/lib/vtls/gtls.c index 5c87c7fe3..d47d80fc5 100644 --- a/lib/vtls/gtls.c +++ b/lib/vtls/gtls.c @@ -569,6 +569,9 @@ gtls_connect_step1(struct connectdata *conn,        break;      case CURL_SSLVERSION_TLSv1_2:        protocol_priority[0] = GNUTLS_TLS1_2; +    case CURL_SSLVERSION_TLSv1_3: +      failf(data, "GnuTLS does not support TLSv1.3"); +      return CURLE_SSL_CONNECT_ERROR;      break;        case CURL_SSLVERSION_SSLv2:      default: @@ -607,6 +610,9 @@ gtls_connect_step1(struct connectdata *conn,        prioritylist = GNUTLS_CIPHERS ":-VERS-SSL3.0:-VERS-TLS-ALL:"                       "+VERS-TLS1.2:" GNUTLS_SRP;        break; +    case CURL_SSLVERSION_TLSv1_3: +      failf(data, "GnuTLS does not support TLSv1.3"); +      return CURLE_SSL_CONNECT_ERROR;      case CURL_SSLVERSION_SSLv2:      default:        failf(data, "GnuTLS does not support SSLv2"); diff --git a/lib/vtls/nss.c b/lib/vtls/nss.c index 5abb57427..5e5272727 100644 --- a/lib/vtls/nss.c +++ b/lib/vtls/nss.c @@ -1541,6 +1541,14 @@ static CURLcode nss_init_sslver(SSLVersionRange *sslver,  #endif      break; +  case CURL_SSLVERSION_TLSv1_3: +#ifdef SSL_LIBRARY_VERSION_TLS_1_3 +    sslver->min = SSL_LIBRARY_VERSION_TLS_1_3; +    sslver->max = SSL_LIBRARY_VERSION_TLS_1_3; +    return CURLE_OK; +#endif +    break; +    default:      /* unsupported SSL/TLS version */      break; diff --git a/lib/vtls/polarssl.c b/lib/vtls/polarssl.c index 18b564e02..4e41315b6 100644 --- a/lib/vtls/polarssl.c +++ b/lib/vtls/polarssl.c @@ -306,6 +306,9 @@ polarssl_connect_step1(struct connectdata *conn,                          SSL_MINOR_VERSION_3);      infof(data, "PolarSSL: Forced min. SSL Version to be TLS 1.2\n");      break; +  case CURL_SSLVERSION_TLSv1_3: +    failf(data, "PolarSSL: TLS 1.3 is not yet supported"); +    return CURLE_SSL_CONNECT_ERROR;    }    ssl_set_endpoint(&connssl->ssl, SSL_IS_CLIENT); diff --git a/lib/vtls/schannel.c b/lib/vtls/schannel.c index f731eebdc..63cb98a3c 100644 --- a/lib/vtls/schannel.c +++ b/lib/vtls/schannel.c @@ -213,6 +213,9 @@ schannel_connect_step1(struct connectdata *conn, int sockindex)      case CURL_SSLVERSION_TLSv1_2:        schannel_cred.grbitEnabledProtocols = SP_PROT_TLS1_2_CLIENT;        break; +    case CURL_SSLVERSION_TLSv1_3: +      failf(data, "schannel: TLS 1.3 is not yet supported"); +      return CURLE_SSL_CONNECT_ERROR;      case CURL_SSLVERSION_SSLv3:        schannel_cred.grbitEnabledProtocols = SP_PROT_SSL3_CLIENT;        break;  | 
