Muchas veces, el usuario tendrá claves privadas RSA codificadas en PEM. Crypto ++ requiere que estas claves estén en formato DER para cargarlas. Me he estado preguntando a las personas para convertir sus archivos de forma manual PEM der antemano usando openssl así:Cargue la clave RSA privada codificada PEM en Crypto ++
openssl pkcs8 -in in_file.pem -out out_file.der -topk8 -nocrypt -outform der
que funciona bien, pero algunas personas no entienden cómo hacer que ni ellos quieren. Entonces me gustaría convertir archivos PEM a archivos DER automáticamente dentro del programa.
Es tan simple como desglosar el "----- BEGIN CERTIFICATE -----" y "----- END CERTIFICATE -----" from the PEM o es alguna otra transformación requerida como ¿bien? Me dijeron que entre esos marcadores solo está codificado en b64 DER. Aquí hay algo de código que demuestra el 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
}
me gustaría evitar llamadas al sistema para openssl decisiones y hacer la transformación en su totalidad en Crypto ++ para que los usuarios pueden proporcionar formato y las cosas "sólo trabajo". Gracias por cualquier consejo.
¿Está buscando un decodificador en memoria, o también uno en disco? –
@OrgnlDave - cualquier ejemplo usando Crypto ++ haría. – 01100110
@ 01100110 - Crypto ++ ahora tiene este soporte como un complemento. Consulte [Paquete PEM] (http://www.cryptopp.com/wiki/PEM_Pack) en la wiki de Crypto ++. – jww