HWCRHKerr(HWCRHK_F_HWCRHK_LOAD_PUBKEY,
HWCRHKerr(HWCRHK_F_HWCRHK_LOAD_PRIVKEY,
static EVP_PKEY *hwcrhk_load_privkey(ENGINE *eng, const char *key_id,	UI_METHOD *ui_method, void *callback_data)	{#ifndef OPENSSL_NO_RSA	RSA *rtmp = NULL;#endif	EVP_PKEY *res = NULL;#ifndef OPENSSL_NO_RSA	HWCryptoHook_MPI e, n;	HWCryptoHook_RSAKeyHandle *hptr;#endif#if !defined(OPENSSL_NO_RSA)	char tempbuf[1024];	HWCryptoHook_ErrMsgBuf rmsg;#endif	HWCryptoHook_PassphraseContext ppctx;#if !defined(OPENSSL_NO_RSA)	rmsg.buf = tempbuf;	rmsg.size = sizeof(tempbuf);#endif	if(!hwcrhk_context)		{		HWCRHKerr(HWCRHK_F_HWCRHK_LOAD_PRIVKEY,			HWCRHK_R_NOT_INITIALISED);		goto err;		}#ifndef OPENSSL_NO_RSA	hptr = OPENSSL_malloc(sizeof(HWCryptoHook_RSAKeyHandle));	if (!hptr)		{		HWCRHKerr(HWCRHK_F_HWCRHK_LOAD_PRIVKEY,			ERR_R_MALLOC_FAILURE);		goto err;		}        ppctx.ui_method = ui_method;	ppctx.callback_data = callback_data;	if (p_hwcrhk_RSALoadKey(hwcrhk_context, key_id, hptr,		&rmsg, &ppctx))		{		HWCRHKerr(HWCRHK_F_HWCRHK_LOAD_PRIVKEY,			HWCRHK_R_CHIL_ERROR);		ERR_add_error_data(1,rmsg.buf);		goto err;		}	if (!*hptr)		{		HWCRHKerr(HWCRHK_F_HWCRHK_LOAD_PRIVKEY,			HWCRHK_R_NO_KEY);		goto err;		}#endif#ifndef OPENSSL_NO_RSA	rtmp = RSA_new_method(eng);	RSA_set_ex_data(rtmp, hndidx_rsa, (char *)hptr);	rtmp->e = BN_new();	rtmp->n = BN_new();	rtmp->flags |= RSA_FLAG_EXT_PKEY;	MPI2BN(rtmp->e, e);	MPI2BN(rtmp->n, n);	if (p_hwcrhk_RSAGetPublicKey(*hptr, &n, &e, &rmsg)		!= HWCRYPTOHOOK_ERROR_MPISIZE)		{		HWCRHKerr(HWCRHK_F_HWCRHK_LOAD_PUBKEY,HWCRHK_R_CHIL_ERROR);		ERR_add_error_data(1,rmsg.buf);		goto err;		}	bn_expand2(rtmp->e, e.size/sizeof(BN_ULONG));	bn_expand2(rtmp->n, n.size/sizeof(BN_ULONG));	MPI2BN(rtmp->e, e);	MPI2BN(rtmp->n, n);	if (p_hwcrhk_RSAGetPublicKey(*hptr, &n, &e, &rmsg))		{		HWCRHKerr(HWCRHK_F_HWCRHK_LOAD_PUBKEY,			HWCRHK_R_CHIL_ERROR);		ERR_add_error_data(1,rmsg.buf);		goto err;		}	rtmp->e->top = e.size / sizeof(BN_ULONG);	bn_fix_top(rtmp->e);	rtmp->n->top = n.size / sizeof(BN_ULONG);	bn_fix_top(rtmp->n);	res = EVP_PKEY_new();	EVP_PKEY_assign_RSA(res, rtmp);#endif        if (!res)                HWCRHKerr(HWCRHK_F_HWCRHK_LOAD_PUBKEY,                        HWCRHK_R_PRIVATE_KEY_ALGORITHMS_DISABLED);	return res; err:	if (res)		EVP_PKEY_free(res);#ifndef OPENSSL_NO_RSA	if (rtmp)		RSA_free(rtmp);#endif	return NULL;	}