Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CURLINFO_CERTINFO(3)	    Library Functions Manual	    CURLINFO_CERTINFO(3)

NAME
     CURLINFO_CERTINFO - TLS certificate chain

SYNOPSIS
     #include <curl/curl.h>

     CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CERTINFO,
				struct curl_certinfo **chainp);

DESCRIPTION
     Pass  a  pointer  to  a  struct curl_certinfo * and it is set to point to a
     struct that holds info about the server's certificate chain,  assuming  you
     had CURLOPT_CERTINFO(3) enabled when the request was made.

     struct curl_certinfo {
       int num_of_certs;
       struct curl_slist **certinfo;
     };

     The  certinfo  struct member is an array of linked lists of certificate in-
     formation. The num_of_certs struct member is  the	number	of  certificates
     which  is	the number of elements in the array. Each certificate's list has
     items with textual information in the format "name:content" such  as  "Sub-
     ject:Foo",  "Issuer:Bar",	etc.  The items in each list varies depending on
     the SSL backend and the certificate.

PROTOCOLS
     This functionality affects all TLS based  protocols:  HTTPS,  FTPS,  IMAPS,
     POP3S, SMTPS etc.

     This  option  works  only with the following TLS backends: GnuTLS, OpenSSL,
     Rustls and Schannel

EXAMPLE
     int main(void)
     {
       CURL *curl = curl_easy_init();
       if(curl) {
	 CURLcode result;
	 curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/");

	 /* connect to any HTTPS site, trusted or not */
	 curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
	 curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);

	 curl_easy_setopt(curl, CURLOPT_CERTINFO, 1L);

	 result = curl_easy_perform(curl);

	 if(result == CURLE_OK) {
	   int i;
	   struct curl_certinfo *ci;
	   result = curl_easy_getinfo(curl, CURLINFO_CERTINFO, &ci);

	   if(result == CURLE_OK) {
	     printf("%d certs!\n", ci->num_of_certs);

	     for(i = 0; i < ci->num_of_certs; i++) {
	       struct curl_slist *slist;

	       for(slist = ci->certinfo[i]; slist; slist = slist->next)
		 printf("%s\n", slist->data);
	     }
	   }
	 }
	 curl_easy_cleanup(curl);
       }
     }

     See also the certinfo.c example.

HISTORY
     GnuTLS support added in 7.42.0. Schannel support added in	7.50.0.  mbedTLS
     support added in 8.9.0.

AVAILABILITY
     Added in curl 7.19.1

RETURN VALUE
     curl_easy_getinfo(3) returns a CURLcode indicating success or error.

     CURLE_OK (0) means everything was OK, non-zero means an error occurred, see
     libcurl-errors(3).

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

libcurl 			   2026-06-11		    CURLINFO_CERTINFO(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=CURLINFO_CERTINFO&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help