亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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條經驗 獲得超4個贊

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

  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 關注
  • 232 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號