gpt4 book ai didi

c# - 使用 .NET OpenSSL 包装器签署文件

转载 作者:太空宇宙 更新时间:2023-11-03 16:00:02 26 4
gpt4 key购买 nike

我正在尝试复制这一行

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 包装器缺少文档,我在 Internet 上找到的示例是“如何使用公钥/私钥加密和解密消息”,这里不是这种情况。

开始时,我尝试签署这个“测试”字符串(因为文件输入/输出应该非常简单)但我不知道从哪里开始。

问题是我需要签署这个字符串,因此我需要 key 和证书链。

非常感谢您的帮助。

最佳答案

To get started I tried to sign this "test" string (as file in/out should be pretty straightfoward) but I have no clue where to start.

OpenSSL 源代码可能是一个很好的起点。 OpenSSL 提供了 smime 的源代码在 <openssl dir>/apps/smime.c .

OpenSSL 的 smime实用程序只调用 PKCS7_sign与适当的参数。从第 688 行开始:

else if (operation & SMIME_SIGNERS)
{
int i;
/* If detached data content we only enable streaming if
* S/MIME output format.
*/
if (operation == SMIME_SIGN)
{
if (flags & PKCS7_DETACHED)
{
if (outformat == FORMAT_SMIME)
flags |= PKCS7_STREAM;
}
else if (indef)
flags |= PKCS7_STREAM;

flags |= PKCS7_PARTIAL;
p7 = PKCS7_sign(NULL, NULL, other, in, flags);
if (!p7)
goto end;
}
...

了解 PKCS7_sign ,您可以在 PKCS7_sign(3) 访问 OpenSSL 的文档。 .或者,您可以寻找示例。

我不知道您使用的包装器。

关于c# - 使用 .NET OpenSSL 包装器签署文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21849460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com