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.