CryptQueryObject 的 CNG 替换
Posted
技术标签:
【中文标题】CryptQueryObject 的 CNG 替换【英文标题】:CNG replacement for CryptQueryObject 【发布时间】:2018-06-20 06:59:47 【问题描述】:我有兴趣尝试从数字签名中读取字段。我有调用 CryptQueryObject 的代码,然后是 CryptMsgGetParam 来获取一些字段,最后是 CertFindCertificateInStore 来加载证书。
关于如何使用 Cryptography Next Generation APIs 的任何提示?微软告诉我 CryptQueryObject 已被弃用,但没有指出它的替代品。
【问题讨论】:
嘿,你有没有为此找到解决方案? 我们在 C# 中找到了一个可以完成这项工作的解决方案。检查c-sharp-implementation-to-get-signedcms-from-signed-file 不;仍在使用已弃用的 API。 【参考方案1】:CryptDecodeObject[Ex]
未标记为已弃用。只是说说而已。
您可以通过在具有不同对象类型的循环中调用 CryptDecodeObjectEx
来模拟检测 blob 类型的逻辑,以查看哪个不会出错。
也就是说,如果您使用CryptQueryObject
解析一个文件/数据块(而不是检测其类型),并且您很清楚那是什么,看看是否有主题在https://docs.microsoft.com/en-us/windows/win32/seccrypto/constants-for-cryptencodeobject-and-cryptdecodeobject下为您的数据块键入常量
一般来说,处理 ASN.1 数据结构(证书、CSR、CRL 等)的 CryptoAPI 函数不已被弃用,并且在 CNG API 中没有对应物。也许这个被错误地标记为已弃用。
【讨论】:
以上是关于CryptQueryObject 的 CNG 替换的主要内容,如果未能解决你的问题,请参考以下文章