Вы не говорите, что это за ошибка - но я сделаю удар - у нас были проблемы с CryptAcquireContext
в прошлом, повторяя NTE_BAD_KEYSET
- если вам нужно указать CRYPT_NEWKEYSET
or'd в флаги (CRYPT_VERIFYCONTEXT|CRYPT_NEWKEYSET
) и вызвать CryptAcquireContext
второй раз в ответ на сбой.
Что-то вроде:
BOOL bResult = CryptAcquireContext(&m_hProv, pszContainer, pszProvider, dwProviderType, dwFlags);
if (!bResult)
{
hr = GetLastError(); //already returns an HRESULT
if (NTE_BAD_KEYSET != hr) return(hr);
dwFlags |= CRYPT_NEWKEYSET;
bResult = CryptAcquireContext(&m_hProv, pszContainer, pszProvider, dwProviderType, dwFlags);
if (!bResult) return(GetLastError());
}