无法在 Scala.js 中执行 HmacSHA256 哈希

Can't perform HmacSHA256 hashing in Scala.js

我正在尝试实现一种方法来计算和验证 verifying a slack request 的 HmacSHA256 签名。由于...各种原因...我正在使用 scala.js,因此我无法访问通常的 javax.crypto 导入。

来自 slack 关于验证来自 Slack 的签名请求的文档:

  • With the help of HMAC SHA256 implemented in your favorite programming, hash the above basestring, using the Slack Signing Secret as the key.
  • Compare this computed signature to the X-Slack-Signature header on the request.

嗯,第一步有问题。在 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...推出我自己的哈希算法?

有一个项目倾向于这样做(不确定质量)https://github.com/fluencelabs/crypto。它在内部使用 CryptoJS(也许直接使用它会更简单或更稳定)。但是你仍然可以看到它是如何在 fluencelabs/crypto.

中使用的