我有兴趣尝试从数字签名中读取字段。我有调用 CryptQueryObject 的代码,然后是 CryptMsgGetParam 来获取一些字段,最后是 CertFindCertificateInStore 来加载证书。
有关如何使用下一代加密技术 API 执行此操作的任何提示?微软告诉我 CryptQueryObject 已被弃用,但并没有指向它的替代品。
最佳答案
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 中没有对应物。也许这个被错误地标记为已弃用。
关于digital-signature - CryptQueryObject 的 CNG 替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48198741/