gpt4 book ai didi

c# - 在 C# 中将证书链添加到 PKCS#7/CMS 容器

转载 作者:太空宇宙 更新时间:2023-11-03 13:28:11 29 4
gpt4 key购买 nike

我正在从我正在使用的服务中获取一个 PKCS#7/CMS 容器,其中包括一个用户证书和一个签名。

我可以使用 SignedCms 查看单个证书

var cert = GetCertFromServer();

SignedCms signedCms = new SignedCms();
signedCms.Decode(cert);

// The user certificate
X509Certificate2 userCert = signedCms.Certificates[0];

但我需要将中间证书和根证书添加到该链中。 SignedCms.Certificates 似乎是不可变的,所以我无法将证书直接添加到集合中,也无法通过以下方式替换证书集合

// root, inter and leaf certs are X509Certificate2 objects read from files
X509Certificate2[] certArr = new[] {rootCert, interCert, leafCert, userCert};

X509Certificate2Collection chain = new X509Certificate2Collection(certArr);

signedCms.Certificates = chain; // Error: No setter

因为 SignedCms.Certificates 没有 setter 。我一直无法找到一种方法来从这个容器创建一个新容器。我也没有在充气城堡或任何其他图书馆中找到有关如何执行此操作的信息。

我需要一个包含证书链和签名的容器,并将该容器中的字节写入我正在签名的 PDF 文件。有没有办法将证书添加到容器中的链中?

最佳答案

我知道问这个问题已经好几年了,但我最近遇到了同样的问题。

对于遇到同样问题的人,X509Certificate2Collection 类有一个 Export 方法。

X509Certificate2[] certArr = certificates.ToArray();
X509Certificate2Collection chain = new X509Certificate2Collection(certArr);
byte[] result = chain.Export(X509ContentType.Pkcs7);

关于c# - 在 C# 中将证书链添加到 PKCS#7/CMS 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21572886/

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