Debugged by Katharina Bogad.
From: Hans Leidekker hans@codeweavers.com
Debugged by Katharina Bogad.
Wine-Bug: http://bugs.winehq.org/show_bug.cgi?id=58528 --- dlls/crypt32/cert.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/crypt32/cert.c b/dlls/crypt32/cert.c index 75f451435b4..7f8f4965d02 100644 --- a/dlls/crypt32/cert.c +++ b/dlls/crypt32/cert.c @@ -879,7 +879,7 @@ BOOL WINAPI CertSetCertificateContextProperty(PCCERT_CONTEXT pCertContext, static BOOL CRYPT_AcquirePrivateKeyFromProvInfo(PCCERT_CONTEXT pCert, DWORD dwFlags, PCRYPT_KEY_PROV_INFO info, HCRYPTPROV *phCryptProv, DWORD *pdwKeySpec) { - DWORD size = 0; + DWORD size = 0, flags = (dwFlags & CRYPT_ACQUIRE_SILENT_FLAG) ? CRYPT_SILENT : 0; BOOL allocated = FALSE, ret = TRUE;
if (!info) @@ -906,8 +906,12 @@ static BOOL CRYPT_AcquirePrivateKeyFromProvInfo(PCCERT_CONTEXT pCert, DWORD dwFl } if (ret) { - ret = CryptAcquireContextW(phCryptProv, info->pwszContainerName, - info->pwszProvName, info->dwProvType, (dwFlags & CRYPT_ACQUIRE_SILENT_FLAG) ? CRYPT_SILENT : 0); + ret = CryptAcquireContextW(phCryptProv, info->pwszContainerName, info->pwszProvName, info->dwProvType, flags); + if (!ret) + { + flags |= CRYPT_MACHINE_KEYSET; + ret = CryptAcquireContextW(phCryptProv, info->pwszContainerName, info->pwszProvName, info->dwProvType, flags); + } if (ret) { DWORD i;