diff --git a/lib/help/node_alg.js b/lib/help/node_alg.js new file mode 100644 index 00000000..f5b95ee2 --- /dev/null +++ b/lib/help/node_alg.js @@ -0,0 +1,19 @@ +module.exports = (alg) => { + switch (alg) { + case 'RS256': + case 'PS256': + case 'HS256': + case 'ES256': + return 'sha256' + case 'RS384': + case 'PS384': + case 'HS384': + case 'ES384': + return 'sha384' + case 'RS512': + case 'PS512': + case 'HS512': + case 'ES512': + return 'sha512' + } +} diff --git a/lib/jwa/ecdsa.js b/lib/jwa/ecdsa.js index 7f451592..80df4b2c 100644 --- a/lib/jwa/ecdsa.js +++ b/lib/jwa/ecdsa.js @@ -3,17 +3,7 @@ const { createSign, createVerify } = require('crypto') const { derToJose, joseToDer } = require('../help/ecdsa_signatures') const { KEYOBJECT } = require('../help/symbols') - -const resolveNodeAlg = (alg) => { - switch (alg) { - case 'ES256': - return 'RSA-SHA256' - case 'ES384': - return 'RSA-SHA384' - case 'ES512': - return 'RSA-SHA512' - } -} +const resolveNodeAlg = require('../help/node_alg') const sign = (jwaAlg, nodeAlg, { [KEYOBJECT]: keyObject }, payload) => { const sign = createSign(nodeAlg) diff --git a/lib/jwa/hmac.js b/lib/jwa/hmac.js index dc6e54c2..f4aab782 100644 --- a/lib/jwa/hmac.js +++ b/lib/jwa/hmac.js @@ -3,17 +3,7 @@ const { createHmac } = require('crypto') const { KEYOBJECT } = require('../help/symbols') const timingSafeEqual = require('../help/timing_safe_equal') - -const resolveHmacAlg = (alg) => { - switch (alg) { - case 'HS256': - return 'sha256' - case 'HS384': - return 'sha384' - case 'HS512': - return 'sha512' - } -} +const resolveNodeAlg = require('../help/node_alg') const sign = (jwaAlg, hmacAlg, { [KEYOBJECT]: keyObject }, payload) => { const hmac = createHmac(hmacAlg, keyObject) @@ -32,7 +22,7 @@ const verify = (jwaAlg, hmacAlg, { [KEYOBJECT]: keyObject }, payload, signature) module.exports = (JWA) => { ['HS256', 'HS384', 'HS512'].forEach((jwaAlg) => { - const hmacAlg = resolveHmacAlg(jwaAlg) + const hmacAlg = resolveNodeAlg(jwaAlg) assert(!JWA.sign.has(jwaAlg), `sign alg ${jwaAlg} already registered`) assert(!JWA.verify.has(jwaAlg), `verify alg ${jwaAlg} already registered`) diff --git a/lib/jwa/rsassa.js b/lib/jwa/rsassa.js index 92655e5f..5dcda324 100644 --- a/lib/jwa/rsassa.js +++ b/lib/jwa/rsassa.js @@ -2,17 +2,7 @@ const { strict: assert } = require('assert') const { createSign, createVerify } = require('crypto') const { KEYOBJECT } = require('../help/symbols') - -const resolveNodeAlg = (alg) => { - switch (alg) { - case 'RS256': - return 'RSA-SHA256' - case 'RS384': - return 'RSA-SHA384' - case 'RS512': - return 'RSA-SHA512' - } -} +const resolveNodeAlg = require('../help/node_alg') const sign = (nodeAlg, { [KEYOBJECT]: keyObject }, payload) => { const sign = createSign(nodeAlg) diff --git a/lib/jwa/rsassa_pss.js b/lib/jwa/rsassa_pss.js index a3d2fb68..7e141ce1 100644 --- a/lib/jwa/rsassa_pss.js +++ b/lib/jwa/rsassa_pss.js @@ -2,17 +2,7 @@ const { strict: assert } = require('assert') const { createSign, createVerify, constants } = require('crypto') const { KEYOBJECT } = require('../help/symbols') - -const resolveNodeAlg = (alg) => { - switch (alg) { - case 'PS256': - return 'RSA-SHA256' - case 'PS384': - return 'RSA-SHA384' - case 'PS512': - return 'RSA-SHA512' - } -} +const resolveNodeAlg = require('../help/node_alg') const sign = (nodeAlg, { [KEYOBJECT]: keyObject, length }, payload) => { const sign = createSign(nodeAlg)