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

问题描述 投票:1回答:1

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

从slack的文档中验证来自Slack的签名请求:

  • 借助您最喜欢的编程中实现的HMAC SHA256,使用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 ...推出我自己的哈希算法?

scala slack hmac scala.js scala-java-interop
1个回答
0
投票
有一个项目倾向于这样做(不确定质量)https://github.com/fluencelabs/crypto。在内部,它使用CryptoJS(也许直接使用它会更简单或更稳定)。但是您仍然可以看到它如何在fluencelabs / crypto中使用。
© www.soinside.com 2019 - 2024. All rights reserved.