• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:OpenSSL関数エラーについて)

OpenSSL関数エラーについて

このQ&Aのポイント
  • OpenSSLのd2i_RSAPublicKey関数を使用して公開鍵要素を取得したいが、NULLが返ってきてしまうエラーが発生しています。
  • 公開鍵の読み込みとd2i_RSAPublicKey関数のコールを行っていますが、取得したRSA構造体にはNULLが格納されています。
  • 公開鍵をRSA構造体に格納するための別の方法があるのかどうかについて、ご質問です。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

正しいのかどうか…に関しては不明ですが…… >openssl rsa -inform DER -outform DER -in pri_test.der -pubout -out pub_test.der で公開鍵を作成する特に、「-pubout」ではなく「-RSAPublicKey_out」として出力したpub_test.derならば、d2i_RSAPublicKey()は通るようです。 ……そんなオプション知らねぇよ…って感じですが、opensslのソースから検索するとあったりします。 -puboutだと「i2d_RSA_PUBKEY_bio()」で出力、-RSAPublicKey_outだと「i2d_RSAPublicKey_bio()」で出力…となっています。 ……d2i_RSA_PUBKEY()だったら通るのではないでしょうか??

darkness22
質問者

お礼

ありがとうございます。 無事に読込むことができました。 ただ一点気になる事がありまして、“-RSAPublicKey_out”オプションを 使って出力したDERフォーマットファイル(ex: temp_pub.der)を、OpenSSLコマンドで 公開鍵要素を表示させようとしても、表示できませんでした。 ------------エラーログ--------------- >openssl rsa -inform DER -pubin -in temp_pub.der -text -noout unable to load Public Key 23916:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:.\crypto\a sn1\tasn_dec.c:1319: 23916:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:. \crypto\asn1\tasn_dec.c:381:Type=X509_ALGOR 23916:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:.\crypto\asn1\tasn_dec.c:751:Field=algor, Type=X509_PUBKEY ------------エラーログ--------------- 但し、d2i_RSAPublicKey関数で読み込むと、正しい値が読込まれています。 # ここで正しい値とは、 # 「-pubout」で出力した公開鍵を、上記のOpenSSLコマンドを使って表示させた値と、 # 同じ値を取得できているという意味です。 奥が深すぎです...。 私のほうで「-RSAPublicKey_out」オプションを付けたりして、 どうにかコマンドで出力させようとしてみたのですが、全く出来ませんでした。 もし、何か方法があるのであればご教授頂きたいです^^;

darkness22
質問者

補足

ご回答ありがとうございます。 そもそも、d2i_RSA_PUBKEY関数の存在すら知りませんでした。 まずは、d2i_RSA_PUBKEY関数を使用してみます。 それで無理であれば、「-RSAPublicKey_out」オプション(初めて見ました...) で作成してみて、d2i_RSAPublicKey関数を使用して読み込んで見ます。

その他の回答 (2)

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.3

>ただ一点気になる事がありまして、“-RSAPublicKey_out”オプションを >使って出力したDERフォーマットファイル(ex: temp_pub.der)を、OpenSSLコマンドで >公開鍵要素を表示させようとしても、表示できませんでした。 >>openssl rsa -inform DER -pubin -in temp_pub.der -text -noout openssl rsa -inform DER -RSAPublicKey_in -in temp_pub.der -text -noout でどうでしょう? # opensslのソース、apps\rsa.c内で判定しています。

darkness22
質問者

お礼

出来ました! -pubin と -RSAPublicKey は混在できないんですね。 Wr5さんのように、私もソースコードから解析するようにします。 このたび、誠にありがとうございました。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

回答には結びつきませんが…… >file_p = "pub_test.der", "rb"); >if( NULL == pF_pubca ) { 突然出てくる「pF_pubca」はなにものですか? # 直前のfile_pのエラーチェックではないのですか? >filesize = 0x126; 同じく、突然出てくるこの変数はなにものですか? # long型の変数…でしょうかね……。 >pBuff = pubca_buff; 同じく、この2つはなにものですか? pbuff = buff; なんじゃないですか? コピペミスると検証も厳しくなるので注意した方がよろしいかと。

darkness22
質問者

補足

全てご指摘のとおりです。 書き直そうとしたのですが、投稿後、修正できませんでした。 「質問者は回答できません」と出てきてしまいました。 ありがとうございます。

関連するQ&A