Question 1: Is there a simple way using exported (i.e. - available to general use via the openssl library and having definitions in openssl.h) OpenSSL functions to do the following:
During the SSL connection process, if a user CERT has been presented, get the cert chain? Here is the code that I am using the check the USER certificate. Note that I uses SSL_get_peer_certificate(ssl) to get the peer certificate. Is there a function such as SSL_get_issuer_certifivate(ssl,peer)? i.e. - issuer = SSL_get_issuer_certificate( ssl, peer ); If not, then where can I find a code template or the internal information to write one? /* now we check to see which server we talked to */ verify_result = SSL_get_verify_result(ssl); if( verify_result != X509_V_OK ){ DEBUG1("Open_SSL_connection: SSL_get_verify_result '%s'", X509_verify_cert_error_string(verify_result) ); SNPRINTF(errmsg,errlen) "SSL_connect failed, peer certificat not verified: '%s'", X509_verify_cert_error_string(verify_result) ); status = -1; goto done; } else { X509 *peer; peer = SSL_get_peer_certificate(ssl); if( peer ){ if( X509_NAME_oneline( X509_get_subject_name( peer ), buffer, sizeof(buffer) ) ){ DEBUG1("Open_SSL_connection: subject '%s'", buffer ); if( info ) Set_str_value(info,SERVER,buffer); } if( X509_NAME_oneline( X509_get_issuer_name( peer ), buffer, sizeof(buffer) ) ){ if( info ) Set_str_value(info,ISSUER,buffer); DEBUG1("Open_SSL_connection: issuer '%s'", buffer ); } /* the SSL_get_peer_certificate man page indicates that this memory is not freed */ X509_free(peer); peer = 0; } } Question 2: Now I just KNOW that I saw this, and everybody is going to laugh at this, but: If I have found a CERT using, say, peer = SSL_get_peer_certificate(ssl) as in the example above, and I have a list of CERTS in a file or directory (i.e. - as for the CA cert, etc), how can I check to see if the peer cert (in the example) is in this list or directory? I just KNOW that I saw this in some SSL or related code, but I cannot remember the exact details and searching has not found it again. Patrick Powell Astart Technologies [EMAIL PROTECTED] 6741 Convoy Court Network and System San Diego, CA 92111 Consulting 858-874-6543 FAX 858-279-8424 LPRng - Print Spooler (http://www.lprng.com) ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List [EMAIL PROTECTED] Automated List Manager [EMAIL PROTECTED]