Navigation Menu

Skip to content

Commit

Permalink
ssl: generalize how the ssl backend identifier is set
Browse files Browse the repository at this point in the history
Each backend now defines CURL_SSL_BACKEND accordingly. Added the *AXTLS
one which was missing previously.
  • Loading branch information
bagder committed Jul 31, 2014
1 parent 028a408 commit a439e43
Show file tree
Hide file tree
Showing 15 changed files with 33 additions and 15 deletions.
1 change: 1 addition & 0 deletions docs/libcurl/symbols-in-versions
Expand Up @@ -604,6 +604,7 @@ CURLSSH_AUTH_KEYBOARD 7.16.1
CURLSSH_AUTH_NONE 7.16.1
CURLSSH_AUTH_PASSWORD 7.16.1
CURLSSH_AUTH_PUBLICKEY 7.16.1
CURLSSLBACKEND_AXTLS 7.38.0
CURLSSLBACKEND_CYASSL 7.34.0
CURLSSLBACKEND_DARWINSSL 7.34.0
CURLSSLBACKEND_GNUTLS 7.34.0
Expand Down
3 changes: 2 additions & 1 deletion include/curl/curl.h
Expand Up @@ -2033,7 +2033,8 @@ typedef enum {
CURLSSLBACKEND_POLARSSL = 6,
CURLSSLBACKEND_CYASSL = 7,
CURLSSLBACKEND_SCHANNEL = 8,
CURLSSLBACKEND_DARWINSSL = 9
CURLSSLBACKEND_DARWINSSL = 9,
CURLSSLBACKEND_AXTLS = 10
} curl_sslbackend;

/* Information about the SSL library used and the respective internal SSL
Expand Down
20 changes: 10 additions & 10 deletions lib/getinfo.c
Expand Up @@ -285,6 +285,7 @@ static CURLcode getinfo_slist(struct SessionHandle *data, CURLINFO info,
struct curl_tlssessioninfo *tsi = &data->tsi;
struct connectdata *conn = data->easy_conn;
unsigned int sockindex = 0;
void *internals = NULL;

*tsip = tsi;
tsi->backend = CURLSSLBACKEND_NONE;
Expand All @@ -303,25 +304,24 @@ static CURLcode getinfo_slist(struct SessionHandle *data, CURLINFO info,

/* Return the TLS session information from the relevant backend */
#ifdef USE_SSLEAY
tsi->backend = CURLSSLBACKEND_OPENSSL;
tsi->internals = conn->ssl[sockindex].ctx;
internals = conn->ssl[sockindex].ctx;
#endif
#ifdef USE_GNUTLS
tsi->backend = CURLSSLBACKEND_GNUTLS;
tsi->internals = conn->ssl[sockindex].session;
internals = conn->ssl[sockindex].session;
#endif
#ifdef USE_NSS
tsi->backend = CURLSSLBACKEND_NSS;
tsi->internals = conn->ssl[sockindex].handle;
internals = conn->ssl[sockindex].handle;
#endif
#ifdef USE_QSOSSL
tsi->backend = CURLSSLBACKEND_QSOSSL;
tsi->internals = conn->ssl[sockindex].handle;
internals = conn->ssl[sockindex].handle;
#endif
#ifdef USE_GSKIT
tsi->backend = CURLSSLBACKEND_GSKIT;
tsi->internals = conn->ssl[sockindex].handle;
internals = conn->ssl[sockindex].handle;
#endif
if(internals) {
tsi->backend = Curl_ssl_backend();
tsi->internals = internals;
}
/* NOTE: For other SSL backends, it is not immediately clear what data
to return from 'struct ssl_connect_data'; thus, for now we keep the
backend as CURLSSLBACKEND_NONE in those cases, which should be
Expand Down
2 changes: 1 addition & 1 deletion lib/vtls/axtls.h
Expand Up @@ -66,7 +66,7 @@ int Curl_axtls_random(struct SessionHandle *data,
#define curlssl_check_cxn(x) Curl_axtls_check_cxn(x)
#define curlssl_data_pending(x,y) (x=x, y=y, 0)
#define curlssl_random(x,y,z) Curl_axtls_random(x,y,z)

#define CURL_SSL_BACKEND CURLSSLBACKEND_AXTLS
#endif /* USE_AXTLS */
#endif /* HEADER_CURL_AXTLS_H */

