我已经搜索过这个但尚未找到答案。
如果我想使用数字证书签名,我通常必须在我的证书商店中进行签名。
但是,是否可以将数字证书作为方法参数传递,使用cerficate对文档进行签名,而不是以任何方式将其存储在本地?
我会用C ++或C#来做这件事。
答案 0 :(得分:0)
您可以使用X509Certificate2
类的各种构造函数从文件或字节数组创建证书。 E.g:
string certFile = @"MyCert.pfx";
string pfxPassword = "password"; // never hard code password in code
X509Certificate2 certificate = new X509Certificate2(certFile, pfxPassword,
X509KeyStorageFlags.MachineKeySet);
RSACryptoServiceProvider rsaCsp = (RSACryptoServiceProvider)certificate.PrivateKey;
然后,您可以使用加密服务提供商进行签名,如How to: Sign XML Documents with Digital Signatures。
现在这样做“不以任何方式在本地存储”?好吧,不完全是。证书不存储,但私钥 存储在Microsoft Cryptographic API加密服务提供程序密钥数据库中。