Я пытаюсь отправить SOAP-запрос через узел, разговаривая с сервисом, защищенным с помощью WSS.
Мне нужно подписать ответ XML с помощью элемента SignedInfo
, который требует от меня объединения одноразового номераДвоичный секрет, сгенерированный мной, с двоичным секретом Nonce, возвращенным из исходного запроса токена - формат PSHA1.
Мне удалось проверить это с помощью Java, используя следующий класс (где секрет - мой одноразовый номер клиентаи семя - это одноразовый номер сервера):
https://github.com/apache/wss4j/blob/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/derivedKey/P_SHA1.java#L57
Со следующим кодом Java:
Mac mac = Mac.getInstance("HmacSHA1");
SecretKeySpec key = new SecretKeySpec(getSharedKey(), "HmacSHA1");
mac.init(key);
String bytesToSign = "<XML_TO_SIGN_GOES_HERE>";
String signature = Base64.encodeBytes(mac.doFinal(bytesToSign.getBytes()));
Мне нужно сделать это в проекте Node,Я посмотрел на Crypto API и многочисленные плагины, но не могу сгенерировать одну и ту же сигнатуру.
Как указать начальное число для узла HmacSHA1, использующего узел?