4

.cer ファイルがあります。ReadFile() 関数を使用して、それを読み取ってバッファーに書き込むことができます。これで、持っていた buffer と datalen ができました。

そして、以下の行のように CryptDecodeObjectEx() 関数を呼び出すためにそのバッファとレンを使用します

if ( !CryptDecodeObjectEx( X509_ASN_ENCODING, 
                           X509_PUBLIC_KEY_INFO, 
                           (BYTE* )pemPubKey, 
                           readLen, 
                           CRYPT_DECODE_ALLOC_FLAG, 
                           NULL, 
                           &publicKeyInfo, 
                           (DWORD *)&publicKeyInfoLen ) )

しかし、デバッグで実行すると、GetLastError() 関数を介して 0x8009310B エラー コードが表示されます。

どうすれば修正できますか?アドバイスありがとうございます。

追加情報

  • X509_PUBLIC_KEY_INFO の代わりに X509_ANY_STRING を使用すると、できます。しかし、それは私の publicKeyInfo 構造体を埋めません。そのため、公開鍵を取得できません。
  • DER 形式の証明書を持っています。
4

0 に答える 0