为了账号安全,请及时绑定邮箱和手机立即绑定

SOAP 主体的 XML 签名

SOAP 主体的 XML 签名

Go
慕村9548890 2022-01-17 18:14:27
我正在为一个需要soap:body 签名的WS 实现一个客户端。该应用程序是用 Go 编写的,所以我宁愿避免链接到 C。最大的问题是:如何计算SHA256?摘要算法的输入应该是什么?我假设 "/CJj9686ARgbV/YmDrr+1yhcaJuXu022cADK/M8efQs=" 是后来签名的 SHA256 结果。我尝试了许多规范化 XML 的变体,但没有一个会产生这个哈希值。
查看完整描述

3 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

最后,我找到了如何获取所有值。

  1. 规范化 <SignedInfo><Reference> 中定义的 XML 元素。在这种情况下,它是 <soap:Body> 元素。规范化只添加了肥皂命名空间并添加了结束标签。我在 Go 中生成这些,而 Go 从不生成自闭合标签。

  2. 从规范化 <soap:Body> 的字符串表示中计算哈希,因为它将在请求中发送。

  3. 将计算的摘要添加到相应 <Reference> 的 <DigestValue> 中。

  4. 规范化 <SignedInfo> 并计算它的哈希值。

  5. 签署此哈希并将值添加到 <SignedValue>。

我知道这不是通用方法,但它应该对我有用。C14N 不是必需的,因为如果您注意属性顺序并手动添加命名空间,Go 可以产生相同的结果。


查看完整回答
反对 回复 2022-01-17
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

参考 XML 示例 CZ00000019.valid.v3.xml(捷克财政当局 EET 的),规范化的 SignedInfo 是:


var signedinfoCanon 

= '<ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'

+ '<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">'

+ '<ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="soap"></ec:InclusiveNamespaces>'

+ '</ds:CanonicalizationMethod>'

+ '<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></ds:SignatureMethod>'

+ '<ds:Reference URI="#id-A72D6FD4C41B1F545F14700558808234">'

+ '<ds:Transforms>'

+ '<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">'

+ '<ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList=""></ec:InclusiveNamespaces>'

+ '</ds:Transform>'

+ '</ds:Transforms>'

+ '<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></ds:DigestMethod>'

+ '<ds:DigestValue>4hn06sSS2yurIiUmWaV36JQJZrwbWf36sG9bOHH/ycM=</ds:DigestValue>'

+ '</ds:Reference>'

+ '</ds:SignedInfo>'


查看完整回答
反对 回复 2022-01-17
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

像这样计算sha256


import (

"crypto/sha256"


)


var slice = []byte("test")


return sha256.Sum256(slice)


查看完整回答
反对 回复 2022-01-17
  • 3 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信