Генерация SignatureValue с использованием HMAC-SHA1 в XML - PullRequest
2 голосов
/ 21 октября 2010

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

1 Ответ

0 голосов
/ 22 июля 2011

Вы помните, чтобы base64 декодировал значения перед хешированием / проверкой? Вы можете хэшировать с помощью sha256 без ключа, используя hash ().

...