Return to certinfo.c CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / docs / examples |
1.1 ! misho 1: /*************************************************************************** ! 2: * _ _ ____ _ ! 3: * Project ___| | | | _ \| | ! 4: * / __| | | | |_) | | ! 5: * | (__| |_| | _ <| |___ ! 6: * \___|\___/|_| \_\_____| ! 7: * ! 8: * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. ! 9: * ! 10: * This software is licensed as described in the file COPYING, which ! 11: * you should have received as part of this distribution. The terms ! 12: * are also available at https://curl.haxx.se/docs/copyright.html. ! 13: * ! 14: * You may opt to use, copy, modify, merge, publish, distribute and/or sell ! 15: * copies of the Software, and permit persons to whom the Software is ! 16: * furnished to do so, under the terms of the COPYING file. ! 17: * ! 18: * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY ! 19: * KIND, either express or implied. ! 20: * ! 21: ***************************************************************************/ ! 22: /* <DESC> ! 23: * Extract lots of TLS certificate info. ! 24: * </DESC> ! 25: */ ! 26: #include <stdio.h> ! 27: ! 28: #include <curl/curl.h> ! 29: ! 30: static size_t wrfu(void *ptr, size_t size, size_t nmemb, void *stream) ! 31: { ! 32: (void)stream; ! 33: (void)ptr; ! 34: return size * nmemb; ! 35: } ! 36: ! 37: int main(void) ! 38: { ! 39: CURL *curl; ! 40: CURLcode res; ! 41: ! 42: curl_global_init(CURL_GLOBAL_DEFAULT); ! 43: ! 44: curl = curl_easy_init(); ! 45: if(curl) { ! 46: curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/"); ! 47: ! 48: curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, wrfu); ! 49: ! 50: curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); ! 51: curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); ! 52: ! 53: curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L); ! 54: curl_easy_setopt(curl, CURLOPT_CERTINFO, 1L); ! 55: ! 56: res = curl_easy_perform(curl); ! 57: ! 58: if(!res) { ! 59: struct curl_certinfo *certinfo; ! 60: ! 61: res = curl_easy_getinfo(curl, CURLINFO_CERTINFO, &certinfo); ! 62: ! 63: if(!res && certinfo) { ! 64: int i; ! 65: ! 66: printf("%d certs!\n", certinfo->num_of_certs); ! 67: ! 68: for(i = 0; i < certinfo->num_of_certs; i++) { ! 69: struct curl_slist *slist; ! 70: ! 71: for(slist = certinfo->certinfo[i]; slist; slist = slist->next) ! 72: printf("%s\n", slist->data); ! 73: ! 74: } ! 75: } ! 76: ! 77: } ! 78: ! 79: curl_easy_cleanup(curl); ! 80: } ! 81: ! 82: curl_global_cleanup(); ! 83: ! 84: return 0; ! 85: }