19,468
社区成员
发帖
与我相关
我的任务
分享
//获取CSP句柄
HCRYPTPROV hCryptProv = NULL;
DWORD dError;
if (!CryptAcquireContext(&hCryptProv,
NULL,
CSP_NAME_SERVICE,
PROV_RSA_FULL,
CRYPT_MACHINE_KEYSET))
{
if (GetLastError() == NTE_BAD_KEYSET)
{
if (!CryptAcquireContext(&hCryptProv,
NULL,
CSP_NAME_SERVICE, //
PROV_RSA_FULL,
CRYPT_NEWKEYSET|CRYPT_MACHINE_KEYSET))
{
dError = GetLastError();
return dError;
}
}
}
//CSP句柄为空 jiftle 注释 2012-06-14
if(NULL == hCryptProv)
{
return 1;
}
bRetVal = CryptAcquireContextA(&hCryptProv, NULL, MS_ENHANCED_PROV_A, PROV_RSA_FULL, 0);
if(bRetVal == FALSE)
bRetVal = CryptAcquireContextA(&hCryptProv, NULL, MS_ENHANCED_PROV_A, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);
if(bRetVal == FALSE)
goto MsHashData_Done;