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;
 | 
						CAPI_CTX *ctx;
 | 
				
			||||||
	const RSA_METHOD *ossl_rsa_meth;
 | 
						const RSA_METHOD *ossl_rsa_meth;
 | 
				
			||||||
	const DSA_METHOD *ossl_dsa_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 (capi_idx < 0)
 | 
				
			||||||
	if (!ctx || (capi_idx < 0))
 | 
							{
 | 
				
			||||||
 | 
							capi_idx = ENGINE_get_ex_new_index(0, NULL, NULL, NULL, 0);
 | 
				
			||||||
 | 
							if (capi_idx < 0)
 | 
				
			||||||
			goto memerr;
 | 
								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 */
 | 
							/* Setup RSA_METHOD */
 | 
				
			||||||
		rsa_capi_idx = RSA_get_ex_new_index(0, NULL, NULL, NULL, 0);
 | 
							rsa_capi_idx = RSA_get_ex_new_index(0, NULL, NULL, NULL, 0);
 | 
				
			||||||
		ossl_rsa_meth = RSA_PKCS1_SSLeay();
 | 
							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_do_verify = ossl_dsa_meth->dsa_do_verify;
 | 
				
			||||||
		capi_dsa_method.dsa_mod_exp = ossl_dsa_meth->dsa_mod_exp;
 | 
							capi_dsa_method.dsa_mod_exp = ossl_dsa_meth->dsa_mod_exp;
 | 
				
			||||||
		capi_dsa_method.bn_mod_exp = ossl_dsa_meth->bn_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
 | 
					#ifdef OPENSSL_CAPIENG_DIALOG
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user