ブログ移転しました。新しいサイトはこちらです。
http://eng-notebook.com/blog-entry-125/
1秒後に自動的にジャンプします。
  

  


OpenSSLのi2d_RSAPublicKey()とi2d_RSA_PUBKEY()の違い


 
 
OpenSSL(正確にはlibeay32/libcrypto)のi2d_RSAPublicKey()とi2d_RSA_PUBKEY()の違いについて日本語のページが見つからなかったので、分かったことをまとめておきます。

i2d_RSAPublicKey()とi2d_RSA_PUBKEY()は両方ともRSA構造体をDER形式の公開鍵に変換する関数です。

では、この2つがどう違うのか?いろいろ調べてこのページを見つけました。
'Re: Extra : read and write RSA keys, help' - MARC


簡単に説明するとこんな感じです。

i2d_RSAPublicKey()はRFC 3447で定義されるRSAPublicKey structure形式に変換される
RFC 3447 - Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1


i2d_RSA_PUBKEY()はRFC 5280で定義されるSubjectPublicKeyInfo structure形式に変換される
RFC 5280 - Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile


後者はX.509証明書内の公開鍵の形式で、OpenSSLのrsaコマンドなどは後者のフォーマットを使用します。

つまり、OpenSSLで使用できる公開鍵を生成するには、i2d_RSA_PUBKEY()を使う必要があるということです。


秘密鍵(鍵ペア)をDER形式に変換するにはi2d_RSAPrivateKey()を使うので、ついついi2d_RSAPublicKey()を使ってしまいそうになりますが違うんですね。


ちなみに、i2d_RSA_PUBKEY()やi2d_RSAPrivateKey()は以下のように使います。



参考にしてください。



Sponsored Link


 
◆◇◆この記事が役に立ったらポチッとお願いします◆◇◆

 

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

おすすめ







 



カテゴリ