jose 3.20.3 → 3.20.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/browser/jwe/flattened/decrypt.js +2 -2
  2. package/dist/browser/lib/decrypt_key_management.js +4 -1
  3. package/dist/node/cjs/jwe/compact/decrypt.js +1 -1
  4. package/dist/node/cjs/jwe/flattened/decrypt.js +17 -17
  5. package/dist/node/cjs/jwe/flattened/encrypt.js +13 -13
  6. package/dist/node/cjs/jwe/general/decrypt.js +2 -2
  7. package/dist/node/cjs/jwk/embedded.js +2 -2
  8. package/dist/node/cjs/jwk/from_key_like.js +1 -1
  9. package/dist/node/cjs/jwk/parse.js +1 -1
  10. package/dist/node/cjs/jwk/thumbprint.js +2 -2
  11. package/dist/node/cjs/jwks/remote.js +3 -3
  12. package/dist/node/cjs/jws/compact/verify.js +1 -1
  13. package/dist/node/cjs/jws/flattened/sign.js +8 -8
  14. package/dist/node/cjs/jws/flattened/verify.js +11 -11
  15. package/dist/node/cjs/jws/general/verify.js +2 -2
  16. package/dist/node/cjs/jwt/decrypt.js +2 -2
  17. package/dist/node/cjs/jwt/produce.js +4 -4
  18. package/dist/node/cjs/jwt/unsecured.js +1 -1
  19. package/dist/node/cjs/jwt/verify.js +2 -2
  20. package/dist/node/cjs/key/export.js +3 -3
  21. package/dist/node/cjs/key/import.js +10 -10
  22. package/dist/node/cjs/lib/cek.js +1 -1
  23. package/dist/node/cjs/lib/check_key_type.js +4 -4
  24. package/dist/node/cjs/lib/decrypt_key_management.js +16 -13
  25. package/dist/node/cjs/lib/encrypt_key_management.js +14 -14
  26. package/dist/node/cjs/lib/iv.js +1 -1
  27. package/dist/node/cjs/lib/jwt_claims_set.js +4 -4
  28. package/dist/node/cjs/runtime/aesgcmkw.js +4 -4
  29. package/dist/node/cjs/runtime/aeskw.js +11 -11
  30. package/dist/node/cjs/runtime/asn1.js +6 -6
  31. package/dist/node/cjs/runtime/cbc_tag.js +2 -2
  32. package/dist/node/cjs/runtime/check_cek_length.js +1 -1
  33. package/dist/node/cjs/runtime/ciphers.js +1 -1
  34. package/dist/node/cjs/runtime/decrypt.js +15 -15
  35. package/dist/node/cjs/runtime/digest.js +1 -1
  36. package/dist/node/cjs/runtime/ecdhes.js +18 -18
  37. package/dist/node/cjs/runtime/encrypt.js +14 -14
  38. package/dist/node/cjs/runtime/fetch_jwks.js +2 -2
  39. package/dist/node/cjs/runtime/generate.js +4 -4
  40. package/dist/node/cjs/runtime/get_named_curve.js +5 -5
  41. package/dist/node/cjs/runtime/get_sign_verify_key.js +5 -5
  42. package/dist/node/cjs/runtime/invalid_key_input.js +2 -2
  43. package/dist/node/cjs/runtime/is_key_like.js +1 -1
  44. package/dist/node/cjs/runtime/jwk_to_key.js +11 -11
  45. package/dist/node/cjs/runtime/key_to_jwk.js +27 -27
  46. package/dist/node/cjs/runtime/node_key.js +4 -4
  47. package/dist/node/cjs/runtime/pbes2kw.js +13 -13
  48. package/dist/node/cjs/runtime/rsaes.js +7 -7
  49. package/dist/node/cjs/runtime/secret_key.js +1 -1
  50. package/dist/node/cjs/runtime/sign.js +4 -4
  51. package/dist/node/cjs/runtime/verify.js +5 -5
  52. package/dist/node/cjs/runtime/zlib.js +2 -2
  53. package/dist/node/cjs/util/decode_protected_header.js +2 -2
  54. package/dist/node/cjs/util/generate_key_pair.js +1 -1
  55. package/dist/node/cjs/util/generate_secret.js +1 -1
  56. package/dist/node/esm/jwe/flattened/decrypt.js +2 -2
  57. package/dist/node/esm/lib/decrypt_key_management.js +4 -1
  58. package/dist/types/types.d.ts +1 -0
  59. package/package.json +1 -1
@@ -5,16 +5,16 @@ const is_key_like_js_1 = require("../runtime/is_key_like.js");
5
5
  const symmetricTypeCheck = (key) => {
6
6
  if (key instanceof Uint8Array)
7
7
  return;
8
- if (!(0, is_key_like_js_1.default)(key)) {
9
- throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types, 'Uint8Array'));
8
+ if (!is_key_like_js_1.default(key)) {
9
+ throw new TypeError(invalid_key_input_js_1.default(key, ...is_key_like_js_1.types, 'Uint8Array'));
10
10
  }
11
11
  if (key.type !== 'secret') {
12
12
  throw new TypeError(`${is_key_like_js_1.types.join(' or ')} instances for symmetric algorithms must be of type "secret"`);
13
13
  }
14
14
  };
