gpt4 book ai didi

c++ - 如何将代码签名算法的 OID 从 CRYPT_ALGORITHM_IDENTIFIER 转换为人类可读的字符串?

转载 作者:行者123 更新时间:2023-11-30 03:22:40 34 4
gpt4 key购买 nike

当我 retrieving a code signing signature来自 Windows 上的可执行文件,CERT_CONTEXT证书指向 CERT_INFO ,它有 CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm 成员,其中包含用于签名的算法。

如何将其转换为人类可读的形式?

enter image description here

例如,SignatureAlgorithm.pszObjId可以设置为"1.2.840.113549.1.1.11"字符串,即szOID_RSA_SHA256RSA this long list .我想我可以为它做一个很长的 switch 语句,并将它链接到 "sha256",但我宁愿避免它,因为我不知道这些值中的大部分是什么。是否有 API 可以为我完成所有这些工作?

最佳答案

使用CryptFindOIDInfo获取有关 OID 的信息,包括显示名称和 CNG 算法标识符字符串:

void PrintSigAlgoName(CRYPT_ALGORITHM_IDENTIFIER* pSigAlgo)
{
if(pSigAlgo && pSigAlgo->pszObjId)
{
PCCRYPT_OID_INFO pCOI = CryptFindOIDInfo(CRYPT_OID_INFO_OID_KEY, pSigAlgo->pszObjId, 0);
if(pCOI && pCOI->pwszName)
{
_tprintf(_T("%ls"), pCOI->pwszName);
}
else
{
_tprintf(_T("%hs"), pSigAlgo->pszObjId);
}
}
}

关于c++ - 如何将代码签名算法的 OID 从 CRYPT_ALGORITHM_IDENTIFIER 转换为人类可读的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50973834/

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