Как конвертировать файл ключа PKCS8 в формат DER в #C?
Вопрос
Как конвертировать файл ключа PKCS8 в формат DER, чтобы получить частный и открытый ключ в формате XML?
С OpenSSL я могу сделать это, используя: openssl pkcs8 -inform der -in aaa010101aaa_fiel.key -out aaa.txt
AAA010101AAA_FIEL.KEY BYNARY FILE
Я пытаюсь сделать это с библиотекой Bouncy Castle, но у меня есть проблемы с созданием нового EncryptedPrivateKeyInfo (...
Есть сообщение, чтобы сделать это в Java, но мне нужно в C #Как прочитать зашифрованный ключ паролем с Java?
Решение 2
Я нашел ответ!
byte[] dataKey = File.ReadAllBytes(fileName);
Org.BouncyCastle.Crypto.AsymmetricKeyParameter asp =
Org.BouncyCastle.Security.PrivateKeyFactory.DecryptKey(pass.ToCharArray(), dataKey);
MemoryStream ms = new MemoryStream();
TextWriter writer = new StreamWriter(ms);
System.IO.StringWriter stWrite = new System.IO.StringWriter();
Org.BouncyCastle.OpenSsl.PemWriter pmw = new PemWriter(stWrite);
pmw.WriteObject(asp);
stWrite.Close();
return stWrite.ToString();
Другие советы
Документация BounCactlecle довольно редкая, и я не делал этого точного, но вы захотите использовать org.bouncyctle.Openssl.pemReader, чтобы прочитать файл в (возможно) org.bouncyctlecle.asn1.pks.encryptedprivateKeyInfo, как это :
using (FileStream FS = File.Open("whatever.key"))
{
using (TextReader TR = new StreamReader(FS))
{
PR = new Org.BouncyCastle.OpenSsl.PemReader(TR);
EPKI = (Org.BouncyCastle.Asn1.Pkcs.EncryptedPrivateKeyInfo)PR.ReadObject();
}
}
а потом epki.getderencoded () даст вам отформатированную вещь. Нет гарантий, что это будет работать, но PemReader должен, по крайней мере, поставить вас на правильный путь.