作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我 retrieving a code signing signature来自 Windows 上的可执行文件,CERT_CONTEXT
证书指向 CERT_INFO
,它有 CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm
成员,其中包含用于签名的算法。
如何将其转换为人类可读的形式?
例如,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/
我是一名优秀的程序员,十分优秀!