Hi all,

 
I want to load a certs chain from memory ( ie. From a std::string variable with 
the certs chain’s content loading from the mysql db ).
 
The content of certs chain is like a CAfile.
 
Because loading from memory, can not call the “SSL_CTX_load_verify_locations” 
api.
 
So I call “SSL_CTX_add_extra_chain_cert” instead of 
“SSL_CTX_load_verify_locations”, 
but “SSL_CTX_add_extra_chain_cert” only load the first cert in the chain, not 
all of them.
 
And I can’t get the number of certs in a chain. The content of chain is 
uploaded from webpage.
 
Following is the demo code:
 
                if( !chain.empty() ){
                        mpBIO = BIO_new_mem_buf((void*) chain.c_str(), 
chain.size());
                        mpCertChain = PEM_read_bio_X509( mpBIO,NULL, NULL, NULL 
);
                        if( !SSL_CTX_add_extra_chain_cert( mpSSLCtx, 
mpCertChain ) ){
                                const char * errMsg = 
ERR_error_string(ERR_get_error(),NULL);
                                                                           
throw std::logic_err(errMsg);
                        }
                }
 
Is there any workround for this question? 
 
 
Thanks a lot!
 
Best wishes!
 
 
Miles.zhaof
2012-12-21
 

Reply via email to