我有一个 .cer 文件。我可以通过 ReadFile() 函数读取和写入缓冲区。现在我有了缓冲区和 datalen。
我使用该缓冲区和 len 来调用 CryptDecodeObjectEx() 函数,如下行
if ( !CryptDecodeObjectEx( X509_ASN_ENCODING,
X509_PUBLIC_KEY_INFO,
(BYTE* )pemPubKey,
readLen,
CRYPT_DECODE_ALLOC_FLAG,
NULL,
&publicKeyInfo,
(DWORD *)&publicKeyInfoLen ) )
但是当我通过调试运行它时,我通过 GetLastError() 函数得到 0x8009310B 错误代码。
我该如何解决?谢谢你的建议。
附加信息
- 如果我使用 X509_ANY_STRING 而不是 X509_PUBLIC_KEY_INFO;有用。但它没有填充我的 publicKeyInfo 结构。因此,我无法在其中获取公钥。
- 我有一个 DER 格式的证书。