2010-10-21 56 views
2

簽名方法是HMAC-SHA1,並且我已經有<SignedInfo>生成。問題是我不確定在HMAC計算中使用什麼作爲密鑰。使用XML中的HMAC-SHA1生成SignatureValue

我注意到有兩個<Entropy>從最初的請求(RST)和響應(RSTR)包含<BinarySecret>。我從WS-Trust讀取,這表明我可以使用來自響應的<ComputeKey>標記中指定的<BinarySecret>PSHA1中的這兩個二進制值生成證明密鑰。但是,我永遠無法獲得與服務提供商樣本中相同的簽名值。

任何信息都有幫助!

作爲一個例子:

  • 從RST二進制祕密是 grrlUUfhuNwlvQzQ4bV6TT3wA8ieZPltIf4+H7nIvCE=
  • 從RSTR二進制祕密是 YLABh3ZmZyiO5gvVLZe9J4JPd9w59KGeTFwE85XlzxE=
  • 正確簽名值是 nXJEN8p1nupMA/00TK03VZlADkU=
  • 簽名值I生成是 bEGpeRFsznafFRf86g281zKV3Ro=
  • SignInfo的內容如下
<SignedInfo> 
    <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> 
    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/> 
    <Reference URI="#_0"> 
    <Transforms> 
    <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> 
    </Transforms> 
    <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> 
    <DigestValue>CwMGnFZklO7XsDfFguzl0tw7iHM=</DigestValue> 
    </Reference> 
    </SignedInfo> 

回答

0

你記得的base64散列/驗證之前解碼值? 順便說一句,你可以使用hash()來散列沒有密鑰的sha256。