0

我有一个证书文件并分配给X509Certificate2班级,

cert = New X509Certificate2("mycertificate.cer")

这只有我将用来签署我的文件cert的公钥。xml

然后我这样做,

dim doc as New XmlDocument
doc.PreserveWhitespace = True
doc.Load("myxmlfile.xml")
signedXml = New SignedXml(doc)
signedXml.SigningKey = cert.publickey.key
dim reference as New Reference
reference.Uri = ""
dim trns as New XmlDsigC14NTransform
reference.AddTransform(trns)
signedXml.AddReference(reference)
keyInfo = New KeyInfo()
keyInfo.AddClause(New KeyInfoX509Data(cert))
signedXml.KeyInfo = keyInfo
signedXml.ComputeSignature()
xmlDigitalSignature = signedXml.GetXml()

线上signedXml.ComputeSignature()有问题。

“密钥集不存在”。

我不知道这个案子。我该如何解决这个问题?

4

2 回答 2

1

这可能已经被覆盖了 - 在此处查看答案:

https://stackoverflow.com/a/6799315/2319909

显然您可能不会使用 IIS,但权限可能仍然是个问题。

于 2014-08-20T10:08:41.383 回答
0

要进行签名,您需要与证书对应的私钥。您只加载了证书,因此您收到了此异常。

从 p12 文件加载证书和私钥,或从 Windows 存储中选择证书。无论哪种方式,都必须设置 PrivateKey 属性。

于 2014-08-21T05:15:49.683 回答