EC公開鍵をSubjectPublicKeyInfo形式から「レガシー」形式に変換する

EC公開鍵をSubjectPublicKeyInfo形式から「レガシー」形式に変換する

私の条件が正しいことを願っています。

現在、次の形式のEC公開鍵があります。

-----BEGIN PUBLIC KEY-----
xxxxx
-----END PUBLIC KEY-----

私が理解するのはSubjectPublicKeyInfo形です。次の形式に変換したいと思います。

-----BEGIN EC PUBLIC KEY-----
xxxxx
-----END EC PUBLIC KEY-----

類似opensslまたは類似のコマンドを使用してください。RSAPublicKey_{in|out}命令が見つからないようですねopenssl ec。公開鍵をDER形式に変換したいですPEM

別の方法がありますか?

ベストアンサー1

OpenSSLは「BEGIN EC PUBLIC KEY」形式をサポートしておらず、(AFAIK)そのような形式は存在しません。 RSAには、基本的にPEMエンコードされたPKCS#1構造である「レガシー」公開鍵形式(「BEGIN RSA PUBLIC KEY」)があります。以降の標準では、アルゴリズムに依存しない方法(SubjectPublicKeyInfo)で公開鍵をエンコードする方法を定義しているため、常に「レガシー」形式のバージョンがあったわけではありません。

openssl pemヘッダファイル(include / openssl / pem.h)を見ると、既知のOpenSSL PEMタイプを確認できます。 「EC PUBLIC KEY」のエントリがないことがわかります。 「RSA PUBLIC KEY」、「DSA PUBLIC KEY」、および「ECDSA PUBLIC KEY」がありますが、後者の2つはOpenSSLコードベースのどこにも使用されません(つまり、ヘッダファイルにのみ存在します)。

秘密鍵は「レガシー」形式で提供されます。 PKCS8 秘密鍵をレガシー形式に変換するには、次を使用します。

openssl ec -in p8file.pem -out tradfile.pem

ecコマンドは、「-inform DER」および「-outform DER」オプションも認識します。たとえば、DER PKCS8 秘密鍵ファイルを既存の PEM に変換するには、次のようにします。

openssl ec -inform DER -in p8file.der -out tradfile.pem

または、既存の使用のためにPEM PKCS8秘密鍵ファイルをDERに変換します。

openssl ec -in p8file.pem -outform DER -out tradfile.der

あるいは、既存の形式のPKCS8秘密鍵を使用することもできます。

openssl pkcs8 -topk8 -nocrypt -in tradfile.pem -out p8file.pem

上記のpkcs8コマンドは、-informオプションと-outformオプションも認識します。

おすすめ記事