have RSA privada codificada por @Load PEM no Crypto ++

Muitas vezes, o usuário terá chaves privadas RSA codificadas por PEM. O Crypto ++ exige que essas chaves estejam no formato DER para carregar. Eu pedi às pessoas que convertessem manualmente seus arquivos PEM para DER usando o openssl assim:

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

Isso funciona bem, mas algumas pessoas não entendem como fazer isso nem querem. Então, eu gostaria de converter arquivos PEM para arquivos DER automaticamente dentro do program

É tão simples quanto remover o "----- INICIAR CERTIFICADO -----" e "----- END CERTIFICATE -----" do PEM ou alguma outra transformação também é necessária? Foi-me dito que, entre esses marcadores, é apenas o DER codificado em b64. Aqui está um código que demonstra o problema:

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

Gostaria de evitar fazer chamadas do sistema para openssl e fazer a transformação inteiramente no Crypto ++, para que os usuários possam fornecer o formato e as coisas "simplesmente funcionem". Obrigado por qualquer conselho.

questionAnswers(6)

yourAnswerToTheQuestion