我试图在C#中创建一个PKCS#7签名消息。数字签名在HSM中单独计算,因此我已经拥有了签名的值,我只想创建一个包含它的PKCS#7结构。
我已经研究过在System.Security.Cryptography.Pkcs命名空间中使用SignedCms,但是这似乎没有提供预先计算签名的选项。
当我已经拥有数字签名的值时,在C#中生成PKCS#7结构的最佳方法是什么?
答案 0 :(得分:2)
AFAIK你不能用“内置”.NET类做到这一点。
但是我创建了一个示例应用程序 - Pkcs7SignatureGenerator - 用于Pkcs11Interop(我是其作者)和Bouncy Castle库创建CMS签名。
在此应用程序中,Pkcs11Interop库通过PKCS#11 API执行签名操作,私钥存储在硬件设备中,BouncyCastle库负责构建CMS(PKCS#7)签名结构。
答案 1 :(得分:0)
我认为你想要的是X509Certificate2
类,使用静态CreateFromSignedFile
函数从签名文件中检索证书,或者使用CreateFromCertFile
从指定的认证文件创建:
X509Certificate2 cert = X509Certificate2.CreateFromSignedFile(filename);
CmsSigner signer = new CmsSigner(cert);