PKI_OCSP_RESP *d2i_PKI_OCSP_RESP_bio ( PKI_IO *bp, PKI_OCSP_RESP **p ) { PKI_OCSP_RESP *ret = NULL; if (( ret = (PKI_OCSP_RESP *) PKI_Malloc ( sizeof( PKI_OCSP_RESP ))) == NULL ) { return NULL; } #if OPENSSL_VERSION_NUMBER < 0x0090800fL ret->resp = (PKI_X509_OCSP_RESP_VALUE *) ASN1_d2i_bio( (char *(*)(void))OCSP_RESPONSE_new, (char *(*)(void **, const unsigned char **, long)) d2i_OCSP_RESPONSE, bp, (unsigned char **) NULL); #else ret->resp = (PKI_X509_OCSP_RESP_VALUE *) ASN1_d2i_bio( (void *(*)(void))OCSP_RESPONSE_new, (void *(*)(void **, const unsigned char **, long)) d2i_OCSP_RESPONSE, bp, (void **) NULL); #endif if ( !ret->resp ) { PKI_Free ( ret ); return NULL; } ret->bs = OCSP_response_get1_basic(ret->resp); return ret; }
static EVP_PKEY *d2i_PrivateKey_bio(BIO *bio, EVP_PKEY **key) { return ((EVP_PKEY *)ASN1_d2i_bio( (char *(*)())EVP_PKEY_new, (char *(*)())d2i_PrivateKey, (bio), (unsigned char **)(key))); }
PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO **p8inf) { return((PKCS8_PRIV_KEY_INFO *)ASN1_d2i_bio( (char *(*)())PKCS8_PRIV_KEY_INFO_new, (char *(*)())d2i_PKCS8_PRIV_KEY_INFO, (bp), (unsigned char **)(p8inf))); }
void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x) { BIO *b; void *ret; if ((b = BIO_new(BIO_s_file())) == NULL) { ASN1err(ASN1_F_ASN1_D2I_FP, ERR_R_BUF_LIB); return (NULL); } BIO_set_fp(b, in, BIO_NOCLOSE); ret = ASN1_d2i_bio(xnew, d2i, b, x); BIO_free(b); return (ret); }
DVT_STATUS CERTIFICATE_FILE_CLASS::importDer(const char* filename, bool certificatesOnly, const char*) // DESCRIPTION : Import certificates from a PEM formated file. // PRECONDITIONS : // POSTCONDITIONS : // EXCEPTIONS : // NOTES : Returns MSG_OK, MSG_ERROR, MSG_FILE_NOT_EXIST, MSG_NO_VALUE // : DER does not support encryption, so MSG_INVALID_PASSWORD will never be returned //<<=========================================================================== { DVT_STATUS status = MSG_ERROR; DVT_STATUS* status_ptr; BIO* bio_ptr; // clear the error queue ERR_clear_error(); // open the file bio_ptr = BIO_new(BIO_s_file_internal()); if (bio_ptr == NULL) { openSslM_ptr->printError(loggerM_ptr, LOG_ERROR, "setting up to read DER file"); status = MSG_ERROR; goto end; } if (BIO_read_filename(bio_ptr, filename) <= 0) { unsigned long err; err = ERR_peek_error(); if ((ERR_GET_LIB(err) == ERR_LIB_SYS) && (ERR_GET_REASON(err) == ERROR_FILE_NOT_FOUND)) { // file does not exist ERR_clear_error(); // eat any errors status = MSG_FILE_NOT_EXIST; } else { openSslM_ptr->printError(loggerM_ptr, LOG_ERROR, "opening DER file for reading"); status = MSG_ERROR; } goto end; } // read the file and convert the data if (certificatesOnly) { X509* cert_ptr; cert_ptr = (X509*)ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509), bio_ptr, NULL); if (cert_ptr == NULL) { unsigned long err; err = ERR_peek_error(); if ((ERR_GET_LIB(err) == ERR_LIB_ASN1) && (ERR_GET_REASON(err) == ASN1_R_WRONG_TAG)) { // probably not a certificate ERR_clear_error(); // eat any errors status = MSG_NO_VALUE; } else { openSslM_ptr->printError(loggerM_ptr, LOG_ERROR, "decoding certificate in DER file"); status = MSG_ERROR; } } else { // save the certificate if (!push(cert_ptr)) { status = MSG_ERROR; } else { status = MSG_OK; } } } else { // this calls derDecode() status_ptr = (DVT_STATUS*)ASN1_d2i_bio(NULL, (char* (*)(void))derCallback, bio_ptr, (unsigned char**)this); status = *status_ptr; delete status_ptr; } end: if (bio_ptr != NULL) BIO_free(bio_ptr); return status; }
EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a) { return((EVP_PKEY *)ASN1_d2i_bio((char *(*)())EVP_PKEY_new, (char *(*)())d2i_PUBKEY, (bp),(unsigned char **)(a))); }
EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a) { return((EVP_PKEY *)ASN1_d2i_bio((char *(*)())EVP_PKEY_new, (char *(*)())d2i_AutoPrivateKey, (bp),(unsigned char **)(a))); }
X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8) { return((X509_SIG *)ASN1_d2i_bio((char *(*)())X509_SIG_new, (char *(*)())d2i_X509_SIG, (bp),(unsigned char **)(p8))); }
DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa) { return((DSA *)ASN1_d2i_bio((char *(*)()) DSA_new,(char *(*)())d2i_DSA_PUBKEY, (bp), (unsigned char **)(dsa))); }
DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa) { return((DSA *)ASN1_d2i_bio((char *(*)()) DSA_new,(char *(*)())d2i_DSAPrivateKey, (bp), (unsigned char **)(dsa))); }
RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa) { return((RSA *)ASN1_d2i_bio((char *(*)()) RSA_new,(char *(*)())d2i_RSA_PUBKEY, (bp), (unsigned char **)(rsa))); }
RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa) { return((RSA *)ASN1_d2i_bio((char *(*)()) RSA_new,(char *(*)())d2i_RSAPublicKey, (bp), (unsigned char **)(rsa))); }
X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req) { return((X509_REQ *)ASN1_d2i_bio((char *(*)()) X509_REQ_new, (char *(*)())d2i_X509_REQ, (bp), (unsigned char **)(req))); }
PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7) { return((PKCS7 *)ASN1_d2i_bio((char *(*)()) PKCS7_new,(char *(*)())d2i_PKCS7, (bp), (unsigned char **)(p7))); }
X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl) { return((X509_CRL *)ASN1_d2i_bio((char *(*)()) X509_CRL_new,(char *(*)())d2i_X509_CRL, (bp), (unsigned char **)(crl))); }
X509 *d2i_X509_bio(BIO *bp, X509 **x509) { return((X509 *)ASN1_d2i_bio((char *(*)())X509_new, (char *(*)())d2i_X509, (bp),(unsigned char **)(x509))); }