15
15
  const asymmetricTypeCheck = (key, usage) => {
16
- if (!(0, is_key_like_js_1.default)(key)) {
17
- throw new TypeError((0, invalid_key_input_js_1.default)(key, ...is_key_like_js_1.types));
16
+ if (!is_key_like_js_1.default(key)) {
17
+ throw new TypeError(invalid_key_input_js_1.default(key, ...is_key_like_js_1.types));
18
18
  }
19
19
  if (key.type === 'secret') {
20
20
  throw new TypeError(`${is_key_like_js_1.types.join(' or ')} instances for asymmetric algorithms must not be of type "secret"`);
@@ -11,8 +11,8 @@ const cek_js_1 = require("../lib/cek.js");
11
11
  const import_js_1 = require("../key/import.js");
12
12
  const check_key_type_js_1 = require("./check_key_type.js");
13
13
  const is_object_js_1 = require("./is_object.js");
14
- async function decryptKeyManagement(alg, key, encryptedKey, joseHeader) {
15
- (0, check_key_type_js_1.default)(alg, key, 'decrypt');
14
+ async function decryptKeyManagement(alg, key, encryptedKey, joseHeader, options) {
15
+ check_key_type_js_1.default(alg, key, 'decrypt');
16
16
  switch (alg) {
17
17
  case 'dir': {
18
18
  if (encryptedKey !== undefined)
@@ -25,29 +25,29 @@ async function decryptKeyManagement(alg, key, encryptedKey, joseHeader) {
25
25
  case 'ECDH-ES+A128KW':
26
26
  case 'ECDH-ES+A192KW':
27
27
  case 'ECDH-ES+A256KW': {
28
- if (!(0, is_object_js_1.default)(joseHeader.epk))
28
+ if (!is_object_js_1.default(joseHeader.epk))
29
29
  throw new errors_js_1.JWEInvalid(`JOSE Header "epk" (Ephemeral Public Key) missing or invalid`);
30
30
  if (!ECDH.ecdhAllowed(key))
31
31
  throw new errors_js_1.JOSENotSupported('ECDH-ES with the provided key is not allowed or not supported by your javascript runtime');
32
- const epk = await (0, import_js_1.importJWK)(joseHeader.epk, alg);
32
+ const epk = await import_js_1.importJWK(joseHeader.epk, alg);
33
33
  let partyUInfo;
34
34
  let partyVInfo;
35
35
  if (joseHeader.apu !== undefined) {
36
36
  if (typeof joseHeader.apu !== 'string')
37
37
  throw new errors_js_1.JWEInvalid(`JOSE Header "apu" (Agreement PartyUInfo) invalid`);
38
- partyUInfo = (0, base64url_js_1.decode)(joseHeader.apu);
38
+ partyUInfo = base64url_js_1.decode(joseHeader.apu);
39
39
  }
40
40
  if (joseHeader.apv !== undefined) {
41
41
  if (typeof joseHeader.apv !== 'string')
42
42
  throw new errors_js_1.JWEInvalid(`JOSE Header "apv" (Agreement PartyVInfo) invalid`);
43
- partyVInfo = (0, base64url_js_1.decode)(joseHeader.apv);
43
+ partyVInfo = base64url_js_1.decode(joseHeader.apv);
44
44
  }
45
45
  const sharedSecret = await ECDH.deriveKey(epk, key, alg === 'ECDH-ES' ? joseHeader.enc : alg, parseInt(alg.substr(-5, 3), 10) || cek_js_1.bitLengths.get(joseHeader.enc), partyUInfo, partyVInfo);
46
46
  if (alg === 'ECDH-ES')
47
47
  return sharedSecret;
48
48
  if (encryptedKey === undefined)
49
49
  throw new errors_js_1.JWEInvalid('JWE Encrypted Key missing');
50
- return (0, aeskw_js_1.unwrap)(alg.substr(-6), sharedSecret, encryptedKey);
50
+ return aeskw_js_1.unwrap(alg.substr(-6), sharedSecret, encryptedKey);
51
51
  }
52
52
  case 'RSA1_5':
53
53
  case 'RSA-OAEP':
@@ -56,7 +56,7 @@ async function decryptKeyManagement(alg, key, encryptedKey, joseHeader) {
56
56
  case 'RSA-OAEP-512': {
57
57
  if (encryptedKey === undefined)
58
58
  throw new errors_js_1.JWEInvalid('JWE Encrypted Key missing');
59
- return (0, rsaes_js_1.decrypt)(alg, key, encryptedKey);
59
+ return rsaes_js_1.decrypt(alg, key, encryptedKey);
60
60
  }
61
61
  case 'PBES2-HS256+A128KW':
62
62
  case 'PBES2-HS384+A192KW':
@@ -65,16 +65,19 @@ async function decryptKeyManagement(alg, key, encryptedKey, joseHeader) {
65
65
  throw new errors_js_1.JWEInvalid('JWE Encrypted Key missing');
66
66
  if (typeof joseHeader.p2c !== 'number')
67
67
  throw new errors_js_1.JWEInvalid(`JOSE Header "p2c" (PBES2 Count) missing or invalid`);
68
+ const p2cLimit = (options === null || options === void 0 ? void 0 : options.maxPBES2Count) || 10000;
69
+ if (joseHeader.p2c > p2cLimit)
70
+ throw new errors_js_1.JWEInvalid(`JOSE Header "p2c" (PBES2 Count) out is of acceptable bounds`);
68
71
  if (typeof joseHeader.p2s !== 'string')
69
72
  throw new errors_js_1.JWEInvalid(`JOSE Header "p2s" (PBES2 Salt) missing or invalid`);
70
- return (0, pbes2kw_js_1.decrypt)(alg, key, encryptedKey, joseHeader.p2c, (0, base64url_js_1.decode)(joseHeader.p2s));
73
+ return pbes2kw_js_1.decrypt(alg, key, encryptedKey, joseHeader.p2c, base64url_js_1.decode(joseHeader.p2s));
71
74
  }
72
75
  case 'A128KW':
73
76
  case 'A192KW':
74
77
  case 'A256KW': {
75
78
  if (encryptedKey === undefined)
76
79
  throw new errors_js_1.JWEInvalid('JWE Encrypted Key missing');
77
- return (0, aeskw_js_1.unwrap)(alg, key, encryptedKey);
80
+ return aeskw_js_1.unwrap(alg, key, encryptedKey);
78
81
  }
79
82
  case 'A128GCMKW':
80
83
  case 'A192GCMKW':
@@ -85,9 +88,9 @@ async function decryptKeyManagement(alg, key, encryptedKey, joseHeader) {
85
88
  throw new errors_js_1.JWEInvalid(`JOSE Header "iv" (Initialization Vector) missing or invalid`);
86
89
  if (typeof joseHeader.tag !== 'string')
87
90
  throw new errors_js_1.JWEInvalid(`JOSE Header "tag" (Authentication Tag) missing or invalid`);
88
- const iv = (0, base64url_js_1.decode)(joseHeader.iv);
89
- const tag = (0, base64url_js_1.decode)(joseHeader.tag);
90
- return (0, aesgcmkw_js_1.unwrap)(alg, key, encryptedKey, iv, tag);
91
+ const iv = base64url_js_1.decode(joseHeader.iv);
92
+ const tag = base64url_js_1.decode(joseHeader.tag);
93
+ return aesgcmkw_js_1.unwrap(alg, key, encryptedKey, iv, tag);
91
94
  }
92
95
  default: {
93
96
  throw new errors_js_1.JOSENotSupported('Invalid or unsupported "alg" (JWE Algorithm) header value');
@@ -14,7 +14,7 @@ async function encryptKeyManagement(alg, enc, key, providedCek, providedParamete
14
14
  let encryptedKey;
15
15
  let parameters;
16
16
  let cek;
17
- (0, check_key_type_js_1.default)(alg, key, 'encrypt');
17
+ check_key_type_js_1.default(alg, key, 'encrypt');
18
18
  switch (alg) {
19
19
  case 'dir': {
20
20
  cek = key;
@@ -30,20 +30,20 @@ async function encryptKeyManagement(alg, enc, key, providedCek, providedParamete
30
30
  const { apu, apv } = providedParameters;
31
31
  let { epk: ephemeralKey } = providedParameters;
32
32
  ephemeralKey || (ephemeralKey = await ECDH.generateEpk(key));
33
- const { x, y, crv, kty } = await (0, export_js_1.exportJWK)(ephemeralKey);
33
+ const { x, y, crv, kty } = await export_js_1.exportJWK(ephemeralKey);
34
34
  const sharedSecret = await ECDH.deriveKey(key, ephemeralKey, alg === 'ECDH-ES' ? enc : alg, parseInt(alg.substr(-5, 3), 10) || cek_js_1.bitLengths.get(enc), apu, apv);
35
35
  parameters = { epk: { x, y, crv, kty } };
36
36
  if (apu)
37
- parameters.apu = (0, base64url_js_1.encode)(apu);
37
+ parameters.apu = base64url_js_1.encode(apu);
38
38
  if (apv)
39
- parameters.apv = (0, base64url_js_1.encode)(apv);
39
+ parameters.apv = base64url_js_1.encode(apv);
40
40
  if (alg === 'ECDH-ES') {
41
41
  cek = sharedSecret;
42
42
  break;
43
43
  }
44
- cek = providedCek || (0, cek_js_1.default)(enc);
44
+ cek = providedCek || cek_js_1.default(enc);
45
45
  const kwAlg = alg.substr(-6);
46
- encryptedKey = await (0, aeskw_js_1.wrap)(kwAlg, sharedSecret, cek);
46
+ encryptedKey = await aeskw_js_1.wrap(kwAlg, sharedSecret, cek);
47
47
  break;
48
48
  }
49
49
  case 'RSA1_5':
@@ -51,31 +51,31 @@ async function encryptKeyManagement(alg, enc, key, providedCek, providedParamete
51
51
  case 'RSA-OAEP-256':
52
52
  case 'RSA-OAEP-384':
53
53
  case 'RSA-OAEP-512': {
54
- cek = providedCek || (0, cek_js_1.default)(enc);
55
- encryptedKey = await (0, rsaes_js_1.encrypt)(alg, key, cek);
54
+ cek = providedCek || cek_js_1.default(enc);
55
+ encryptedKey = await rsaes_js_1.encrypt(alg, key, cek);
56
56
  break;
57
57
  }
58
58
  case 'PBES2-HS256+A128KW':
59
59
  case 'PBES2-HS384+A192KW':
60
60
  case 'PBES2-HS512+A256KW': {
61
- cek = providedCek || (0, cek_js_1.default)(enc);
61
+ cek = providedCek || cek_js_1.default(enc);
62
62
  const { p2c, p2s } = providedParameters;
63
- ({ encryptedKey, ...parameters } = await (0, pbes2kw_js_1.encrypt)(alg, key, cek, p2c, p2s));
63
+ ({ encryptedKey, ...parameters } = await pbes2kw_js_1.encrypt(alg, key, cek, p2c, p2s));
64
64
  break;
65
65
  }
66
66
  case 'A128KW':
67
67
  case 'A192KW':
68
68
  case 'A256KW': {
69
- cek = providedCek || (0, cek_js_1.default)(enc);
70
- encryptedKey = await (0, aeskw_js_1.wrap)(alg, key, cek);
69
+ cek = providedCek || cek_js_1.default(enc);
70
+ encryptedKey = await aeskw_js_1.wrap(alg, key, cek);
71
71
  break;
72
72
  }
73
73
  case 'A128GCMKW':
74
74
  case 'A192GCMKW':
75
75
  case 'A256GCMKW': {
76
- cek = providedCek || (0, cek_js_1.default)(enc);
76
+ cek = providedCek || cek_js_1.default(enc);
77
77
  const { iv } = providedParameters;
78
- ({ encryptedKey, ...parameters } = await (0, aesgcmkw_js_1.wrap)(alg, key, cek, iv));
78
+ ({ encryptedKey, ...parameters } = await aesgcmkw_js_1.wrap(alg, key, cek, iv));
79
79
  break;
80
80
  }
81
81
  default: {
@@ -20,6 +20,6 @@ const generateIv = (alg) => {
20
20
  if (!bitLength) {
21
21
  throw new errors_js_1.JOSENotSupported(`Unsupported JWE Algorithm: ${alg}`);
22
22
  }
23
- return (0, random_js_1.default)(new Uint8Array(bitLength >> 3));
23
+ return random_js_1.default(new Uint8Array(bitLength >> 3));
24
24
  };
25
25
  exports.default = generateIv;
@@ -28,7 +28,7 @@ exports.default = (protectedHeader, encodedPayload, options = {}) => {
28
28
  }
29
29
  catch {
30
30
  }
31
- if (!(0, is_object_js_1.default)(payload)) {
31
+ if (!is_object_js_1.default(payload)) {
32
32
  throw new errors_js_1.JWTInvalid('JWT Claims Set must be a top-level JSON object');
33
33
  }
34
34
  const { issuer } = options;
@@ -47,7 +47,7 @@ exports.default = (protectedHeader, encodedPayload, options = {}) => {
47
47
  let tolerance;
48
48
  switch (typeof options.clockTolerance) {
49
49
  case 'string':
50
- tolerance = (0, secs_js_1.default)(options.clockTolerance);
50
+ tolerance = secs_js_1.default(options.clockTolerance);
51
51
  break;
52
52
  case 'number':
53
53
  tolerance = options.clockTolerance;
@@ -59,7 +59,7 @@ exports.default = (protectedHeader, encodedPayload, options = {}) => {
59
59
  throw new TypeError('Invalid clockTolerance option type');
60
60
  }
61
61
  const { currentDate } = options;
62
- const now = (0, epoch_js_1.default)(currentDate || new Date());
62
+ const now = epoch_js_1.default(currentDate || new Date());
63
63
  if (payload.iat !== undefined || options.maxTokenAge) {
64
64
  if (typeof payload.iat !== 'number') {
65
65
  throw new errors_js_1.JWTClaimValidationFailed('"iat" claim must be a number', 'iat', 'invalid');
@@ -86,7 +86,7 @@ exports.default = (protectedHeader, encodedPayload, options = {}) => {
86
86
  }
87
87
  if (options.maxTokenAge) {
88
88
  const age = now - payload.iat;
89
- const max = typeof options.maxTokenAge === 'number' ? options.maxTokenAge : (0, secs_js_1.default)(options.maxTokenAge);
89
+ const max = typeof options.maxTokenAge === 'number' ? options.maxTokenAge : secs_js_1.default(options.maxTokenAge);
90
90
  if (age - tolerance > max) {
91
91
  throw new errors_js_1.JWTExpired('"iat" claim timestamp check failed (too far in the past)', 'iat', 'check_failed');
92
92
  }
@@ -7,13 +7,13 @@ const iv_js_1 = require("../lib/iv.js");
7
7
  const base64url_js_1 = require("./base64url.js");
8
8
  const wrap = async (alg, key, cek, iv) => {
9
9
  const jweAlgorithm = alg.substr(0, 7);
10
- iv || (iv = (0, iv_js_1.default)(jweAlgorithm));
11
- const { ciphertext: encryptedKey, tag } = await (0, encrypt_js_1.default)(jweAlgorithm, cek, key, iv, new Uint8Array(0));
12
- return { encryptedKey, iv: (0, base64url_js_1.encode)(iv), tag: (0, base64url_js_1.encode)(tag) };
10
+ iv || (iv = iv_js_1.default(jweAlgorithm));
11
+ const { ciphertext: encryptedKey, tag } = await encrypt_js_1.default(jweAlgorithm, cek, key, iv, new Uint8Array(0));
12
+ return { encryptedKey, iv: base64url_js_1.encode(iv), tag: base64url_js_1.encode(tag) };
13
13
  };
14
14
  exports.wrap = wrap;
15
15
  const unwrap = async (alg, key, encryptedKey, iv, tag) => {
16
16
  const jweAlgorithm = alg.substr(0, 7);
17
- return (0, decrypt_js_1.default)(jweAlgorithm, key, encryptedKey, iv, tag, new Uint8Array(0));
17
+ return decrypt_js_1.default(jweAlgorithm, key, encryptedKey, iv, tag, new Uint8Array(0));
18
18
  };
19
19
  exports.unwrap = unwrap;
@@ -15,38 +15,38 @@ function checkKeySize(key, alg) {
15
15
  }
16
16
  }
17
17
  function ensureKeyObject(key, alg, usage) {
18
- if ((0, is_key_object_js_1.default)(key)) {
18
+ if (is_key_object_js_1.default(key)) {
19
19
  return key;
20
20
  }
21
21
  if (key instanceof Uint8Array) {
22
- return (0, secret_key_js_1.default)(key);
22
+ return secret_key_js_1.default(key);
23
23
  }
24
- if ((0, webcrypto_js_1.isCryptoKey)(key)) {
25
- return (0, webcrypto_js_1.getKeyObject)(key, alg, new Set([usage]));
24
+ if (webcrypto_js_1.isCryptoKey(key)) {
25
+ return webcrypto_js_1.getKeyObject(key, alg, new Set([usage]));
26
26
  }
27
- throw new TypeError((0, invalid_key_input_js_1.default)(key, 'KeyObject', 'CryptoKey', 'Uint8Array'));
27
+ throw new TypeError(invalid_key_input_js_1.default(key, 'KeyObject', 'CryptoKey', 'Uint8Array'));
28
28
  }
29
29
  const wrap = async (alg, key, cek) => {
30
30
  const size = parseInt(alg.substr(1, 3), 10);
31
31
  const algorithm = `aes${size}-wrap`;
32
- if (!(0, ciphers_js_1.default)(algorithm)) {
32
+ if (!ciphers_js_1.default(algorithm)) {
33
33
  throw new errors_js_1.JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);
34
34
  }
35
35
  const keyObject = ensureKeyObject(key, alg, 'wrapKey');
36
36
  checkKeySize(keyObject, alg);
37
- const cipher = (0, crypto_1.createCipheriv)(algorithm, keyObject, Buffer.alloc(8, 0xa6));
38
- return (0, buffer_utils_js_1.concat)(cipher.update(cek), cipher.final());
37
+ const cipher = crypto_1.createCipheriv(algorithm, keyObject, Buffer.alloc(8, 0xa6));
38
+ return buffer_utils_js_1.concat(cipher.update(cek), cipher.final());
39
39
  };
40
40
  exports.wrap = wrap;
41
41
  const unwrap = async (alg, key, encryptedKey) => {
42
42
  const size = parseInt(alg.substr(1, 3), 10);
43
43
  const algorithm = `aes${size}-wrap`;
44
- if (!(0, ciphers_js_1.default)(algorithm)) {
44
+ if (!ciphers_js_1.default(algorithm)) {
45
45
  throw new errors_js_1.JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);
46
46
  }
47
47
  const keyObject = ensureKeyObject(key, alg, 'unwrapKey');
48
48
  checkKeySize(keyObject, alg);
49
- const cipher = (0, crypto_1.createDecipheriv)(algorithm, keyObject, Buffer.alloc(8, 0xa6));
50
- return (0, buffer_utils_js_1.concat)(cipher.update(encryptedKey), cipher.final());
49
+ const cipher = crypto_1.createDecipheriv(algorithm, keyObject, Buffer.alloc(8, 0xa6));
50
+ return buffer_utils_js_1.concat(cipher.update(encryptedKey), cipher.final());
51
51
  };
52
52
  exports.unwrap = unwrap;
@@ -7,17 +7,17 @@ const is_key_object_js_1 = require("./is_key_object.js");
7
7
  const invalid_key_input_js_1 = require("./invalid_key_input.js");
8
8
  const genericExport = (keyType, keyFormat, key) => {
9
9
  let keyObject;
10
- if ((0, webcrypto_js_1.isCryptoKey)(key)) {
10
+ if (webcrypto_js_1.isCryptoKey(key)) {
11
11
  if (!key.extractable) {
12
12
  throw new TypeError('CryptoKey is not extractable');
13
13
  }
14
- keyObject = (0, webcrypto_js_1.getKeyObject)(key);
14
+ keyObject = webcrypto_js_1.getKeyObject(key);
15
15
  }
16
- else if ((0, is_key_object_js_1.default)(key)) {
16
+ else if (is_key_object_js_1.default(key)) {
17
17
  keyObject = key;
18
18
  }
19
19
  else {
20
- throw new TypeError((0, invalid_key_input_js_1.default)(key, 'KeyObject', 'CryptoKey'));
20
+ throw new TypeError(invalid_key_input_js_1.default(key, 'KeyObject', 'CryptoKey'));
21
21
  }
22
22
  if (keyObject.type !== keyType) {
23
23
  throw new TypeError(`key is not a ${keyType} key`);
@@ -32,13 +32,13 @@ const toPKCS8 = (key) => {
32
32
  return genericExport('private', 'pkcs8', key);
33
33
  };
34
34
  exports.toPKCS8 = toPKCS8;
35
- const fromPKCS8 = (pem) => (0, crypto_1.createPrivateKey)({
35
+ const fromPKCS8 = (pem) => crypto_1.createPrivateKey({
36
36
  key: Buffer.from(pem.replace(/(?:-----(?:BEGIN|END) PRIVATE KEY-----|\s)/g, ''), 'base64'),
37
37
  type: 'pkcs8',
38
38
  format: 'der',
39
39
  });
40
40
  exports.fromPKCS8 = fromPKCS8;
41
- const fromSPKI = (pem) => (0, crypto_1.createPublicKey)({
41
+ const fromSPKI = (pem) => crypto_1.createPublicKey({
42
42
  key: Buffer.from(pem.replace(/(?:-----(?:BEGIN|END) PUBLIC KEY-----|\s)/g, ''), 'base64'),
43
43
  type: 'spki',
44
44
  format: 'der',
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const crypto_1 = require("crypto");
4
4
  const buffer_utils_js_1 = require("../lib/buffer_utils.js");
5
5
  function cbcTag(aad, iv, ciphertext, macSize, macKey, keySize) {
6
- const macData = (0, buffer_utils_js_1.concat)(aad, iv, ciphertext, (0, buffer_utils_js_1.uint64be)(aad.length << 3));
7
- const hmac = (0, crypto_1.createHmac)(`sha${macSize}`, macKey);
6
+ const macData = buffer_utils_js_1.concat(aad, iv, ciphertext, buffer_utils_js_1.uint64be(aad.length << 3));
7
+ const hmac = crypto_1.createHmac(`sha${macSize}`, macKey);
8
8
  hmac.update(macData);
9
9
  return hmac.digest().slice(0, keySize >> 3);
10
10
  }
@@ -24,7 +24,7 @@ const checkCekLength = (enc, cek) => {
24
24
  }
25
25
  return;
26
26
  }
27
- if ((0, is_key_object_js_1.default)(cek) && cek.type === 'secret') {
27
+ if (is_key_object_js_1.default(cek) && cek.type === 'secret') {
28
28
  if (cek.symmetricKeySize << 3 !== expected) {
29
29
  throw new errors_js_1.JWEInvalid('Invalid Content Encryption Key length');
30
30
  }
@@ -3,6 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const crypto_1 = require("crypto");
4
4
  let ciphers;
5
5
  exports.default = (algorithm) => {
6
- ciphers || (ciphers = new Set((0, crypto_1.getCiphers)()));
6
+ ciphers || (ciphers = new Set(crypto_1.getCiphers()));
7
7
  return ciphers.has(algorithm);
8
8
  };
@@ -13,20 +13,20 @@ const invalid_key_input_js_1 = require("./invalid_key_input.js");
13
13
  const ciphers_js_1 = require("./ciphers.js");
14
14
  async function cbcDecrypt(enc, cek, ciphertext, iv, tag, aad) {
15
15
  const keySize = parseInt(enc.substr(1, 3), 10);
16
- if ((0, is_key_object_js_1.default)(cek)) {
16
+ if (is_key_object_js_1.default(cek)) {
17
17
  cek = cek.export();
18
18
  }
19
19
  const encKey = cek.subarray(keySize >> 3);
20
20
  const macKey = cek.subarray(0, keySize >> 3);
21
21
  const macSize = parseInt(enc.substr(-3), 10);
22
22
  const algorithm = `aes-${keySize}-cbc`;
23
- if (!(0, ciphers_js_1.default)(algorithm)) {
23
+ if (!ciphers_js_1.default(algorithm)) {
24
24
  throw new errors_js_1.JOSENotSupported(`alg ${enc} is not supported by your javascript runtime`);
25
25
  }
26
- const expectedTag = (0, cbc_tag_js_1.default)(aad, iv, ciphertext, macSize, macKey, keySize);
26
+ const expectedTag = cbc_tag_js_1.default(aad, iv, ciphertext, macSize, macKey, keySize);
27
27
  let macCheckPassed;
28
28
  try {
29
- macCheckPassed = (0, timing_safe_equal_js_1.default)(tag, expectedTag);
29
+ macCheckPassed = timing_safe_equal_js_1.default(tag, expectedTag);
30
30
  }
31
31
  catch {
32
32
  }
@@ -35,8 +35,8 @@ async function cbcDecrypt(enc, cek, ciphertext, iv, tag, aad) {
35
35
  }
36
36
  let plaintext;
37
37
  try {
38
- const cipher = (0, crypto_1.createDecipheriv)(algorithm, encKey, iv);
39
- plaintext = (0, buffer_utils_js_1.concat)(cipher.update(ciphertext), cipher.final());
38
+ const cipher = crypto_1.createDecipheriv(algorithm, encKey, iv);
39
+ plaintext = buffer_utils_js_1.concat(cipher.update(ciphertext), cipher.final());
40
40
  }
41
41
  catch {
42
42
  }
@@ -48,16 +48,16 @@ async function cbcDecrypt(enc, cek, ciphertext, iv, tag, aad) {
48
48
  async function gcmDecrypt(enc, cek, ciphertext, iv, tag, aad) {
49
49
  const keySize = parseInt(enc.substr(1, 3), 10);
50
50
  const algorithm = `aes-${keySize}-gcm`;
51
- if (!(0, ciphers_js_1.default)(algorithm)) {
51
+ if (!ciphers_js_1.default(algorithm)) {
52
52
  throw new errors_js_1.JOSENotSupported(`alg ${enc} is not supported by your javascript runtime`);
53
53
  }
54
54
  try {
55
- const cipher = (0, crypto_1.createDecipheriv)(algorithm, cek, iv, { authTagLength: 16 });
55
+ const cipher = crypto_1.createDecipheriv(algorithm, cek, iv, { authTagLength: 16 });
56
56
  cipher.setAuthTag(tag);
57
57
  if (aad.byteLength) {
58
58
  cipher.setAAD(aad, { plaintextLength: ciphertext.length });
59
59
  }
60
- return (0, buffer_utils_js_1.concat)(cipher.update(ciphertext), cipher.final());
60
+ return buffer_utils_js_1.concat(cipher.update(ciphertext), cipher.final());
61
61
  }
62
62
  catch {
63
63
  throw new errors_js_1.JWEDecryptionFailed();
@@ -65,17 +65,17 @@ async function gcmDecrypt(enc, cek, ciphertext, iv, tag, aad) {
65
65
  }
66
66
  const decrypt = async (enc, cek, ciphertext, iv, tag, aad) => {
67
67
  let key;
68
- if ((0, webcrypto_js_1.isCryptoKey)(cek)) {
69
- key = (0, webcrypto_js_1.getKeyObject)(cek, enc, new Set(['decrypt']));
68
+ if (webcrypto_js_1.isCryptoKey(cek)) {
69
+ key = webcrypto_js_1.getKeyObject(cek, enc, new Set(['decrypt']));
70
70
  }
71
- else if (cek instanceof Uint8Array || (0, is_key_object_js_1.default)(cek)) {
71
+ else if (cek instanceof Uint8Array || is_key_object_js_1.default(cek)) {
72
72
  key = cek;
73
73
  }
74
74
  else {
75
- throw new TypeError((0, invalid_key_input_js_1.default)(cek, 'KeyObject', 'CryptoKey', 'Uint8Array'));
75
+ throw new TypeError(invalid_key_input_js_1.default(cek, 'KeyObject', 'CryptoKey', 'Uint8Array'));
76
76
  }
77
- (0, check_cek_length_js_1.default)(enc, key);
78
- (0, check_iv_length_js_1.default)(enc, iv);
77
+ check_cek_length_js_1.default(enc, key);
78
+ check_iv_length_js_1.default(enc, iv);
79
79
  switch (enc) {
80
80
  case 'A128CBC-HS256':
81
81
  case 'A192CBC-HS384':
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const crypto_1 = require("crypto");
4
- const digest = (algorithm, data) => (0, crypto_1.createHash)(algorithm).update(data).digest();
4
+ const digest = (algorithm, data) => crypto_1.createHash(algorithm).update(data).digest();
5
5
  exports.default = digest;
@@ -10,43 +10,43 @@ const errors_js_1 = require("../util/errors.js");
10
10
  const webcrypto_js_1 = require("./webcrypto.js");
11
11
  const is_key_object_js_1 = require("./is_key_object.js");
12
12
  const invalid_key_input_js_1 = require("./invalid_key_input.js");
13
- const generateKeyPair = (0, util_1.promisify)(crypto_1.generateKeyPair);
13
+ const generateKeyPair = util_1.promisify(crypto_1.generateKeyPair);
14
14
  const deriveKey = async (publicKee, privateKee, algorithm, keyLength, apu = new Uint8Array(0), apv = new Uint8Array(0)) => {
15
15
  let publicKey;
16
- if ((0, webcrypto_js_1.isCryptoKey)(publicKee)) {
17
- publicKey = (0, webcrypto_js_1.getKeyObject)(publicKee, 'ECDH-ES');
16
+ if (webcrypto_js_1.isCryptoKey(publicKee)) {
17
+ publicKey = webcrypto_js_1.getKeyObject(publicKee, 'ECDH-ES');
18
18
  }
19
- else if ((0, is_key_object_js_1.default)(publicKee)) {
19
+ else if (is_key_object_js_1.default(publicKee)) {
20
20
  publicKey = publicKee;
21
21
  }
22
22
  else {
23
- throw new TypeError((0, invalid_key_input_js_1.default)(publicKee, 'KeyObject', 'CryptoKey'));
23
+ throw new TypeError(invalid_key_input_js_1.default(publicKee, 'KeyObject', 'CryptoKey'));
24
24
  }
25
25
  let privateKey;
26
- if ((0, webcrypto_js_1.isCryptoKey)(privateKee)) {
27
- privateKey = (0, webcrypto_js_1.getKeyObject)(privateKee, 'ECDH-ES', new Set(['deriveBits', 'deriveKey']));
26
+ if (webcrypto_js_1.isCryptoKey(privateKee)) {
27
+ privateKey = webcrypto_js_1.getKeyObject(privateKee, 'ECDH-ES', new Set(['deriveBits', 'deriveKey']));
28
28
  }
29
- else if ((0, is_key_object_js_1.default)(privateKee)) {
29
+ else if (is_key_object_js_1.default(privateKee)) {
30
30
  privateKey = privateKee;
31
31
  }
32
32
  else {
33
- throw new TypeError((0, invalid_key_input_js_1.default)(privateKee, 'KeyObject', 'CryptoKey'));
33
+ throw new TypeError(invalid_key_input_js_1.default(privateKee, 'KeyObject', 'CryptoKey'));
34
34
  }
35
- const value = (0, buffer_utils_js_1.concat)((0, buffer_utils_js_1.lengthAndInput)(buffer_utils_js_1.encoder.encode(algorithm)), (0, buffer_utils_js_1.lengthAndInput)(apu), (0, buffer_utils_js_1.lengthAndInput)(apv), (0, buffer_utils_js_1.uint32be)(keyLength));
36
- const sharedSecret = (0, crypto_1.diffieHellman)({ privateKey, publicKey });
37
- return (0, buffer_utils_js_1.concatKdf)(digest_js_1.default, sharedSecret, keyLength, value);
35
+ const value = buffer_utils_js_1.concat(buffer_utils_js_1.lengthAndInput(buffer_utils_js_1.encoder.encode(algorithm)), buffer_utils_js_1.lengthAndInput(apu), buffer_utils_js_1.lengthAndInput(apv), buffer_utils_js_1.uint32be(keyLength));
36
+ const sharedSecret = crypto_1.diffieHellman({ privateKey, publicKey });
37
+ return buffer_utils_js_1.concatKdf(digest_js_1.default, sharedSecret, keyLength, value);
38
38
  };
39
39
  exports.deriveKey = deriveKey;
40
40
  const generateEpk = async (kee) => {
41
41
  let key;
42
- if ((0, webcrypto_js_1.isCryptoKey)(kee)) {
43
- key = (0, webcrypto_js_1.getKeyObject)(kee);
42
+ if (webcrypto_js_1.isCryptoKey(kee)) {
43
+ key = webcrypto_js_1.getKeyObject(kee);
44
44
  }
45
- else if ((0, is_key_object_js_1.default)(kee)) {
45
+ else if (is_key_object_js_1.default(kee)) {
46
46
  key = kee;
47
47
  }
48
48
  else {
49
- throw new TypeError((0, invalid_key_input_js_1.default)(kee, 'KeyObject', 'CryptoKey'));
49
+ throw new TypeError(invalid_key_input_js_1.default(kee, 'KeyObject', 'CryptoKey'));
50
50
  }
51
51
  switch (key.asymmetricKeyType) {
52
52
  case 'x25519':
@@ -55,7 +55,7 @@ const generateEpk = async (kee) => {
55
55
  return (await generateKeyPair('x448')).privateKey;
56
56
  }
57
57
  case 'ec': {
58
- const namedCurve = (0, get_named_curve_js_1.default)(key);
58
+ const namedCurve = get_named_curve_js_1.default(key);
59
59
  return (await generateKeyPair('ec', { namedCurve })).privateKey;
60
60
  }
61
61
  default:
@@ -63,5 +63,5 @@ const generateEpk = async (kee) => {
63
63
  }
64
64
  };
65
65
  exports.generateEpk = generateEpk;
66
- const ecdhAllowed = (key) => ['P-256', 'P-384', 'P-521', 'X25519', 'X448'].includes((0, get_named_curve_js_1.default)(key));
66
+ const ecdhAllowed = (key) => ['P-256', 'P-384', 'P-521', 'X25519', 'X448'].includes(get_named_curve_js_1.default(key));
67
67
  exports.ecdhAllowed = ecdhAllowed;
@@ -12,48 +12,48 @@ const errors_js_1 = require("../util/errors.js");
12
12
  const ciphers_js_1 = require("./ciphers.js");
13
13
  async function cbcEncrypt(enc, plaintext, cek, iv, aad) {
14
14
  const keySize = parseInt(enc.substr(1, 3), 10);
15
- if ((0, is_key_object_js_1.default)(cek)) {
15
+ if (is_key_object_js_1.default(cek)) {
16
16
  cek = cek.export();
17
17
  }
18
18
  const encKey = cek.subarray(keySize >> 3);
19
19
  const macKey = cek.subarray(0, keySize >> 3);
20
20
  const algorithm = `aes-${keySize}-cbc`;
21
- if (!(0, ciphers_js_1.default)(algorithm)) {
21
+ if (!ciphers_js_1.default(algorithm)) {
22
22
  throw new errors_js_1.JOSENotSupported(`alg ${enc} is not supported by your javascript runtime`);
23
23
  }
24
- const cipher = (0, crypto_1.createCipheriv)(algorithm, encKey, iv);
25
- const ciphertext = (0, buffer_utils_js_1.concat)(cipher.update(plaintext), cipher.final());
24
+ const cipher = crypto_1.createCipheriv(algorithm, encKey, iv);
25
+ const ciphertext = buffer_utils_js_1.concat(cipher.update(plaintext), cipher.final());
26
26
  const macSize = parseInt(enc.substr(-3), 10);
27
- const tag = (0, cbc_tag_js_1.default)(aad, iv, ciphertext, macSize, macKey, keySize);
27
+ const tag = cbc_tag_js_1.default(aad, iv, ciphertext, macSize, macKey, keySize);
28
28
  return { ciphertext, tag };
29
29
  }
30
30
  async function gcmEncrypt(enc, plaintext, cek, iv, aad) {
31
31
  const keySize = parseInt(enc.substr(1, 3), 10);
32
32
  const algorithm = `aes-${keySize}-gcm`;
33
- if (!(0, ciphers_js_1.default)(algorithm)) {
33
+ if (!ciphers_js_1.default(algorithm)) {
34
34
  throw new errors_js_1.JOSENotSupported(`alg ${enc} is not supported by your javascript runtime`);
35
35
  }
36
- const cipher = (0, crypto_1.createCipheriv)(algorithm, cek, iv, { authTagLength: 16 });
36
+ const cipher = crypto_1.createCipheriv(algorithm, cek, iv, { authTagLength: 16 });
37
37
  if (aad.byteLength) {
38
38
  cipher.setAAD(aad, { plaintextLength: plaintext.length });
39
39
  }
40
- const ciphertext = (0, buffer_utils_js_1.concat)(cipher.update(plaintext), cipher.final());
40
+ const ciphertext = buffer_utils_js_1.concat(cipher.update(plaintext), cipher.final());
41
41
  const tag = cipher.getAuthTag();
42
42
  return { ciphertext, tag };
43
43
  }
44
44
  const encrypt = async (enc, plaintext, cek, iv, aad) => {
45
45
  let key;
46
- if ((0, webcrypto_js_1.isCryptoKey)(cek)) {
47
- key = (0, webcrypto_js_1.getKeyObject)(cek, enc, new Set(['encrypt']));
46
+ if (webcrypto_js_1.isCryptoKey(cek)) {
47
+ key = webcrypto_js_1.getKeyObject(cek, enc, new Set(['encrypt']));
48
48
  }
49
- else if (cek instanceof Uint8Array || (0, is_key_object_js_1.default)(cek)) {
49
+ else if (cek instanceof Uint8Array || is_key_object_js_1.default(cek)) {
50
50
  key = cek;
51
51
  }
52
52
  else {
53
- throw new TypeError((0, invalid_key_input_js_1.default)(cek, 'KeyObject', 'CryptoKey', 'Uint8Array'));
53
+ throw new TypeError(invalid_key_input_js_1.default(cek, 'KeyObject', 'CryptoKey', 'Uint8Array'));
54
54
  }
55
- (0, check_cek_length_js_1.default)(enc, key);
56
- (0, check_iv_length_js_1.default)(enc, iv);
55
+ check_cek_length_js_1.default(enc, key);
56
+ check_iv_length_js_1.default(enc, iv);
57
57
  switch (enc) {
58
58
  case 'A128CBC-HS256':
59
59
  case 'A192CBC-HS384':
@@ -18,7 +18,7 @@ const fetchJwks = async (url, timeout, options) => {
18
18
  agent,
19
19
  timeout,
20
20
  });
21
- const [response] = (await Promise.race([(0, events_1.once)(req, 'response'), (0, events_1.once)(req, 'timeout')]));
21
+ const [response] = (await Promise.race([events_1.once(req, 'response'), events_1.once(req, 'timeout')]));
22
22
  if (!response) {
23
23
  req.destroy();
24
24
  throw new errors_js_1.JWKSTimeout();
@@ -31,7 +31,7 @@ const fetchJwks = async (url, timeout, options) => {
31
31
  parts.push(part);
32
32
  }
33
33
  try {
34
- return JSON.parse(buffer_utils_js_1.decoder.decode((0, buffer_utils_js_1.concat)(...parts)));
34
+ return JSON.parse(buffer_utils_js_1.decoder.decode(buffer_utils_js_1.concat(...parts)));
35
35
  }
36
36
  catch {
37
37
  throw new errors_js_1.JOSEError('Failed to parse the JSON Web Key Set HTTP response as JSON');