curl-library
Re: Using certificate from memory
Date: Mon, 29 Dec 2008 15:59:53 +0200 (IST)
Hi Jeff
Thanks for the help
I tried to use both advise I got from you and open-ssl guys
still have some problems to verify the certificate with CURL
using this code :
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_USERPWD, user_pwd);
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &serverdata);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeDataFunction);
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, writeHeaderFunction);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_easy_setopt(curl,CURLOPT_SSL_CTX_FUNCTION, &Connector::loadFromMemory); //suppose to load the certificate
curl_easy_setopt (curl, CURLOPT_SSL_VERIFYPEER, TRUE);
ret = curl_easy_perform(curl);
..."
It behaves like no certificate has been uploaded to the database (looking for a file path ---> ret = 60)
It seems I am still doing something that makes it look for the certificate in a file though I already upload it from the memory
here is the function I am using (with a great help from opsn-ssl forum) :
//************************************************************
int loadFromMemory(char *buf, int bufLen)
{
BIO *bp = NULL;
X509 *cert = NULL;
#define retFree(x) do { \
if(bp) \
BIO_free(bp); \
if(cert) \
X509_free(cert); \
return x; \
} while(0);
if(!buf || bufLen < 1)
return 1;
bp = BIO_new(BIO_s_mem());
if(!bp)
return 2;
cert = X509_new();
if(!cert)
retFree(3);
if(!BIO_write(bp, buf, bufLen))
retFree(4);
cert = PEM_read_bio_X509(bp, NULL, NULL);
if(!cert) {
BIO_free(bp);
bp = BIO_new(BIO_s_mem());
if(!bp)
retFree(5);
if(!BIO_write(bp, (char *) buf, bufLen))
retFree(6);
cert = d2i_X509_bio(bp, NULL);
}
BIO_free(bp);
if(!cert)
retFree(7);
return 0;
}
//************************************************************
thanks for the help :)
Itay
----- Original Message -----
From: "Jeff Pohlmeyer" <yetanothergeek_at_gmail.com>
To: "libcurl development" <curl-library_at_cool.haxx.se>
Sent: Sunday, December 28, 2008 1:30:50 PM (GMT+0200) Auto-Detected
Subject: Re: Using certificate from memory
On Sun, Dec 28, 2008 at 1:56 AM, Itay Dagan <itay_at_yoggie.com> wrote:
> Can I load the certificate to curl structure from memory , instead of using
> "curl_easy_setopt(curl,CURLOPT_CAINFO, "C://server_wrong.crt"); "
This might help:
http://curl.haxx.se/lxr/source/docs/examples/cacertinmem.c
- Jeff
Received on 2008-12-29