gpt4 book ai didi

c++ - 如何从 PCCERT_CONTEXT 获取 CSP 的提供商名称?

转载 作者:行者123 更新时间:2023-11-30 04:32:17 24 4
gpt4 key购买 nike

我一直在尝试从 PCCERT_CONTEXT 获取提供商名称,因为在我当前的项目中,我必须将智能卡中的所有证书加载到我的程序中。将来我必须通过更新证书、删除证书等任务来处理这些证书。但我有问题,我必须将 CSP 名称和提供商名称与 CryptAcquireContext 映射到执行。我目前对如何存档感到困惑,任何人都可以提供一些指南来帮助我解决这个问题。我已经尝试使用 dwPropId 的 CertGetCertificateContextProperty 是 CERT_KEY_PROV_INFO_PROP_ID 但我无法获得 CRYPT_KEY_PROV_INFO。

最佳答案

如果我没听错的话,下面的代码片段展示了如何从证书中提取 key 提供者信息。

void trace(char* message, DWORD errorCode)
{
cout << message << errorCode;
}

std::wstring Test_CertGetCertificateContextProperty(PCCERT_CONTEXT pCertContext)
{
DWORD dwSize = 0;
BOOL bIsSuccess = CertGetCertificateContextProperty(pCertContext,
CERT_KEY_PROV_INFO_PROP_ID,
NULL,
&dwSize);
if (!bIsSuccess)
{
trace("CertGetCertificateContextProperty failed with error: ", GetLastError());
return L"";
}

PCRYPT_KEY_PROV_INFO pKeyProvInfo = (PCRYPT_KEY_PROV_INFO)LocalAlloc(LMEM_ZEROINIT, dwSize);
if (pKeyProvInfo == NULL)
{
trace("LocalAlloc failed with error:", GetLastError());
return L"";
}

bIsSuccess = CertGetCertificateContextProperty(pCertContext,
CERT_KEY_PROV_INFO_PROP_ID,
pKeyProvInfo,
&dwSize);

std::wstring provName;
if (bIsSuccess)
{
provName = pKeyProvInfo->pwszProvName;
}

LocalFree(pKeyProvInfo);

return provName;
}

关于c++ - 如何从 PCCERT_CONTEXT 获取 CSP 的提供商名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7775806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com