【发布时间】:2010-06-11 23:14:47
【问题描述】:
我最近发现了OpenSSL.NET,它是一个非常可爱的小包装。
我正在尝试执行以下代码:
public static void DoSomething(byte[] buf)
{
OpenSSL.Core.BIO input = new OpenSSL.Core.BIO(buf);
OpenSSL.X509.X509Certificate b = OpenSSL.X509.X509Certificate.FromPKCS12(input, "passphrase");
OpenSSL.Core.BIO outs = OpenSSL.Core.BIO.MemoryBuffer(false);
b.PrivateKey.WritePrivateKey(outs, OpenSSL.Crypto.Cipher.Null, "passphrase");
outs.SetClose(OpenSSL.Core.BIO.CloseOption.Close);
Console.WriteLine(outs.ReadString());
}
问题出现在“b.PrivateKey.WritePrivateKey(..”行。我想在没有任何加密的情况下写出私钥。根据规范,如果我使用 Null 密码类型,这应该可以解决问题,但它无论我在 buf 中使用什么证书,都无法正常工作。
这是一个例外:
error:0D0A706C:asn1 encoding routines:PKCS5_pbe2_set:cipher has no object identifier 错误:2307D00D:PKCS12 例程:PKCS8_encrypt:ASN1 库
我知道这部分工作正常,因为如果我指定任何其他密码类型,它会毫无失败地导出私钥。有人有什么建议吗?
【问题讨论】:
标签: .net openssl private-key