Hi Itay,

I'm just a user/fan of curl project but I did not read the api documentation or source code.
Anyway you can get free ssl certificates from this site: http://www.parssign.com/e-index.html and try them.

Regrads,
Shahin Khorasani

Itay Dagan wrote:
Hi Shahin 
Thanks again for your advise 

still have some problems to get it work with curl 

when  writing :

                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 certificate path)

Is there another way to way to verify the certificate.

thanks :)

Itay


As Patrick wrote you can load a certificate into X509 structure, but after that you need to validate it with other facilities such as functions implemented in X509_STORE set. You can find a simple code below to load both PEM and DER certificate into a X509 structure.

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;
}


Regards,
Shahin Khorasani

Patrick Patterson wrote:
  
On November 23, 2008 10:57:55 pm ThanhTrung Do wrote:
  
    

  
Something like the following should work if the certificate is in PEM format.
(note: this is example only - the below code is probably full of errors, 
because I just zen'd it from memory). I'm sure that Steve or one of the other 
guru's will correct any problems :)

    char certbuf = "PEM-ENCODED-CERTIFICATE";

    BIO *bufbio = BIO_new(BIO_s_mem());
    int len = BIO_puts(bufbio , certbuf);

    X509 *cert = X509_new();
    PEM_read_bio_X509(bufbio, &cert, NULL, NULL);

If the Cert is already in DER format, just use the d2i_X509() function to read 
it into the OpenSSL internal representation.

Have fun.
    

  
From: Itay Dagan <[EMAIL PROTECTED]>
Subject: verify certificate - not from a file
To: openssl-dev@openssl.org
Date: Monday, November 24, 2008, 12:37 AM
Hi Guys

I am new in openssl - so hopfully I am not bringing up an
old issue :

I am trying to verify a certificate that I am saving as
string in a random place on my PC memory.

I know that there is the
"SSL_CTX_load_verify_locations()" that verify
certificate from a file or a path.

My Q is :
Does openssl supports taking certificate not from a file or
path but from a place in the memory ?
meaning - A function that gets a char* - reads the
certificate from that location and verifying it.


appreciate your help :)
      
        
I have the same need too, highly appreciate your helps.

    
      
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org
  

______________________________________________________________________ OpenSSL Project http://www.openssl.org Development Mailing List openssl-dev@openssl.org Automated List Manager majord...@openssl.org

Reply via email to