Example #1
0
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;
}
Example #2
0
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)));
}
Example #3
0
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)));
	}
Example #4
0
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);
}
Example #5
0
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;
}
Example #6
0
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)));
	}
Example #7
0
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)));
	}
Example #8
0
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)));
	}
Example #9
0
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)));
	}
Example #10
0
DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa)
	{
	return((DSA *)ASN1_d2i_bio((char *(*)())
		DSA_new,(char *(*)())d2i_DSAPrivateKey, (bp),
		(unsigned char **)(dsa)));
	}
Example #11
0
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)));
	}
Example #12
0
RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa)
	{
	return((RSA *)ASN1_d2i_bio((char *(*)())
		RSA_new,(char *(*)())d2i_RSAPublicKey, (bp),
		(unsigned char **)(rsa)));
	}
Example #13
0
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)));
	}
Example #14
0
PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7)
	{
	return((PKCS7 *)ASN1_d2i_bio((char *(*)())
		PKCS7_new,(char *(*)())d2i_PKCS7, (bp),
		(unsigned char **)(p7)));
	}
Example #15
0
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)));
	}
Example #16
0
X509 *d2i_X509_bio(BIO *bp, X509 **x509)
	{
	return((X509 *)ASN1_d2i_bio((char *(*)())X509_new,
		(char *(*)())d2i_X509, (bp),(unsigned char **)(x509)));
	}