24 lines
534 B
JavaScript
24 lines
534 B
JavaScript
const fs = require("fs-extra")
|
|
const fnv = require("fnv-plus")
|
|
|
|
module.exports = async function createJwks(env) {
|
|
const { JWK_FILE, OLDJWK_FILE } = env
|
|
|
|
const loadJwkFile = async (file) => {
|
|
const rawJwk = await fs.readFile(file, { encoding: "utf-8" })
|
|
const jwk = JSON.parse(rawJwk)
|
|
if (!jwk.kid) {
|
|
jwk.kid = fnv.hash(rawJwk, 128).hex()
|
|
}
|
|
return jwk
|
|
}
|
|
const keys = []
|
|
|
|
keys.push(await loadJwkFile(JWK_FILE))
|
|
|
|
if (OLDJWK_FILE) {
|
|
keys.push(await loadJwkFile(OLDJWK_FILE))
|
|
}
|
|
|
|
return keys
|
|
}
|