PR: 2705
Submitted by: Alexey Melnikov <alexey.melnikov@isode.com> Only create ex_data indices once for CAPI engine.
This commit is contained in:
		@@ -420,14 +420,15 @@ static int capi_init(ENGINE *e)
 | 
			
		||||
	CAPI_CTX *ctx;
 | 
			
		||||
	const RSA_METHOD *ossl_rsa_meth;
 | 
			
		||||
	const DSA_METHOD *ossl_dsa_meth;
 | 
			
		||||
	capi_idx = ENGINE_get_ex_new_index(0, NULL, NULL, NULL, 0);
 | 
			
		||||
	cert_capi_idx = X509_get_ex_new_index(0, NULL, NULL, NULL, 0);
 | 
			
		||||
 | 
			
		||||
	ctx = capi_ctx_new();
 | 
			
		||||
	if (!ctx || (capi_idx < 0))
 | 
			
		||||
	if (capi_idx < 0)
 | 
			
		||||
		{
 | 
			
		||||
		capi_idx = ENGINE_get_ex_new_index(0, NULL, NULL, NULL, 0);
 | 
			
		||||
		if (capi_idx < 0)
 | 
			
		||||
			goto memerr;
 | 
			
		||||
 | 
			
		||||
	ENGINE_set_ex_data(e, capi_idx, ctx);
 | 
			
		||||
		cert_capi_idx = X509_get_ex_new_index(0, NULL, NULL, NULL, 0);
 | 
			
		||||
 | 
			
		||||
		/* Setup RSA_METHOD */
 | 
			
		||||
		rsa_capi_idx = RSA_get_ex_new_index(0, NULL, NULL, NULL, 0);
 | 
			
		||||
		ossl_rsa_meth = RSA_PKCS1_SSLeay();
 | 
			
		||||
@@ -442,6 +443,13 @@ static int capi_init(ENGINE *e)
 | 
			
		||||
		capi_dsa_method.dsa_do_verify = ossl_dsa_meth->dsa_do_verify;
 | 
			
		||||
		capi_dsa_method.dsa_mod_exp = ossl_dsa_meth->dsa_mod_exp;
 | 
			
		||||
		capi_dsa_method.bn_mod_exp = ossl_dsa_meth->bn_mod_exp;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	ctx = capi_ctx_new();
 | 
			
		||||
	if (!ctx)
 | 
			
		||||
		goto memerr;
 | 
			
		||||
 | 
			
		||||
	ENGINE_set_ex_data(e, capi_idx, ctx);
 | 
			
		||||
 | 
			
		||||
#ifdef OPENSSL_CAPIENG_DIALOG
 | 
			
		||||
	{
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user