我已经搜索过这个,但还没有找到答案。
如果我想使用数字证书签署某些东西,我通常必须将它放在我的证书存储中。
但是,是否可以将数字证书作为方法参数传递,使用证书对文档进行签名,而不以任何方式将其存储在本地?
我会在 C++ 或 C# 中执行此操作。
我已经搜索过这个,但还没有找到答案。
如果我想使用数字证书签署某些东西,我通常必须将它放在我的证书存储中。
但是,是否可以将数字证书作为方法参数传递,使用证书对文档进行签名,而不以任何方式将其存储在本地?
我会在 C++ 或 C# 中执行此操作。
您可以使用X509Certificate2
类的各种构造函数从文件或字节数组创建证书。例如:
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;
然后,您可以使用加密服务提供程序进行签名,如如何:使用数字签名对 XML 文档进行签名。
现在这是“不以任何方式将其存储在本地”吗?好吧,不完全是。不存储证书,但私钥存储在 Microsoft Cryptographic API Cryptographic Service Provider 密钥数据库中。