Похоже, что API B # Bouncy Castle изменился, и текущий ответ больше не работает. Я не смог найти ответы на вопросы о том, как использовать его сейчас, поэтому оставлю этот обновленный пример. Хитрость заключается в использовании MiscPemGenerator
.
void ConvertPfxToPem(
string pfxPath,
string pfxPassword,
string keyPath)
{
using (Stream stream = File.Open(pfxPath, FileMode.Open))
{
Pkcs12Store pkcs = new Pkcs12Store(stream, pfxPassword.ToCharArray());
foreach (string alias in pkcs.Aliases)
{
if (pkcs.IsKeyEntry(alias) && pkcs.GetKey(alias).Key.IsPrivate)
{
AsymmetricKeyParameter privateKey = pkcs.GetKey(alias).Key;
using (Stream s = new FileStream(keyPath, FileMode.Create))
using (TextWriter textWriter = new StreamWriter(s))
{
var generator = new MiscPemGenerator(privateKey);
PemWriter pemWriter = new PemWriter(textWriter);
pemWriter.WriteObject(generator);
textWriter.Flush();
}
}
}
}
}