jose 6.2.10 → 6.2.11

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 (87) hide show
  1. package/dist/types/jwe/compact/decrypt.d.ts +7 -16
  2. package/dist/types/jwe/compact/encrypt.d.ts +6 -17
  3. package/dist/types/jwe/flattened/decrypt.d.ts +7 -16
  4. package/dist/types/jwe/flattened/encrypt.d.ts +11 -34
  5. package/dist/types/jwe/general/decrypt.d.ts +7 -16
  6. package/dist/types/jwe/general/encrypt.d.ts +15 -35
  7. package/dist/types/jwk/embedded.d.ts +3 -8
  8. package/dist/types/jwk/thumbprint.d.ts +5 -5
  9. package/dist/types/jwks/local.d.ts +6 -10
  10. package/dist/types/jwks/remote.d.ts +13 -24
  11. package/dist/types/jws/compact/sign.d.ts +5 -10
  12. package/dist/types/jws/compact/verify.d.ts +9 -18
  13. package/dist/types/jws/flattened/sign.d.ts +7 -16
  14. package/dist/types/jws/flattened/verify.d.ts +9 -18
  15. package/dist/types/jws/general/sign.d.ts +11 -21
  16. package/dist/types/jws/general/verify.d.ts +9 -18
  17. package/dist/types/jwt/decrypt.d.ts +10 -20
  18. package/dist/types/jwt/encrypt.d.ts +6 -13
  19. package/dist/types/jwt/sign.d.ts +5 -6
  20. package/dist/types/jwt/unsecured.d.ts +9 -14
  21. package/dist/types/jwt/verify.d.ts +9 -19
  22. package/dist/types/key/export.d.ts +4 -4
  23. package/dist/types/key/generate_key_pair.d.ts +6 -8
  24. package/dist/types/key/generate_secret.d.ts +4 -11
  25. package/dist/types/key/import.d.ts +10 -17
  26. package/dist/types/types.d.ts +44 -84
  27. package/dist/types/util/base64url.d.ts +2 -2
  28. package/dist/types/util/decode_jwt.d.ts +3 -10
  29. package/dist/types/util/decode_protected_header.d.ts +4 -4
  30. package/dist/types/util/errors.d.ts +26 -53
  31. package/dist/webapi/index.js +70 -32
  32. package/dist/webapi/jwe/compact/decrypt.js +7 -8
  33. package/dist/webapi/jwe/compact/encrypt.js +42 -48
  34. package/dist/webapi/jwe/flattened/decrypt.js +14 -14
  35. package/dist/webapi/jwe/flattened/encrypt.js +53 -64
  36. package/dist/webapi/jwe/general/decrypt.js +38 -49
  37. package/dist/webapi/jwe/general/encrypt.js +121 -169
  38. package/dist/webapi/jwk/embedded.js +30 -32
  39. package/dist/webapi/jwk/thumbprint.js +54 -70
  40. package/dist/webapi/jwks/local.js +47 -64
  41. package/dist/webapi/jwks/remote.js +88 -136
  42. package/dist/webapi/jws/compact/sign.js +21 -21
  43. package/dist/webapi/jws/compact/verify.js +7 -8
  44. package/dist/webapi/jws/flattened/sign.js +29 -31
  45. package/dist/webapi/jws/flattened/verify.js +21 -24
  46. package/dist/webapi/jws/general/sign.js +61 -72
  47. package/dist/webapi/jws/general/verify.js +45 -69
  48. package/dist/webapi/jwt/decrypt.js +13 -20
  49. package/dist/webapi/jwt/encrypt.js +57 -70
  50. package/dist/webapi/jwt/sign.js +17 -16
  51. package/dist/webapi/jwt/unsecured.js +32 -40
  52. package/dist/webapi/jwt/verify.js +12 -14
  53. package/dist/webapi/key/export.js +32 -37
  54. package/dist/webapi/key/generate_key_pair.js +40 -48
  55. package/dist/webapi/key/generate_secret.js +35 -40
  56. package/dist/webapi/key/import.js +52 -56
  57. package/dist/webapi/lib/asn1.js +130 -169
  58. package/dist/webapi/lib/base64.js +18 -20
  59. package/dist/webapi/lib/buffer_utils.js +34 -38
  60. package/dist/webapi/lib/content_encryption.js +79 -115
  61. package/dist/webapi/lib/crypto_key.js +24 -25
  62. package/dist/webapi/lib/deflate.js +45 -47
  63. package/dist/webapi/lib/helpers.js +40 -37
  64. package/dist/webapi/lib/invalid_key_input.js +10 -24
  65. package/dist/webapi/lib/is_key_like.js +17 -15
  66. package/dist/webapi/lib/jwe_algorithms.js +106 -93
  67. package/dist/webapi/lib/jwe_decrypt.js +207 -230
  68. package/dist/webapi/lib/jwe_encrypt.js +104 -138
  69. package/dist/webapi/lib/jwk_metadata.js +17 -18
  70. package/dist/webapi/lib/jwk_to_key.js +9 -16
  71. package/dist/webapi/lib/jws_algorithms.js +62 -61
  72. package/dist/webapi/lib/jws_sign.js +50 -75
  73. package/dist/webapi/lib/jws_verify.js +80 -125
  74. package/dist/webapi/lib/jwt_claims_set.js +123 -209
  75. package/dist/webapi/lib/key.js +84 -136
  76. package/dist/webapi/lib/key_algorithm.js +13 -8
  77. package/dist/webapi/lib/key_descriptor.js +8 -6
  78. package/dist/webapi/lib/key_management.js +200 -231
  79. package/dist/webapi/lib/key_options.js +7 -5
  80. package/dist/webapi/lib/options.js +55 -68
  81. package/dist/webapi/lib/signing.js +18 -22
  82. package/dist/webapi/lib/type_checks.js +26 -29
  83. package/dist/webapi/util/base64url.js +26 -35
  84. package/dist/webapi/util/decode_jwt.js +32 -31
  85. package/dist/webapi/util/decode_protected_header.js +18 -23
  86. package/dist/webapi/util/errors.js +94 -84
  87. package/package.json +17 -81
