【发布时间】:2014-03-17 22:50:54
【问题描述】:
我试图复制这一行
openssl smime -sign -signer <chain_crt_file> -in <infile> -out <outfile> -inkey <privatekey> -outform der
进入 C# 然而它并没有我想象的那么容易。到目前为止我只到了这一点
OpenSSL.Core.BIO crtBio = OpenSSL.Core.BIO.File("C:/asl/chain.crt", "r");
OpenSSL.Core.BIO keyBio = OpenSSL.Core.BIO.File("C:/asl/keydec.txt", "r");
OpenSSL.X509.X509Chain crt = new OpenSSL.X509.X509Chain(crtBio);
OpenSSL.Crypto.RSA key = OpenSSL.Crypto.RSA.FromPrivateKey(keyBio);
String str = "test";
byte[] bytes = new byte[str.Length * sizeof(char)];
System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
我在哪里(希望)导入链证书和解码的私钥。 现在的问题是如何签署文件并导出为 DER。 OpenSSL.NET 包装器缺少文档,我在互联网上找到的示例是“如何使用公钥/私钥加密和解密消息”,这不是这里的情况。
为了开始我尝试签署这个“测试”字符串(因为文件输入/输出应该非常简单)但我不知道从哪里开始。
问题是我需要签署这个字符串,因此我需要密钥和证书链。
非常感谢您的帮助。
【问题讨论】:
-
是否需要 OpenSSL 包装器?您可以使用带有私钥和SignedCms .Net class 的 x509 证书对任何数据进行签名您是否阅读了etutorials.org 上的“7.12 使用 RSA 私钥签名数据”?
-
感谢您的参考。显然不需要包装器,因为我遵循了您的建议并使用了 PKCS12 文件,因为 .NET Cryptography 类完全支持它。我找到的解决方案很简单,stackoverflow.com/questions/11526572/…
标签: c# .net openssl pkcs#7 x509