【发布时间】:2020-05-04 21:54:00
【问题描述】:
我正在尝试实现一种方法来计算和验证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 ...推出我自己的哈希算法?
【问题讨论】:
-
如果你对 js 依赖感到满意,CryptoJS 可以做到。
标签: scala slack hmac scala.js scala-java-interop