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 - get the 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
       information. The	num_of_certs struct member is the number  of  certifi-
       cates  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 "Subject: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,	Schannel, Secure Transport and rustls

EXAMPLE
       int main(void)
       {
	 CURL *curl = curl_easy_init();
	 if(curl) {
	   CURLcode res;
	   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);

	   res = curl_easy_perform(curl);

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

	     if(!res) {
	       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.  Se-
       cure Transport support added in 7.79.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				  2025-06-03		  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+14.3.quarterly>

home | help