mirror of
https://github.com/danbulant/jose
synced 2026-05-23 06:18:58 +00:00
refactor: use dsaEncoding for ECDSA when supported
This commit is contained in:
parent
0277fcd189
commit
99eeb43d0e
2 changed files with 17 additions and 3 deletions
|
|
@ -5,5 +5,6 @@ const [major, minor] = process.version.substr(1).split('.').map(x => parseInt(x,
|
|||
module.exports = {
|
||||
oaepHashSupported: major > 12 || (major === 12 && minor >= 9),
|
||||
keyObjectSupported: !!KeyObject && major >= 12,
|
||||
edDSASupported: !!sign && !!verify
|
||||
edDSASupported: !!sign && !!verify,
|
||||
dsaEncodingSupported: major > 13 || (major === 13 && minor >= 2)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,10 +5,15 @@ const { derToJose, joseToDer } = require('../help/ecdsa_signatures')
|
|||
const { KEYOBJECT } = require('../help/consts')
|
||||
const resolveNodeAlg = require('../help/node_alg')
|
||||
const { asInput } = require('../help/key_object')
|
||||
const { dsaEncodingSupported } = require('../help/runtime_support')
|
||||
|
||||
let sign, verify
|
||||
|
||||
if (signOneShot) {
|
||||
if (dsaEncodingSupported) { // >= 13.2.0
|
||||
sign = (jwaAlg, nodeAlg, { [KEYOBJECT]: keyObject }, payload) => {
|
||||
return signOneShot(nodeAlg, payload, { key: asInput(keyObject, false), dsaEncoding: 'ieee-p1363' })
|
||||
}
|
||||
} else if (signOneShot) { // >= 12.0.0
|
||||
sign = (jwaAlg, nodeAlg, { [KEYOBJECT]: keyObject }, payload) => {
|
||||
return derToJose(signOneShot(nodeAlg, payload, asInput(keyObject, false)), jwaAlg)
|
||||
}
|
||||
|
|
@ -18,7 +23,15 @@ if (signOneShot) {
|
|||
}
|
||||
}
|
||||
|
||||
if (verifyOneShot) {
|
||||
if (dsaEncodingSupported) { // >= 13.2.0
|
||||
verify = (jwaAlg, nodeAlg, { [KEYOBJECT]: keyObject }, payload, signature) => {
|
||||
try {
|
||||
return verifyOneShot(nodeAlg, payload, { key: asInput(keyObject, true), dsaEncoding: 'ieee-p1363' }, signature)
|
||||
} catch (err) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
} else if (verifyOneShot) { // >= 12.0.0
|
||||
verify = (jwaAlg, nodeAlg, { [KEYOBJECT]: keyObject }, payload, signature) => {
|
||||
try {
|
||||
return verifyOneShot(nodeAlg, payload, asInput(keyObject, true), joseToDer(signature, jwaAlg))
|
||||
|
|
|
|||
Loading…
Reference in a new issue