Метод подписи 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>