多くの場合、ユーザはPEMでエンコードされたRSA秘密鍵を持ちます。 Crypto ++では、ロードするためにこれらのキーがDER形式である必要があります。正常に動作しますが、一部の人々はそれを行う方法を理解していないも、彼らがしたいですか暗号化されたPEMでエンコードされたプライベートRSA鍵をロードする
openssl pkcs8 -in in_file.pem -out out_file.der -topk8 -nocrypt -outform der
:私は手動でこのようなOpenSSLを使用して、事前にDERするために彼らのPEMファイルを変換するために人々を求めてきました。だから私はPEMファイルを自動的にプログラム内のDERファイルに変換したいと思っています。
PEMから "----- BEGIN CERTIFICATE -----"と "----- END CERTIFICATE -----"をストライピングするのと同じくらい単純ですか、まあ?私はそれらのマーカーの間に、それがちょうどb64コード化されたDERであると言われてきました。ここでは、問題を示していますいくつかのコードがあります:
// load the private key
CryptoPP::RSA::PrivateKey PK;
CryptoPP::ByteQueue bytes;
try
{
CryptoPP::FileSource File(rsa.c_str(), true, new CryptoPP::Base64Decoder());
File.TransferTo(bytes);
bytes.MessageEnd();
// This line Causes BERDecodeError when a PEM encoded file is used
PK.Load(bytes);
}
catch (CryptoPP::BERDecodeErr)
{
// Convert PEM to DER and try to load the key again
}
私は、システムは、OpenSSLに呼び出し、ユーザーは「ただ働き」形式と物事のいずれかを提供することができるよう++暗号で完全に変換を行うことを避けるためにしたいと思います。アドバイスありがとう。
メモリ内デコーダを探しているのですか、オンディスクの方がいいですか? –
@OrgnlDave - Crypto ++を使用しているすべての例がそうです。 – 01100110
@ 01100110 - 現在、Crypto ++はアドオンとしてこのサポートを提供しています。 Crypto ++ wikiの[PEM Pack](http://www.cryptopp.com/wiki/PEM_Pack)を参照してください。 – jww