UNPKG

842 BJavaScriptView Raw
1const { sign: signOneShot, verify: verifyOneShot } = require('crypto')
2
3const { KEYOBJECT } = require('../help/consts')
4const { edDSASupported } = require('../help/runtime_support')
5
6const sign = ({ [KEYOBJECT]: keyObject }, payload) => {
7 if (typeof payload === 'string') {
8 payload = Buffer.from(payload)
9 }
10 return signOneShot(undefined, payload, keyObject)
11}
12
13const verify = ({ [KEYOBJECT]: keyObject }, payload, signature) => {
14 return verifyOneShot(undefined, payload, keyObject, signature)
15}
16
17module.exports = (JWA, JWK) => {
18 if (edDSASupported) {
19 JWA.sign.set('EdDSA', sign)
20 JWA.verify.set('EdDSA', verify)
21 JWK.OKP.sign.EdDSA = key => key.private && JWK.OKP.verify.EdDSA(key)
22 JWK.OKP.verify.EdDSA = key => (key.use === 'sig' || key.use === undefined) && key.keyObject.asymmetricKeyType.startsWith('ed')
23 }
24}