EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, int type, EVP_PKEY **a)
EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a)
EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, int type, EVP_PKEY **a)	{	EVP_PKEY *ret;	if ((a == NULL) || (*a == NULL))		{		if ((ret=EVP_PKEY_new()) == NULL)			{			ASN1err(ASN1_F_D2I_PRIVATEKEY_BIO,ERR_R_EVP_LIB);			return(NULL);			}		}	else	ret= *a;	ret->save_type=type;	ret->type=EVP_PKEY_type(type);	switch (ret->type)		{#ifndef NO_RSA	case EVP_PKEY_RSA:		if ((ret->pkey.rsa=d2i_RSAPrivateKey_bio(bp,NULL)) == NULL)			{			ASN1err(ASN1_F_D2I_PRIVATEKEY_BIO,ERR_R_ASN1_LIB);			goto err;			}		break;#endif#ifndef NO_DSA	case EVP_PKEY_DSA:		if ((ret->pkey.dsa=d2i_DSAPrivateKey_bio(bp, NULL)) == NULL)			{			ASN1err(ASN1_F_D2I_PRIVATEKEY_BIO,ERR_R_ASN1_LIB);			goto err;			}		break;#endif	default:		ASN1err(ASN1_F_D2I_PRIVATEKEY_BIO,ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE);		goto err;		/* break; */		}	if (a != NULL) (*a)=ret;	return(ret);err:	if ((ret != NULL) && ((a == NULL) || (*a != ret))) EVP_PKEY_free(ret);	return(NULL);	}