From dc68120e6352cc2516bf25758f3aae71400b9702 Mon Sep 17 00:00:00 2001 From: Steve Holme Date: Sat, 30 Nov 2013 10:59:01 +0000 Subject: [PATCH] curl_easy_getinfo: Post CURLINFO_TLS_SESSION tidy up 1) Renamed curl_tlsinfo to curl_tlssessioninfo as discussed on the mailing list. 2) Renamed curl_ssl_backend to curl_sslbackend so it doesn't follow our function naming convention. 3) Updated sessioninfo.c example accordingly. --- docs/examples/sessioninfo.c | 14 ++++++-------- include/curl/curl.h | 6 +++--- lib/getinfo.c | 31 ++++++++++++++++--------------- lib/urldata.h | 4 ++-- 4 files changed, 27 insertions(+), 28 deletions(-) diff --git a/docs/examples/sessioninfo.c b/docs/examples/sessioninfo.c index ac0cbb158..2641c7139 100644 --- a/docs/examples/sessioninfo.c +++ b/docs/examples/sessioninfo.c @@ -32,7 +32,7 @@ static CURL *curl; static size_t wrfu(void *ptr, size_t size, size_t nmemb, void *stream) { - const struct curl_tlsinfo *tlsinfo; + const struct curl_tlssessioninfo *info; unsigned int cert_list_size; const gnutls_datum_t *chainp; CURLcode res; @@ -40,14 +40,13 @@ static size_t wrfu(void *ptr, size_t size, size_t nmemb, void *stream) (void)stream; (void)ptr; - res = curl_easy_getinfo(curl, CURLINFO_TLS_SESSION, &tlsinfo); + res = curl_easy_getinfo(curl, CURLINFO_TLS_SESSION, &info); if(!res) { - switch(tlsinfo->ssl_backend) { + switch(info->backend) { case CURLSSLBACKEND_GNUTLS: - /* tlsinfo->internals is now the gnutls_session_t */ - chainp = gnutls_certificate_get_peers(tlsinfo->internals, - &cert_list_size); + /* info->internals is now the gnutls_session_t */ + chainp = gnutls_certificate_get_peers(info->internals, &cert_list_size); if((chainp) && (cert_list_size)) { unsigned int i; @@ -57,8 +56,7 @@ static size_t wrfu(void *ptr, size_t size, size_t nmemb, void *stream) if(GNUTLS_E_SUCCESS == gnutls_x509_crt_init(&cert)) { if(GNUTLS_E_SUCCESS == - gnutls_x509_crt_import(cert, &chainp[i], - GNUTLS_X509_FMT_DER)) { + gnutls_x509_crt_import(cert, &chainp[i], GNUTLS_X509_FMT_DER)) { if(GNUTLS_E_SUCCESS == gnutls_x509_crt_print(cert, GNUTLS_CRT_PRINT_FULL, &dn)) { fprintf(stderr, "Certificate #%d: %.*s", i, dn.size, dn.data); diff --git a/include/curl/curl.h b/include/curl/curl.h index b58939b00..5c63dd894 100644 --- a/include/curl/curl.h +++ b/include/curl/curl.h @@ -1997,13 +1997,13 @@ typedef enum { CURLSSLBACKEND_CYASSL = 7, CURLSSLBACKEND_SCHANNEL = 8, CURLSSLBACKEND_DARWINSSL = 9 -} curl_ssl_backend; +} curl_sslbackend; /* Information about the SSL library used and the respective internal SSL handle, which can be used to obtain further information regarding the connection. Asked for with CURLINFO_TLS_SESSION. */ -struct curl_tlsinfo { - curl_ssl_backend ssl_backend; +struct curl_tlssessioninfo { + curl_sslbackend backend; void *internals; }; diff --git a/lib/getinfo.c b/lib/getinfo.c index cd5a62ac0..c5c00e048 100644 --- a/lib/getinfo.c +++ b/lib/getinfo.c @@ -279,14 +279,15 @@ static CURLcode getinfo_slist(struct SessionHandle *data, CURLINFO info, break; case CURLINFO_TLS_SESSION: { - struct curl_tlsinfo **tlsinfop = (struct curl_tlsinfo **) param_slistp; - struct curl_tlsinfo *tlsinfo = &data->tlsinfo; + struct curl_tlssessioninfo **tsip = (struct curl_tlssessioninfo **) + param_slistp; + struct curl_tlssessioninfo *tsi = &data->tsi; struct connectdata *conn = data->easy_conn; unsigned int sockindex = 0; - *tlsinfop = tlsinfo; - tlsinfo->ssl_backend = CURLSSLBACKEND_NONE; - tlsinfo->internals = NULL; + *tsip = tsi; + tsi->backend = CURLSSLBACKEND_NONE; + tsi->internals = NULL; if(!conn) break; @@ -301,24 +302,24 @@ static CURLcode getinfo_slist(struct SessionHandle *data, CURLINFO info, /* Return the TLS session information from the relevant backend */ #ifdef USE_SSLEAY - tlsinfo->ssl_backend = CURLSSLBACKEND_OPENSSL; - tlsinfo->internals = conn->ssl[sockindex].ctx; + tsi->backend = CURLSSLBACKEND_OPENSSL; + tsi->internals = conn->ssl[sockindex].ctx; #endif #ifdef USE_GNUTLS - tlsinfo->ssl_backend = CURLSSLBACKEND_GNUTLS; - tlsinfo->internals = conn->ssl[sockindex].session; + tsi->backend = CURLSSLBACKEND_GNUTLS; + tsi->internals = conn->ssl[sockindex].session; #endif #ifdef USE_NSS - tlsinfo->ssl_backend = CURLSSLBACKEND_NSS; - tlsinfo->internals = conn->ssl[sockindex].handle; + tsi->backend = CURLSSLBACKEND_NSS; + tsi->internals = conn->ssl[sockindex].handle; #endif #ifdef USE_QSOSSL - tlsinfo->ssl_backend = CURLSSLBACKEND_QSOSSL; - tlsinfo->internals = conn->ssl[sockindex].handle; + tsi->backend = CURLSSLBACKEND_QSOSSL; + tsi->internals = conn->ssl[sockindex].handle; #endif #ifdef USE_GSKIT - tlsinfo->ssl_backend = CURLSSLBACKEND_GSKIT; - tlsinfo->internals = conn->ssl[sockindex].handle; + tsi->backend = CURLSSLBACKEND_GSKIT; + tsi->internals = conn->ssl[sockindex].handle; #endif /* 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 diff --git a/lib/urldata.h b/lib/urldata.h index 29cf9603b..a00894e5c 100644 --- a/lib/urldata.h +++ b/lib/urldata.h @@ -1637,8 +1637,8 @@ struct SessionHandle { other dynamic purposes */ struct WildcardData wildcard; /* wildcard download state info */ struct PureInfo info; /* stats, reports and info data */ - struct curl_tlsinfo tlsinfo; /* Information about the TLS session, only - valid after a client has asked for it */ + struct curl_tlssessioninfo tsi; /* Information about the TLS session, only + valid after a client has asked for it */ #if defined(CURL_DOES_CONVERSIONS) && defined(HAVE_ICONV) iconv_t outbound_cd; /* for translating to the network encoding */ iconv_t inbound_cd; /* for translating from the network encoding */