签名分离 xml 由 jwt 和 tls 保护

Signing detached xml secured by jwt and tls

我在签署 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(在签名机制中):/

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

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

reference2.DigestValue = GetHashXML(reference2); 

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