refactor: use dsaEncoding for ECDSA when supported

This commit is contained in:
Filip Skokan 2019-11-29 10:56:36 +01:00
parent 0277fcd189
commit 99eeb43d0e
2 changed files with 17 additions and 3 deletions

View file

@ -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)
}

View file

@ -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))