Skip to content

Commit

Permalink
CURLINFO_TLS_SESSION: always return backend info
Browse files Browse the repository at this point in the history
... even for those that don't support providing anything in the
'internals' struct member since it offers a convenient way for
applications to figure this out.
  • Loading branch information
bagder committed Sep 22, 2015
1 parent 1467dec commit 7362008
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 7 deletions.
12 changes: 10 additions & 2 deletions docs/libcurl/opts/CURLINFO_TLS_SESSION.3
Expand Up @@ -38,8 +38,8 @@ internal TLS session structure of this underlying SSL library.
This may then be used to extract certificate information in a format
convenient for further processing, such as manual validation. NOTE: this
option may not be available for all SSL backends; unsupported SSL backends
will return 'CURLSSLBACKEND_NONE' to indicate that they are not supported;
this does not mean that no SSL backend was used.
will always return NULL in the \fIinternals\fP pointer to indicate that they
are not supported.

.nf
struct curl_tlssessioninfo {
Expand All @@ -48,6 +48,14 @@ struct curl_tlssessioninfo {
};
.fi

The \fIbackend\fP struct member is one of the defines in the CURLSSLBACKEND_*
series: CURLSSLBACKEND_NONE (when built without TLS support),
CURLSSLBACKEND_OPENSSL, CURLSSLBACKEND_GNUTLS, CURLSSLBACKEND_NSS,
CURLSSLBACKEND_GSKIT, CURLSSLBACKEND_POLARSSL, CURLSSLBACKEND_CYASSL,
CURLSSLBACKEND_SCHANNEL, CURLSSLBACKEND_DARWINSSL or
CURLSSLBACKEND_AXTLS. (Note that the OpenSSL forks are all reported as just
OpenSSL here.)

The \fIinternals\fP struct member will point to a TLS library specific pointer
with the following underlying types:
.RS
Expand Down
8 changes: 3 additions & 5 deletions lib/getinfo.c
Expand Up @@ -290,7 +290,7 @@ static CURLcode getinfo_slist(struct SessionHandle *data, CURLINFO info,
void *internals = NULL;

*tsip = tsi;
tsi->backend = CURLSSLBACKEND_NONE;
tsi->backend = Curl_ssl_backend();
tsi->internals = NULL;

if(!conn)
Expand Down Expand Up @@ -318,13 +318,11 @@ static CURLcode getinfo_slist(struct SessionHandle *data, CURLINFO info,
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
interpreted as "not supported" */
to return from 'struct ssl_connect_data'; thus we keep 'internals' to
NULL which should be interpreted as "not supported" */
}
break;
default:
Expand Down

0 comments on commit 7362008

Please sign in to comment.