您可以将数字证书作为参数传递,使用它来签名,而不是在本地存储吗?

时间:2013-01-21 16:08:37

标签: c# visual-c++ digital-signature digital-certificate

我已经搜索过这个但尚未找到答案。

如果我想使用数字证书签名,我通常必须在我的证书商店中进行签名。

但是,是否可以将数字证书作为方法参数传递,使用cerficate对文档进行签名,而不是以任何方式将其存储在本地?

我会用C ++或C#来做这件事。

1 个答案:

答案 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加密服务提供程序密钥数据库中。