@@ -1,107 +1,120 @@
1
- import { JOSENotSupported } from '../util/errors.js';
2
- import { table } from './key_descriptor.js';
1
+ import { JOSENotSupported } from "../util/errors.js";
2
+ import { table } from "./key_descriptor.js";
3
3
  const wrap = [
4
- ['encrypt', 'wrapKey'],
5
- ['decrypt', 'unwrapKey'],
6
- ];
7
- const derive = [[], ['deriveBits']];
8
- const none = [[], []];
4
+ ["encrypt", "wrapKey"],
5
+ ["decrypt", "unwrapKey"]
6
+ ], derive = [[], ["deriveBits"]], none = [[], []];
9
7
  function rsaes(bits) {
10
- return {
11
- kty: ['RSA'],
12
- subtle: { name: 'RSA-OAEP', hash: `SHA-${bits}` },
13
- usages: wrap,
14
- ops: ['wrapKey', 'unwrapKey'],
15
- };
8
+ return {
9
+ kty: ["RSA"],
10
+ mode: "key-encryption",
11
+ subtle: { name: "RSA-OAEP", hash: `SHA-${bits}` },
12
+ usages: wrap,
13
+ ops: ["wrapKey", "unwrapKey"]
14
+ };
16
15
  }
17
- function ecdh() {
18
- return {
19
- kty: ['EC', 'OKP'],
20
- subtle: { name: 'ECDH' },
21
- resolve: ({ kty, crv, asymmetricKeyType }) => {
22
- if (crv === 'X25519' || asymmetricKeyType === 'x25519') {
23
- return { name: 'X25519' };
24
- }
25
- if (kty === 'OKP') {
26
- throw new JOSENotSupported('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');
27
- }
28
- return { name: 'ECDH', namedCurve: crv };
29
- },
30
- usages: derive,
31
- ops: [undefined, 'deriveBits'],
32
- };
16
+ function ecdh(mode) {
17
+ return {
18
+ kty: ["EC", "OKP"],
19
+ mode,
20
+ subtle: { name: "ECDH" },
21
+ resolve: ({ kty, crv, asymmetricKeyType }) => {
22
+ if (crv === "X25519" || asymmetricKeyType === "x25519")
23
+ return { name: "X25519" };
24
+ if (kty === "OKP")
25
+ throw new JOSENotSupported('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');
26
+ return { name: "ECDH", namedCurve: crv };
27
+ },
28
+ usages: derive,
29
+ ops: [void 0, "deriveBits"]
30
+ };
33
31
  }
34
- function aeskw(bits, gcm = false) {
35
- return {
36
- kty: ['oct'],
37
- secret: true,
38
- subtle: { name: gcm ? 'AES-GCM' : 'AES-KW', length: bits },
39
- usages: none,
40
- ops: gcm ? ['encrypt', 'decrypt'] : ['wrapKey', 'unwrapKey'],
41
- };
32
+ function aeskw(bits, gcm = !1) {
33
+ return {
34
+ kty: ["oct"],
35
+ mode: "key-wrapping",
36
+ secret: !0,
37
+ subtle: { name: gcm ? "AES-GCM" : "AES-KW", length: bits },
38
+ usages: none,
39
+ ops: gcm ? ["encrypt", "decrypt"] : ["wrapKey", "unwrapKey"]
40
+ };
42
41
  }
43
42
  function pbes2() {
44
- return {
45
- kty: ['oct'],
46
- secret: true,
47
- subtle: { name: 'PBKDF2' },
48
- usages: none,
49
- ops: ['deriveBits', 'deriveBits'],
50
- };
43
+ return {
44
+ kty: ["oct"],
45
+ mode: "key-wrapping",
46
+ secret: !0,
47
+ subtle: { name: "PBKDF2" },
48
+ usages: none,
49
+ ops: ["deriveBits", "deriveBits"]
50
+ };
51
51
  }
52
- export const JWE = table({
53
- dir: {
54
- kty: ['oct'],
55
- secret: true,
56
- subtle: { name: 'AES-GCM' },
57
- usages: none,
58
- ops: ['encrypt', 'decrypt'],
59
- },
60
- 'RSA-OAEP': rsaes(1),
61
- 'RSA-OAEP-256': rsaes(256),
62
- 'RSA-OAEP-384': rsaes(384),
63
- 'RSA-OAEP-512': rsaes(512),
64
- 'ECDH-ES': ecdh(),
65
- 'ECDH-ES+A128KW': ecdh(),
66
- 'ECDH-ES+A192KW': ecdh(),
67
- 'ECDH-ES+A256KW': ecdh(),
68
- A128KW: aeskw(128),
69
- A192KW: aeskw(192),
70
- A256KW: aeskw(256),
71
- A128GCMKW: aeskw(128, true),
72
- A192GCMKW: aeskw(192, true),
73
- A256GCMKW: aeskw(256, true),
74
- 'PBES2-HS256+A128KW': pbes2(),
75
- 'PBES2-HS384+A192KW': pbes2(),
76
- 'PBES2-HS512+A256KW': pbes2(),
77
- });
78
- const contentOps = ['encrypt', 'decrypt'];
79
- function contentEncryption(bits, cbc = false) {
80
- return {
81
- kty: ['oct'],
82
- secret: true,
83
- subtle: { name: cbc ? 'AES-CBC' : 'AES-GCM', length: bits },
84
- usages: none,
85
- ops: contentOps,
86
- cekBits: bits,
87
- ivBits: cbc ? 128 : 96,
88
- cbc,
89
- };
52
+ const JWE = table({
53
+ dir: {
54
+ kty: ["oct"],
55
+ mode: "direct-encryption",
56
+ secret: !0,
57
+ subtle: { name: "AES-GCM" },
58
+ usages: none,
59
+ ops: ["encrypt", "decrypt"]
60
+ },
61
+ "RSA-OAEP": rsaes(1),
62
+ "RSA-OAEP-256": rsaes(256),
63
+ "RSA-OAEP-384": rsaes(384),
64
+ "RSA-OAEP-512": rsaes(512),
65
+ "ECDH-ES": ecdh("direct-key-agreement"),
66
+ "ECDH-ES+A128KW": ecdh("key-agreement-with-key-wrapping"),
67
+ "ECDH-ES+A192KW": ecdh("key-agreement-with-key-wrapping"),
68
+ "ECDH-ES+A256KW": ecdh("key-agreement-with-key-wrapping"),
69
+ A128KW: aeskw(128),
70
+ A192KW: aeskw(192),
71
+ A256KW: aeskw(256),
72
+ A128GCMKW: aeskw(128, !0),
73
+ A192GCMKW: aeskw(192, !0),
74
+ A256GCMKW: aeskw(256, !0),
75
+ "PBES2-HS256+A128KW": pbes2(),
76
+ "PBES2-HS384+A192KW": pbes2(),
77
+ "PBES2-HS512+A256KW": pbes2()
78
+ }), contentOps = ["encrypt", "decrypt"];
79
+ function contentEncryption(bits, cbc = !1) {
80
+ return {
81
+ kty: ["oct"],
82
+ secret: !0,
83
+ subtle: { name: cbc ? "AES-CBC" : "AES-GCM", length: bits },
84
+ usages: none,
85
+ ops: contentOps,
86
+ cekBits: bits,
87
+ ivBits: cbc ? 128 : 96,
88
+ cbc
89
+ };
90
90
  }
91
91
  const ENC = table({
92
- A128GCM: contentEncryption(128),
93
- A192GCM: contentEncryption(192),
94
- A256GCM: contentEncryption(256),
95
- 'A128CBC-HS256': contentEncryption(256, true),
96
- 'A192CBC-HS384': contentEncryption(384, true),
97
- 'A256CBC-HS512': contentEncryption(512, true),
92
+ A128GCM: contentEncryption(128),
93
+ A192GCM: contentEncryption(192),
94
+ A256GCM: contentEncryption(256),
95
+ "A128CBC-HS256": contentEncryption(256, !0),
96
+ "A192CBC-HS384": contentEncryption(384, !0),
97
+ "A256CBC-HS512": contentEncryption(512, !0)
98
98
  });
99
99
  function unsupported(parameter, name) {
100
- throw new JOSENotSupported(`Invalid or unsupported "${parameter}" (JWE ${name}) header value`);
100
+ throw new JOSENotSupported(`Invalid or unsupported "${parameter}" (JWE ${name}) header value`);
101
+ }
102
+ function jweAlgorithm(alg) {
103
+ return (typeof alg == "string" ? JWE[alg] : void 0) ?? unsupported("alg", "Algorithm");
104
+ }
105
+ function isJWECEKTransport(algorithm) {
106
+ return algorithm.mode === "key-wrapping" || algorithm.mode === "key-encryption" || algorithm.mode === "key-agreement-with-key-wrapping";
101
107
  }
102
- export function jweAlgorithm(alg) {
103
- return (typeof alg === 'string' ? JWE[alg] : undefined) ?? unsupported('alg', 'Algorithm');
108
+ function invalidJWEKeyManagementMode(_mode) {
109
+ throw new TypeError("Invalid JWE key management mode");
104
110
  }
105
- export function jweEncryption(enc) {
106
- return ((typeof enc === 'string' ? ENC[enc] : undefined) ?? unsupported('enc', 'Encryption Algorithm'));
111
+ function jweEncryption(enc) {
112
+ return (typeof enc == "string" ? ENC[enc] : void 0) ?? unsupported("enc", "Encryption Algorithm");
107
113
  }
114
+ export {
115
+ JWE,
116
+ invalidJWEKeyManagementMode,
117
+ isJWECEKTransport,
118
+ jweAlgorithm,
119
+ jweEncryption
120
+ };