mirror of
https://github.com/danbulant/jose
synced 2026-05-24 12:35:36 +00:00
chore: update dev deps, code lint
This commit is contained in:
parent
c77c7945ab
commit
418e311c8d
12 changed files with 43 additions and 35 deletions
|
|
@ -47,6 +47,7 @@ class JOSEMultiError extends JOSEError {
|
||||||
}
|
}
|
||||||
this.#errors = errors
|
this.#errors = errors
|
||||||
}
|
}
|
||||||
|
|
||||||
* [Symbol.iterator] () {
|
* [Symbol.iterator] () {
|
||||||
for (const error of this.#errors) {
|
for (const error of this.#errors) {
|
||||||
yield error
|
yield error
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ module.exports.KEYLENGTHS = {
|
||||||
'A128CBC-HS256': 256,
|
'A128CBC-HS256': 256,
|
||||||
'A192CBC-HS384': 384,
|
'A192CBC-HS384': 384,
|
||||||
'A256CBC-HS512': 512,
|
'A256CBC-HS512': 512,
|
||||||
'A128GCM': 128,
|
A128GCM: 128,
|
||||||
'A192GCM': 192,
|
A192GCM: 192,
|
||||||
'A256GCM': 256
|
A256GCM: 256
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,7 @@ module.exports.derToJose = (signature, alg) => {
|
||||||
|
|
||||||
const sPadding = paramBytes - sLength
|
const sPadding = paramBytes - sLength
|
||||||
|
|
||||||
let dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength)
|
const dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength)
|
||||||
|
|
||||||
for (offset = 0; offset < rPadding; ++offset) {
|
for (offset = 0; offset < rPadding; ++offset) {
|
||||||
dst[offset] = 0
|
dst[offset] = 0
|
||||||
|
|
@ -144,7 +144,7 @@ module.exports.joseToDer = (signature, alg) => {
|
||||||
|
|
||||||
const shortLength = rsBytes < MAX_OCTET
|
const shortLength = rsBytes < MAX_OCTET
|
||||||
|
|
||||||
let dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes)
|
const dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes)
|
||||||
|
|
||||||
let offset = 0
|
let offset = 0
|
||||||
dst[offset++] = ENCODED_TAG_SEQ
|
dst[offset++] = ENCODED_TAG_SEQ
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,14 @@ const { randomBytes } = require('crypto')
|
||||||
|
|
||||||
const IVLENGTHS = {
|
const IVLENGTHS = {
|
||||||
'A128CBC-HS256': 128 / 8,
|
'A128CBC-HS256': 128 / 8,
|
||||||
'A128GCM': 96 / 8,
|
A128GCM: 96 / 8,
|
||||||
'A128GCMKW': 96 / 8,
|
A128GCMKW: 96 / 8,
|
||||||
'A192CBC-HS384': 128 / 8,
|
'A192CBC-HS384': 128 / 8,
|
||||||
'A192GCM': 96 / 8,
|
A192GCM: 96 / 8,
|
||||||
'A192GCMKW': 96 / 8,
|
A192GCMKW: 96 / 8,
|
||||||
'A256CBC-HS512': 128 / 8,
|
'A256CBC-HS512': 128 / 8,
|
||||||
'A256GCM': 96 / 8,
|
A256GCM: 96 / 8,
|
||||||
'A256GCMKW': 96 / 8
|
A256GCMKW: 96 / 8
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = alg => randomBytes(IVLENGTHS[alg])
|
module.exports = alg => randomBytes(IVLENGTHS[alg])
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,10 @@ const eGcdX = (a, b) => {
|
||||||
let v = ZERO
|
let v = ZERO
|
||||||
|
|
||||||
while (a !== ZERO) {
|
while (a !== ZERO) {
|
||||||
let q = b / a
|
const q = b / a
|
||||||
let r = b % a
|
const r = b % a
|
||||||
let m = x - (u * q)
|
const m = x - (u * q)
|
||||||
let n = y - (v * q)
|
const n = y - (v * q)
|
||||||
b = a
|
b = a
|
||||||
a = r
|
a = r
|
||||||
x = u
|
x = u
|
||||||
|
|
@ -49,7 +49,7 @@ const gcd = (a, b) => {
|
||||||
b >>= ONE
|
b >>= ONE
|
||||||
}
|
}
|
||||||
if (a > b) {
|
if (a > b) {
|
||||||
let x = a
|
const x = a
|
||||||
a = b
|
a = b
|
||||||
b = x
|
b = x
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,10 +19,15 @@ const PROCESS_RECIPIENT = Symbol('PROCESS_RECIPIENT')
|
||||||
|
|
||||||
class Encrypt {
|
class Encrypt {
|
||||||
#aad
|
#aad
|
||||||
|
|
||||||
#cek
|
#cek
|
||||||
|
|
||||||
#unprotected
|
#unprotected
|
||||||
|
|
||||||
#protected
|
#protected
|
||||||
|
|
||||||
#cleartext
|
#cleartext
|
||||||
|
|
||||||
#recipients
|
#recipients
|
||||||
|
|
||||||
constructor (cleartext, protectedHeader, unprotectedHeader, aad) {
|
constructor (cleartext, protectedHeader, unprotectedHeader, aad) {
|
||||||
|
|
@ -86,7 +91,7 @@ class Encrypt {
|
||||||
}
|
}
|
||||||
const { key } = recipient
|
const { key } = recipient
|
||||||
|
|
||||||
let enc = jweHeader.enc
|
const enc = jweHeader.enc
|
||||||
let alg = jweHeader.alg
|
let alg = jweHeader.alg
|
||||||
|
|
||||||
if (alg === 'dir') {
|
if (alg === 'dir') {
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,9 @@ const PROCESS_RECIPIENT = Symbol('PROCESS_RECIPIENT')
|
||||||
|
|
||||||
class Sign {
|
class Sign {
|
||||||
#b64
|
#b64
|
||||||
|
|
||||||
#payload
|
#payload
|
||||||
|
|
||||||
#recipients
|
#recipients
|
||||||
|
|
||||||
constructor (payload) {
|
constructor (payload) {
|
||||||
|
|
|
||||||
10
package.json
10
package.json
|
|
@ -54,13 +54,13 @@
|
||||||
"asn1.js": "^5.1.1"
|
"asn1.js": "^5.1.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@commitlint/cli": "^8.0.0",
|
"@commitlint/cli": "^8.1.0",
|
||||||
"@commitlint/config-conventional": "^8.0.0",
|
"@commitlint/config-conventional": "^8.1.0",
|
||||||
"ava": "^2.1.0",
|
"ava": "^2.2.0",
|
||||||
"babel-eslint": "^10.0.2",
|
"babel-eslint": "^10.0.2",
|
||||||
"c8": "^5.0.1",
|
"c8": "^5.0.1",
|
||||||
"husky": "^2.4.1",
|
"husky": "^3.0.1",
|
||||||
"standard": "^12.0.1"
|
"standard": "^13.1.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12.0.0"
|
"node": ">=12.0.0"
|
||||||
|
|
|
||||||
12
test/fixtures/index.js
vendored
12
test/fixtures/index.js
vendored
|
|
@ -56,7 +56,7 @@ module.exports.JWK = {
|
||||||
d: '_i_1Ac5oVmbBxGvEvOEFHMpzMXKZi8voUx8I3Gl6IxY'
|
d: '_i_1Ac5oVmbBxGvEvOEFHMpzMXKZi8voUx8I3Gl6IxY'
|
||||||
},
|
},
|
||||||
|
|
||||||
'secp256k1': {
|
secp256k1: {
|
||||||
kty: 'EC',
|
kty: 'EC',
|
||||||
crv: 'secp256k1',
|
crv: 'secp256k1',
|
||||||
x: 'VRaLqtMjg_JRaDzkbfit7zonkOGDZ42qbZyljhqsg3U',
|
x: 'VRaLqtMjg_JRaDzkbfit7zonkOGDZ42qbZyljhqsg3U',
|
||||||
|
|
@ -96,19 +96,19 @@ module.exports.PEM = {
|
||||||
private: readFileSync(join(__dirname, 'rsa.key')),
|
private: readFileSync(join(__dirname, 'rsa.key')),
|
||||||
public: readFileSync(join(__dirname, 'rsa.pem'))
|
public: readFileSync(join(__dirname, 'rsa.pem'))
|
||||||
},
|
},
|
||||||
'Ed25519': {
|
Ed25519: {
|
||||||
private: readFileSync(join(__dirname, 'Ed25519.key')),
|
private: readFileSync(join(__dirname, 'Ed25519.key')),
|
||||||
public: readFileSync(join(__dirname, 'Ed25519.pem'))
|
public: readFileSync(join(__dirname, 'Ed25519.pem'))
|
||||||
},
|
},
|
||||||
'Ed448': {
|
Ed448: {
|
||||||
private: readFileSync(join(__dirname, 'Ed448.key')),
|
private: readFileSync(join(__dirname, 'Ed448.key')),
|
||||||
public: readFileSync(join(__dirname, 'Ed448.pem'))
|
public: readFileSync(join(__dirname, 'Ed448.pem'))
|
||||||
},
|
},
|
||||||
'X25519': {
|
X25519: {
|
||||||
private: readFileSync(join(__dirname, 'X25519.key')),
|
private: readFileSync(join(__dirname, 'X25519.key')),
|
||||||
public: readFileSync(join(__dirname, 'X25519.pem'))
|
public: readFileSync(join(__dirname, 'X25519.pem'))
|
||||||
},
|
},
|
||||||
'X448': {
|
X448: {
|
||||||
private: readFileSync(join(__dirname, 'X448.key')),
|
private: readFileSync(join(__dirname, 'X448.key')),
|
||||||
public: readFileSync(join(__dirname, 'X448.pem'))
|
public: readFileSync(join(__dirname, 'X448.pem'))
|
||||||
},
|
},
|
||||||
|
|
@ -116,7 +116,7 @@ module.exports.PEM = {
|
||||||
private: readFileSync(join(__dirname, 'P-256.key')),
|
private: readFileSync(join(__dirname, 'P-256.key')),
|
||||||
public: readFileSync(join(__dirname, 'P-256.pem'))
|
public: readFileSync(join(__dirname, 'P-256.pem'))
|
||||||
},
|
},
|
||||||
'secp256k1': {
|
secp256k1: {
|
||||||
private: readFileSync(join(__dirname, 'secp256k1.key')),
|
private: readFileSync(join(__dirname, 'secp256k1.key')),
|
||||||
public: readFileSync(join(__dirname, 'secp256k1.pem'))
|
public: readFileSync(join(__dirname, 'secp256k1.pem'))
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -66,11 +66,11 @@ test('JWE no alg/enc specified (multi recipient)', t => {
|
||||||
|
|
||||||
test('JWE no alg/enc specified (multi recipient) with per-recipient headers', t => {
|
test('JWE no alg/enc specified (multi recipient) with per-recipient headers', t => {
|
||||||
const encrypt = new JWE.Encrypt('foo')
|
const encrypt = new JWE.Encrypt('foo')
|
||||||
let k1 = generateSync('RSA', undefined, { kid: 'kid_1' })
|
const k1 = generateSync('RSA', undefined, { kid: 'kid_1' })
|
||||||
encrypt.recipient(k1, { kid: k1.kid })
|
encrypt.recipient(k1, { kid: k1.kid })
|
||||||
let k2 = generateSync('EC', undefined, { kid: 'kid_2' })
|
const k2 = generateSync('EC', undefined, { kid: 'kid_2' })
|
||||||
encrypt.recipient(k2, { kid: k2.kid })
|
encrypt.recipient(k2, { kid: k2.kid })
|
||||||
let k3 = generateSync('oct', 256, { kid: 'kid_3' })
|
const k3 = generateSync('oct', 256, { kid: 'kid_3' })
|
||||||
encrypt.recipient(k3, { kid: k3.kid })
|
encrypt.recipient(k3, { kid: k3.kid })
|
||||||
|
|
||||||
const jwe = encrypt.encrypt('general')
|
const jwe = encrypt.encrypt('general')
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ test('Unusable with unsupported curves', t => {
|
||||||
|
|
||||||
Object.entries({
|
Object.entries({
|
||||||
'P-256': ['ES256', 'rDd6H6t9-nJUoz72nTpz8tInvypVWhE2iQoPznj8ZY8'],
|
'P-256': ['ES256', 'rDd6H6t9-nJUoz72nTpz8tInvypVWhE2iQoPznj8ZY8'],
|
||||||
'secp256k1': ['ES256K', 'kWx_DzFzKNHUQz1FkNzj8KmSRingv9EQQzdVY3td21w'],
|
secp256k1: ['ES256K', 'kWx_DzFzKNHUQz1FkNzj8KmSRingv9EQQzdVY3td21w'],
|
||||||
'P-384': ['ES384', '5gebayAhpztJCs4Pxo-z1hhsN0upoyG2NAoKpiiH2b0'],
|
'P-384': ['ES384', '5gebayAhpztJCs4Pxo-z1hhsN0upoyG2NAoKpiiH2b0'],
|
||||||
'P-521': ['ES512', 'BQtkbSY3xgN4M2ZP3IHMLG7-Rp1L29teCMfNqgJHtTY']
|
'P-521': ['ES512', 'BQtkbSY3xgN4M2ZP3IHMLG7-Rp1L29teCMfNqgJHtTY']
|
||||||
}).forEach(([crv, [alg, kid]]) => {
|
}).forEach(([crv, [alg, kid]]) => {
|
||||||
|
|
|
||||||
|
|
@ -192,11 +192,11 @@ test('JWS no alg specified (multi recipient)', t => {
|
||||||
|
|
||||||
test('JWS no alg specified (multi recipient) with per-recipient protected headers', t => {
|
test('JWS no alg specified (multi recipient) with per-recipient protected headers', t => {
|
||||||
const sign = new JWS.Sign({})
|
const sign = new JWS.Sign({})
|
||||||
let k1 = generateSync('RSA', undefined, { kid: 'kid_1' })
|
const k1 = generateSync('RSA', undefined, { kid: 'kid_1' })
|
||||||
sign.recipient(k1, { kid: k1.kid })
|
sign.recipient(k1, { kid: k1.kid })
|
||||||
let k2 = generateSync('EC', undefined, { kid: 'kid_2' })
|
const k2 = generateSync('EC', undefined, { kid: 'kid_2' })
|
||||||
sign.recipient(k2, { kid: k2.kid })
|
sign.recipient(k2, { kid: k2.kid })
|
||||||
let k3 = generateSync('oct', undefined, { kid: 'kid_3' })
|
const k3 = generateSync('oct', undefined, { kid: 'kid_3' })
|
||||||
sign.recipient(k3, { kid: k3.kid })
|
sign.recipient(k3, { kid: k3.kid })
|
||||||
|
|
||||||
const jws = sign.sign('general')
|
const jws = sign.sign('general')
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue