3

签名方法是HMAC-SHA1,我已经<SignedInfo>生成了。问题是我不确定在 HMAC 计算中使用什么作为键。

我注意到有两个<Entropy>包含<BinarySecret>初始请求(RST)和响应(RSTR)。我从 WS-Trust 中读到,这表明我可以使用来自<BinarySecret>和的这两个二进制值生成一个证明密钥,正如响应中的标记中PSHA1所指定的那样。<ComputeKey>但是,我永远无法从服务提供商处获得与样本中的签名值相同的签名值。

任何信息都会有所帮助!

举个例子:

  • RST 的二进制秘密是 grrlUUfhuNwlvQzQ4bV6TT3wA8ieZPltIf4+H7nIvCE=
  • RSTR 的二进制秘密是 YLABh3ZmZyiO5gvVLZe9J4JPd9w59KGeTFwE85XlzxE=
  • 正确的签名值为 nXJEN8p1nupMA/00TK03VZlADkU=
  • 我生成的签名值是 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>
4

1 回答 1

0

您是否记得在散列/验证之前对值进行 base64 解码?顺便说一句,您可以使用 hash() 在没有密钥的情况下使用 sha256 进行散列。

于 2011-07-22T15:40:56.807 回答