Engineer's Notebook

コンピュータ関係のTipsやお役立ち情報などをエンジニアが綴ります

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

投稿日:2014-02-04 更新日:

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

スポンサーリンク

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()は以下のように使います。

 

アドセンス 336x280

アドセンス 336x280

関連コンテンツ

いまあなたにおすすめ

技術者募集

技術者募集

------------------------------- 技術者募集 -------------------------------
【企 業 名】株式会社ファンコミュニケーションズ
【概  要】「A8.net」を開発運用するアフィリエイトソリューションプロバイダーの
       株式会社ファンコミュニケーションズが業務拡大につき技術者を募集中。
【業務内容】A8.net/Moba8.netの企画・設計・開発・運用・保守など。
----------------------------------------------------------------------------

-ソフトウェア開発

Copyright© Engineer's Notebook , 2018 All Rights Reserved Powered by AFFINGER5.