1 change: 1 addition & 0 deletions lib/vtls/curl_darwinssl.h
Expand Up @@ -71,6 +71,7 @@ void Curl_darwinssl_md5sum(unsigned char *tmp, /* input */
#define curlssl_data_pending(x,y) Curl_darwinssl_data_pending(x, y)
#define curlssl_random(x,y,z) Curl_darwinssl_random(y,z)
#define curlssl_md5sum(a,b,c,d) Curl_darwinssl_md5sum(a,b,c,d)
#define CURL_SSL_BACKEND CURLSSLBACKEND_DARWINSSL

#endif /* USE_DARWINSSL */
#endif /* HEADER_CURL_DARWINSSL_H */
3 changes: 2 additions & 1 deletion lib/vtls/curl_schannel.h
Expand Up @@ -8,7 +8,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2012, Marc Hoersken, <info@marc-hoersken.de>, et al.
* Copyright (C) 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
Expand Down Expand Up @@ -128,5 +128,6 @@ size_t Curl_schannel_version(char *buffer, size_t size);
#define curlssl_version Curl_schannel_version
#define curlssl_check_cxn(x) (x=x, -1)
#define curlssl_data_pending Curl_schannel_data_pending
#define CURL_SSL_BACKEND CURLSSLBACKEND_SCHANNEL
#endif /* USE_SCHANNEL */
#endif /* HEADER_CURL_SCHANNEL_H */
1 change: 1 addition & 0 deletions lib/vtls/cyassl.h
Expand Up @@ -63,6 +63,7 @@ int Curl_cyassl_random(struct SessionHandle *data,
#define curlssl_check_cxn(x) (x=x, -1)
#define curlssl_data_pending(x,y) Curl_cyassl_data_pending(x,y)
#define curlssl_random(x,y,z) Curl_cyassl_random(x,y,z)
#define CURL_SSL_BACKEND CURLSSLBACKEND_CYASSL

#endif /* USE_CYASSL */
#endif /* HEADER_CURL_CYASSL_H */
3 changes: 2 additions & 1 deletion lib/vtls/gskit.h
Expand Up @@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
Expand Down Expand Up @@ -59,6 +59,7 @@ int Curl_gskit_check_cxn(struct connectdata * cxn);
#define curlssl_version Curl_gskit_version
#define curlssl_check_cxn(x) Curl_gskit_check_cxn(x)
#define curlssl_data_pending(x,y) 0
#define CURL_SSL_BACKEND CURLSSLBACKEND_GSKIT
#endif /* USE_GSKIT */

#endif /* HEADER_CURL_GSKIT_H */
1 change: 1 addition & 0 deletions lib/vtls/gtls.h
Expand Up @@ -73,6 +73,7 @@ void Curl_gtls_md5sum(unsigned char *tmp, /* input */
#define curlssl_data_pending(x,y) (x=x, y=y, 0)
#define curlssl_random(x,y,z) Curl_gtls_random(x,y,z)
#define curlssl_md5sum(a,b,c,d) Curl_gtls_md5sum(a,b,c,d)
#define CURL_SSL_BACKEND CURLSSLBACKEND_GNUTLS

#endif /* USE_GNUTLS */
#endif /* HEADER_CURL_GTLS_H */
1 change: 1 addition & 0 deletions lib/vtls/nssg.h
Expand Up @@ -83,6 +83,7 @@ void Curl_nss_md5sum(unsigned char *tmp, /* input */
#define curlssl_data_pending(x,y) (x=x, y=y, 0)
#define curlssl_random(x,y,z) Curl_nss_random(x,y,z)
#define curlssl_md5sum(a,b,c,d) Curl_nss_md5sum(a,b,c,d)
#define CURL_SSL_BACKEND CURLSSLBACKEND_NSS

#endif /* USE_NSS */
#endif /* HEADER_CURL_NSSG_H */
1 change: 1 addition & 0 deletions lib/vtls/openssl.h
Expand Up @@ -93,6 +93,7 @@ void Curl_ossl_md5sum(unsigned char *tmp, /* input */
#define curlssl_data_pending(x,y) Curl_ossl_data_pending(x,y)
#define curlssl_random(x,y,z) Curl_ossl_random(x,y,z)
#define curlssl_md5sum(a,b,c,d) Curl_ossl_md5sum(a,b,c,d)
#define CURL_SSL_BACKEND CURLSSLBACKEND_OPENSSL

#define DEFAULT_CIPHER_SELECTION "ALL!EXPORT!EXPORT40!EXPORT56!aNULL!LOW!RC4"

Expand Down
1 change: 1 addition & 0 deletions lib/vtls/polarssl.h
Expand Up @@ -62,6 +62,7 @@ int Curl_polarssl_shutdown(struct connectdata *conn, int sockindex);
#define curlssl_version Curl_polarssl_version
#define curlssl_check_cxn(x) (x=x, -1)
#define curlssl_data_pending(x,y) (x=x, y=y, 0)
#define CURL_SSL_BACKEND CURLSSLBACKEND_POLARSSL

/* This might cause libcurl to use a weeker random!
TODO: implement proper use of Polarssl's CTR-DRBG or HMAC-DRBG and use that
Expand Down
3 changes: 2 additions & 1 deletion lib/vtls/qssl.h
Expand Up @@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
Expand Down Expand Up @@ -56,6 +56,7 @@ int Curl_qsossl_check_cxn(struct connectdata * cxn);
#define curlssl_version Curl_qsossl_version
#define curlssl_check_cxn(x) Curl_qsossl_check_cxn(x)
#define curlssl_data_pending(x,y) 0
#define CURL_SSL_BACKEND CURLSSLBACKEND_QSOSSL
#endif /* USE_QSOSSL */

#endif /* HEADER_CURL_QSSL_H */
5 changes: 5 additions & 0 deletions lib/vtls/vtls.c
Expand Up @@ -697,4 +697,9 @@ void Curl_ssl_md5sum(unsigned char *tmp, /* input */
}
#endif

int Curl_ssl_backend(void)
{
return (int)CURL_SSL_BACKEND;
}

#endif /* USE_SSL */
2 changes: 2 additions & 0 deletions lib/vtls/vtls.h
Expand Up @@ -96,6 +96,7 @@ void Curl_ssl_md5sum(unsigned char *tmp, /* input */
size_t tmplen,
unsigned char *md5sum, /* output */
size_t md5len);
int Curl_ssl_backend(void);

#define SSL_SHUTDOWN_TIMEOUT 10000 /* ms */

Expand Down Expand Up @@ -124,6 +125,7 @@ void Curl_ssl_md5sum(unsigned char *tmp, /* input */
#define Curl_ssl_connect_nonblocking(x,y,z) CURLE_NOT_BUILT_IN
#define Curl_ssl_kill_session(x) Curl_nop_stmt
#define Curl_ssl_random(x,y,z) CURLE_NOT_BUILT_IN
#define CURL_SSL_BACKEND CURLSSLBACKEND_NONE
#endif

#endif /* HEADER_CURL_VTLS_H */

0 comments on commit a439e43

Please sign in to comment.