Не могу выполнить хеширование HmacSHA256 в Scala. js - PullRequest
2 голосов
/ 18 января 2020

Я пытаюсь реализовать метод, который будет вычислять и проверять подпись HmacSHA256 для проверки слабого запроса . По ... разным причинам ... я использую scala.js, и поэтому у меня нет доступа к обычному javax.crypto импорту.

Из документации Slack по проверке подписанного запроса от Slack:

  • С помощью HMA C SHA256, реализованного в вашем любимом программировании, ха sh выше basestring, используя Slack Signing Secret в качестве ключа.
  • Сравните эту вычисленную подпись с заголовком X-Slack-Signature по запросу.

Ну, первый шаг существует проблема. В scala. js пакет javax.crypto недоступен, поэтому следующее не будет работать:

import javax.crypto.Mac 
import javax.crypto.spec.SecretKeySpec

def asHmacSHA256(key: String, baseString: String): Array[Byte] = {
  val secretKeySpec = new SecretKeySpec(key.getBytes(), "HmacSHA256")
  val hmac = Mac.getInstance("HmacSHA256")
  hmac.init(secretKeySpec)
  hmac.doFinal(baseString.getBytes())
}

Как обойти это - есть ли хорошая библиотека хеширования, которая работает с scala. js, или мне придется вывести некоторую зависимость js, или мне придется ... gulp ... свернуть мой собственный алгоритм хеширования?

1 Ответ

1 голос
/ 18 января 2020

есть один проект, который стремится это сделать (не уверен в качестве) https://github.com/fluencelabs/crypto. Внутренне он использует Crypto JS (и, возможно, использовать его напрямую будет еще проще или стабильнее). Но все же вы можете увидеть, как он используется в fluencelabs / crypto.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...