使用预先计算的签名在 c# 中创建 PKCS#7 签名消息



我正在尝试用 C# 创建一个 PKCS#7 签名的消息。数字签名在 HSM 中单独计算,因此我已经有了签名的值,我只想创建一个包含它的 PKCS#7 结构。

我已经研究了在System.Security.Cryptography.Pkcs命名空间中使用SignedCms,但这似乎没有提供预先计算签名的选项。

当我已经具有数字签名的值时,在 C# 中生成 PKCS#7 结构的最佳方法是什么?

AFAIK 你不能用"内置".NET 类做到这一点。

但是,我创建了一个示例应用程序 - Pkcs7SignatureGenerator - 用于使用Pkcs11Interop(我是作者)和Bouncy Castle库创建CMS签名。

在此应用程序中,Pkcs11互操作库通过PKCS#11 API执行签名操作,私钥存储在硬件设备中,BouncyCastle库负责构建CMS(PKCS#7)签名结构。

我认为您想要的是X509Certificate2类,使用静态CreateFromSignedFile函数从签名文件中检索证书,或使用CreateFromCertFile从指定的认证文件创建:

X509Certificate2 cert = X509Certificate2.CreateFromSignedFile(filename);
CmsSigner signer = new CmsSigner(cert);

最新更新