4

我有一个 .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 格式的证书。
4

0 回答 0