0

我在签署 XML 文档时遇到问题。我需要像在这个 url 中那样签署外部(分离的)文档: https ://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.xml.signedxml.computesignature?view=net- 5.0 此示例在我的代码中有效,但是我的 xml 文档由 JWT 和 TLS 证书保护,因此当我尝试 computeSignature 时,我遇到异常“无法创建安全的 ssl/tls 通道”:/ 当我尝试在服务器,当我附加 tls 证书时,问题就解决了。不幸的是,我不知道在这种情况下如何附加 jwt 令牌和 tls(在签名机制中):/

4

1 回答 1

0

所以......经过几个小时的工作,我找到了一些解决方案。问题出在 System.Security.Cryptography.Xml 参考类中。在此类中,当引用某些外部 xml 时,GetHash 方法发出简单的 GET 请求,您无法签署自己的解析器。不幸的是,我无法编辑 System.Security.Cryptography .dll。但是我可以编辑 Medicom.XADES,所以在 BuildDigestedReferences 方法中我需要评论这一行://Reference_UpdateHashValue.Invoke(reference2, new object[] { m_ containsDocument, refList });

并准备我自己的 DigestValue 以供参考:

reference2.DigestValue = GetHashXML(reference2); 

其中 GetHashXML(Reference reference) 是向外部(由 ssl/tls 保护)xml 发出请求,然后计算 SHA256 哈希并通过 BYTE 将其值返回给 reference2.DigestValue 的方法

于 2021-03-10T09:54:49.600 回答