From c4fc172240b867350967ee50734267c402450e19 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Sun, 18 Nov 2012 15:24:37 +0000 Subject: [PATCH] =?UTF-8?q?PR:=202880=20Submitted=20by:=20"Florian=20R?= =?UTF-8?q?=C3=83=C2=BCchel"=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Correctly handle local machine keys in the capi ENGINE. --- engines/e_capi.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/engines/e_capi.c b/engines/e_capi.c index 791629f083..fff8e6a14f 100644 --- a/engines/e_capi.c +++ b/engines/e_capi.c @@ -1460,6 +1460,7 @@ static PCCERT_CONTEXT capi_find_cert(CAPI_CTX *ctx, const char *id, HCERTSTORE h static CAPI_KEY *capi_get_key(CAPI_CTX *ctx, const TCHAR *contname, TCHAR *provname, DWORD ptype, DWORD keyspec) { CAPI_KEY *key; + DWORD dwFlags = 0; key = OPENSSL_malloc(sizeof(CAPI_KEY)); if (sizeof(TCHAR)==sizeof(char)) CAPI_trace(ctx, "capi_get_key, contname=%s, provname=%s, type=%d\n", @@ -1475,7 +1476,9 @@ static CAPI_KEY *capi_get_key(CAPI_CTX *ctx, const TCHAR *contname, TCHAR *provn if (_provname) OPENSSL_free(_provname); if (_contname) OPENSSL_free(_contname); } - if (!CryptAcquireContext(&key->hprov, contname, provname, ptype, 0)) + if(ctx->store_flags & CERT_SYSTEM_STORE_LOCAL_MACHINE) + dwFlags = CRYPT_MACHINE_KEYSET; + if (!CryptAcquireContext(&key->hprov, contname, provname, ptype, dwflags)) { CAPIerr(CAPI_F_CAPI_GET_KEY, CAPI_R_CRYPTACQUIRECONTEXT_ERROR); capi_addlasterror(); -- GitLab