Laden PEM-kodierte private RSA-Schlüssel in der Crypto++

Oft Benutzer PEM-kodierte private RSA-Schlüssel. Crypto++ erfordert, dass diese Schlüssel werden im DER-format zu laden. Ich habe gefragt, die Leute manuell konvertieren Sie Ihre PEM-Dateien DER vorher mit openssl wie diese:

openssl pkcs8 -in in_file.pem -out out_file.der -topk8 -nocrypt -outform der

Das funktioniert, aber einige Leute verstehen nicht, wie zu tun, noch wollen Sie. Also ich würde zum umwandeln von PEM-Dateien in DER Dateien automatisch in das Programm.

Ist es so einfach wie striping die "-----BEGIN CERTIFICATE-----" und "-----END CERTIFICATE-----" aus dem PEM oder eine andere transformation erforderlich? Ich habe gesagt, dass zwischen diesen Marken, die es nur b64-codierte DER -. Hier ist etwas code, der veranschaulicht das Problem:

//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
}

Ich würde gerne vermeiden, dass system-Aufrufe von openssl und machen die Verwandlung komplett in Crypto++, so dass Benutzer können entweder format und die Dinge "einfach funktionieren". Vielen Dank für jeden Rat.

  • Sind Sie auf der Suche nach einem in-memory-decoder, oder ist auf der Festplatte ein auch gut?
  • jedes Beispiel, das mit Crypto++ machen würde.
  • Crypto++ jetzt hat diese Unterstützung als add-on. Siehe PEM-Pack auf der Crypto++ - wiki.
InformationsquelleAutor 01100110 | 2012-03-22
Schreibe einen Kommentar