签名方式为HMAC-SHA1
, 我已经有了 <SignedInfo>
产生。问题是我不确定在 HMAC 计算中使用什么作为 key 。
我注意到有两个 <Entropy>
附上 <BinarySecret>
来自初始请求 (RST) 和响应 (RSTR)。我从 WS-Trust 了解到,这表明我可以使用 <BinarySecret>
中的这两个二进制值生成证明 key 。和 PSHA1
如 <ComputeKey>
中所述来自响应的标记。但是,我永远无法从服务提供商处获得与示例中相同的签名值。
任何信息都会有所帮助!
举个例子:
grrlUUfhuNwlvQzQ4bV6TT3wA8ieZPltIf4+H7nIvCE=
YLABh3ZmZyiO5gvVLZe9J4JPd9w59KGeTFwE85XlzxE=
nXJEN8p1nupMA/00TK03VZlADkU=
bEGpeRFsznafFRf86g281zKV3Ro=
<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>
最佳答案
您是否记得在散列/验证之前对值进行 base64 解码? 顺便说一句,您可以使用 hash() 对 sha256 进行散列而无需 key 。
https://stackoverflow.com/questions/3984436/