as-services/libs/utils/crypto/verify-hmac-512-jwt.js

21 lines
483 B
JavaScript

const crypto = require("crypto")
module.exports = function verifyHMAC512JWT(token, secret) {
const parts = token.split(".")
if (parts.length !== 3) {
return false
}
const headerPayload = `${parts[0]}.${parts[1]}`
const signature = parts[2]
const newSignature = crypto
.createHmac("sha512", secret)
.update(headerPayload)
.digest("base64")
.replace(/\+/g, "-")
.replace(/\//g, "_")
.replace(/=+$/, "")
return newSignature === signature
}