CURLINFO_TLS_SSL_PTR(3)

NAME
CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR - get TLS session info

SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SSL_PTR,
                           struct curl_tlssessioninfo **session);
/* if you need compatibility with libcurl < 7.48.0 use
   CURLINFO_TLS_SESSION instead: */
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SESSION,
                           struct curl_tlssessioninfo **session);

DESCRIPTION
Pass a pointer to a 'struct curl_tlssessioninfo *'. The pointer will be initialized to refer to a 'struct curl_tlssessioninfo *' that will contain an enum indicating the SSL library used for the handshake and a pointer to the respective 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 always return NULL in the internals pointer to indicate that they are not supported.
struct curl_tlssessioninfo {
  curl_sslbackend backend;
  void *internals;
};
The backend struct member is one of the defines in the CURLSSLBACKEND_* series: CURLSSLBACKEND_NONE (when built without TLS support), CURLSSLBACKEND_AXTLS, CURLSSLBACKEND_CYASSL, CURLSSLBACKEND_DARWINSSL, CURLSSLBACKEND_GNUTLS, CURLSSLBACKEND_GSKIT, CURLSSLBACKEND_MBEDTLS, CURLSSLBACKEND_NSS, CURLSSLBACKEND_OPENSSL, CURLSSLBACKEND_POLARSSL or CURLSSLBACKEND_SCHANNEL. (Note that the OpenSSL forks are all reported as just OpenSSL here.) The internals struct member will point to a TLS library specific pointer for the active ("in use") SSL connection, with the following underlying types:

    GnuTLS
        gnutls_session_t

    gskit
        gsk_handle

    NSS PRFileDesc *

    OpenSSL
        CURLINFO_TLS_SESSION: SSL_CTX * CURLINFO_TLS_SSL_PTR: SSL *
Since 7.48.0 the internals member can point to these other SSL backends as well:

    axTLS
        SSL *

    mbedTLS
        mbedtls_ssl_session *

    PolarSSL
        ssl_session *

    Secure
        CtxtHandle *

    Secure
        SSLContext *

    wolfSSL
        SSL *

PROTOCOLS
All TLS-based

EXAMPLE
TODO

AVAILABILITY
Added in 7.48.0. This option supersedes CURLINFO_TLS_SESSION(3) which was added in 7.34.0. This option is exactly the same as that option except in the case of OpenSSL.

RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.

SEE ALSO
curl_easy_getinfo(3), curl_easy_setopt(3), CURLINFO_TLS_SESSION(3),