私は最近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で使用する証明書に関係なく。
例外は次のとおりです。
エラー:0D0A706C:asn1エンコーディングルーチン:PKCS5_pbe2_set:暗号にオブジェクト識別子がありませんエラー:2307D00D:PKCS12ルーチン:PKCS8_encrypt:ASN1lib
他の暗号タイプを指定すると、必ず秘密鍵がエクスポートされるため、この部分は正常に機能することがわかっています。誰か提案がありますか?