Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* gcc -lcurl -Wall -g -O2 -o curlproblem curlproblem.c */
- #include <stdio.h>
- #include <stdbool.h>
- #include <stdlib.h>
- #include <string.h>
- #include <curl/curl.h>
- #define SERVERURL "https://accounts.google.com"
- #define CLIENTCERTFILEPKCS12 "client.p12"
- #define PKCS12IMPORTPASSWORD "foobar"
- #define CLIENTCERTFILEPEM "client.crt"
- #define CLIENTKEYFILEPEM "client.key"
- static void dieif(bool aCondition, const char *aMsg) {
- if (aCondition) {
- fprintf(stderr, "Die: %s\n", aMsg);
- exit(EXIT_FAILURE);
- }
- }
- int main(int argc, char **argv) {
- dieif(curl_global_init(CURL_GLOBAL_ALL | CURL_GLOBAL_SSL) != CURLE_OK, "curl_global_init");
- CURL *curlCtx = curl_easy_init();
- dieif(!curlCtx, "curl_easy_init");
- dieif(curl_easy_setopt(curlCtx, CURLOPT_URL, SERVERURL) != CURLE_OK, "curl_easy_setopt 1");
- if ((argc == 2) && !strcmp(argv[1], "pem")) {
- fprintf(stderr, "Using PEM\n");
- dieif(curl_easy_setopt(curlCtx, CURLOPT_SSLCERTTYPE, "PEM") != CURLE_OK, "curl_easy_setopt 2");
- dieif(curl_easy_setopt(curlCtx, CURLOPT_SSLCERT, CLIENTCERTFILEPEM) != CURLE_OK, "curl_easy_setopt 3");
- dieif(curl_easy_setopt(curlCtx, CURLOPT_SSLKEYTYPE, "PEM") != CURLE_OK, "curl_easy_setopt 4");
- dieif(curl_easy_setopt(curlCtx, CURLOPT_SSLKEY, CLIENTKEYFILEPEM) != CURLE_OK, "curl_easy_setopt 5");
- } else {
- fprintf(stderr, "Using PKCS#12\n");
- dieif(curl_easy_setopt(curlCtx, CURLOPT_SSLCERTTYPE, "P12") != CURLE_OK, "curl_easy_setopt 6");
- dieif(curl_easy_setopt(curlCtx, CURLOPT_SSLCERT, CLIENTCERTFILEPKCS12) != CURLE_OK, "curl_easy_setopt 7");
- dieif(curl_easy_setopt(curlCtx, CURLOPT_SSLKEYPASSWD, PKCS12IMPORTPASSWORD) != CURLE_OK, "curl_easy_setopt 8");
- }
- dieif(curl_easy_perform(curlCtx) != CURLE_OK, "curl_easy_perform");
- curl_easy_cleanup(curlCtx);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement