Загрузите закрытый ключ RSA в PEM в Crypto ++
Часто пользователь имеет закрытые ключи RSA в кодировке PEM. Crypto ++ требует, чтобы эти ключи были загружены в формате DER. Я просил людей вручную конвертировать свои файлы PEM в DER, используя openssl, например:
openssl pkcs8 -in in_file.pem -out out_file.der -topk8 -nocrypt -outform der
Это прекрасно работает, но некоторые люди не понимают, как это сделать, и не хотят. Поэтому я хотел бы автоматически конвертировать PEM-файлы в файлы DER.
Это так же просто, как убрать «----- BEGIN CERTIFICATE -----» и «----- END CERTIFICATE -----» из PEM, или требуется какое-то другое преобразование? Мне сказали, что между этими маркерами это просто кодированный с помощью 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 и выполнять преобразование полностью в Crypto ++, чтобы пользователи могли предоставлять любой формат, и все «просто работает». Спасибо за любой совет.