我有一个证书文件并分配给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()
行有一些错误。
“键集不存在”。
我不知道这个案子。我该如何解决这个问题?
答案 0 :(得分:1)
答案 1 :(得分:0)
要进行签名,您需要与证书对应的私钥。您只加载了证书,因此您收到了此例外。
从p12文件加载证书和私钥,或从Windows应用商店中选择证书。无论哪种方式都必须设置PrivateKey属性。