jose 4.0.3 → 4.1.2

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 (70) hide show
  1. package/dist/browser/{runtime → lib}/aesgcmkw.js +8 -8
  2. package/dist/browser/lib/cek.js +18 -16
  3. package/dist/browser/lib/check_iv_length.js +2 -2
  4. package/dist/browser/lib/check_key_type.js +1 -1
  5. package/dist/browser/lib/crypto_key.js +150 -0
  6. package/dist/browser/lib/decrypt_key_management.js +3 -3
  7. package/dist/browser/lib/encrypt_key_management.js +3 -3
  8. package/dist/browser/{runtime → lib}/invalid_key_input.js +0 -0
  9. package/dist/browser/lib/iv.js +24 -19
  10. package/dist/browser/runtime/aeskw.js +4 -3
  11. package/dist/browser/runtime/asn1.js +4 -4
  12. package/dist/browser/runtime/bogus.js +1 -1
  13. package/dist/browser/runtime/check_cek_length.js +7 -0
  14. package/dist/browser/runtime/decrypt.js +10 -4
  15. package/dist/browser/runtime/ecdhes.js +5 -4
  16. package/dist/browser/runtime/encrypt.js +10 -4
  17. package/dist/browser/runtime/generate.js +4 -4
  18. package/dist/browser/runtime/get_sign_verify_key.js +5 -4
  19. package/dist/browser/runtime/jwk_to_key.js +4 -4
  20. package/dist/browser/runtime/key_to_jwk.js +1 -1
  21. package/dist/browser/runtime/pbes2kw.js +14 -36
  22. package/dist/browser/runtime/rsaes.js +5 -4
  23. package/dist/browser/runtime/subtle_dsa.js +7 -26
  24. package/dist/browser/runtime/webcrypto.js +0 -145
  25. package/dist/node/cjs/{runtime → lib}/aesgcmkw.js +8 -8
  26. package/dist/node/cjs/lib/cek.js +20 -17
  27. package/dist/node/cjs/lib/check_iv_length.js +1 -1
  28. package/dist/node/cjs/lib/check_key_type.js +1 -1
  29. package/dist/node/cjs/lib/crypto_key.js +155 -0
  30. package/dist/node/cjs/lib/decrypt_key_management.js +2 -2
  31. package/dist/node/cjs/lib/encrypt_key_management.js +2 -2
  32. package/dist/node/cjs/{runtime → lib}/invalid_key_input.js +0 -11
  33. package/dist/node/cjs/lib/iv.js +26 -20
  34. package/dist/node/cjs/runtime/aeskw.js +4 -2
  35. package/dist/node/cjs/runtime/asn1.js +2 -2
  36. package/dist/node/cjs/runtime/decrypt.js +4 -2
  37. package/dist/node/cjs/runtime/ecdhes.js +7 -4
  38. package/dist/node/cjs/runtime/encrypt.js +4 -2
  39. package/dist/node/cjs/runtime/get_named_curve.js +2 -2
  40. package/dist/node/cjs/runtime/get_sign_verify_key.js +6 -4
  41. package/dist/node/cjs/runtime/global.js +11 -0
  42. package/dist/node/cjs/runtime/key_to_jwk.js +2 -2
  43. package/dist/node/cjs/runtime/node_key.js +6 -10
  44. package/dist/node/cjs/runtime/pbes2kw.js +4 -2
  45. package/dist/node/cjs/runtime/rsaes.js +4 -2
  46. package/dist/node/cjs/runtime/webcrypto.js +1 -152
  47. package/dist/node/esm/{runtime → lib}/aesgcmkw.js +8 -8
  48. package/dist/node/esm/lib/cek.js +18 -16
  49. package/dist/node/esm/lib/check_iv_length.js +2 -2
  50. package/dist/node/esm/lib/check_key_type.js +1 -1
  51. package/dist/node/esm/lib/crypto_key.js +150 -0
  52. package/dist/node/esm/lib/decrypt_key_management.js +3 -3
  53. package/dist/node/esm/lib/encrypt_key_management.js +3 -3
  54. package/dist/node/esm/{runtime → lib}/invalid_key_input.js +0 -11
  55. package/dist/node/esm/lib/iv.js +24 -19
  56. package/dist/node/esm/runtime/aeskw.js +6 -4
  57. package/dist/node/esm/runtime/asn1.js +4 -4
  58. package/dist/node/esm/runtime/decrypt.js +6 -4
  59. package/dist/node/esm/runtime/ecdhes.js +9 -6
  60. package/dist/node/esm/runtime/encrypt.js +6 -4
  61. package/dist/node/esm/runtime/get_named_curve.js +4 -4
  62. package/dist/node/esm/runtime/get_sign_verify_key.js +7 -5
  63. package/dist/node/esm/runtime/global.js +6 -0
  64. package/dist/node/esm/runtime/key_to_jwk.js +4 -4
  65. package/dist/node/esm/runtime/node_key.js +6 -10
  66. package/dist/node/esm/runtime/pbes2kw.js +6 -4
  67. package/dist/node/esm/runtime/rsaes.js +6 -4
  68. package/dist/node/esm/runtime/webcrypto.js +0 -149
  69. package/dist/types/jwks/remote.d.ts +4 -0
  70. package/package.json +4 -1
@@ -6,152 +6,3 @@ export const isCryptoKey = util.types.isCryptoKey
6
6
  ? (obj) => util.types.isCryptoKey(obj)
7
7
  :
8
8
  (obj) => false;
9
- function getHashLength(hash) {
10
- return parseInt(hash === null || hash === void 0 ? void 0 : hash.name.substr(4), 10);
11
- }
12
- function getNamedCurve(alg) {
13
- switch (alg) {
14
- case 'ES256':
15
- return 'P-256';
16
- case 'ES384':
17
- return 'P-384';
18
- case 'ES512':
19
- return 'P-521';
20
- }
21
- }
22
- export function checkCryptoKey(key, alg, ...usages) {
23
- switch (alg) {
24
- case undefined:
25
- break;
26
- case 'HS256':
27
- case 'HS384':
28
- case 'HS512': {
29
- if (key.algorithm.name !== 'HMAC') {
30
- throw new TypeError(`CryptoKey does not support this operation, its algorithm.name must be HMAC.`);
31
- }
32
- const expected = parseInt(alg.substr(2), 10);
33
- const actual = getHashLength(key.algorithm.hash);
34
- if (actual !== expected) {
35
- throw new TypeError(`CryptoKey does not support this operation, its algorithm.hash must be SHA-${expected}.`);
36
- }
37
- break;
38
- }
39
- case 'RS256':
40
- case 'RS384':
41
- case 'RS512': {
42
- if (key.algorithm.name !== 'RSASSA-PKCS1-v1_5') {
43
- throw new TypeError(`CryptoKey does not support this operation, its algorithm.name must be RSASSA-PKCS1-v1_5.`);
44
- }
45
- const expected = parseInt(alg.substr(2), 10);
46
- const actual = getHashLength(key.algorithm.hash);
47
- if (actual !== expected) {
48
- throw new TypeError(`CryptoKey does not support this operation, its algorithm.hash must be SHA-${expected}.`);
49
- }
50
- break;
51
- }
52
- case 'PS256':
53
- case 'PS384':
54
- case 'PS512': {
55
- if (key.algorithm.name !== 'RSA-PSS') {
56
- throw new TypeError(`CryptoKey does not support this operation, its algorithm.name must be RSA-PSS.`);
57
- }
58
- const expected = parseInt(alg.substr(2), 10);
59
- const actual = getHashLength(key.algorithm.hash);
60
- if (actual !== expected) {
61
- throw new TypeError(`CryptoKey does not support this operation, its algorithm.hash must be SHA-${expected}.`);
62
- }
63
- break;
64
- }
65
- case 'EdDSA': {
66
- if (key.algorithm.name !== 'NODE-ED25519' && key.algorithm.name !== 'NODE-ED448') {
67
- throw new TypeError(`CryptoKey does not support this operation, its algorithm.name must be NODE-ED25519 or NODE-ED448.`);
68
- }
69
- break;
70
- }
71
- case 'ES256':
72
- case 'ES384':
73
- case 'ES512': {
74
- if (key.algorithm.name !== 'ECDSA') {
75
- throw new TypeError(`CryptoKey does not support this operation, its algorithm.name must be ECDSA.`);
76
- }
77
- const expected = getNamedCurve(alg);
78
- const actual = key.algorithm.namedCurve;
79
- if (actual !== expected) {
80
- throw new TypeError(`CryptoKey does not support this operation, its algorithm.namedCurve must be ${expected}.`);
81
- }
82
- break;
83
- }
84
- case 'A128GCM':
85
- case 'A192GCM':
86
- case 'A256GCM': {
87
- if (key.algorithm.name !== 'AES-GCM') {
88
- throw new TypeError(`CryptoKey does not support this operation, its algorithm.name must be AES-GCM.`);
89
- }
90
- const expected = parseInt(alg.substr(1, 3), 10);
91
- const actual = key.algorithm.length;
92
- if (actual !== expected) {
93
- throw new TypeError(`CryptoKey does not support this operation, its algorithm.length must be ${expected}.`);
94
- }
95
- break;
96
- }
97
- case 'A128KW':
98
- case 'A192KW':
99
- case 'A256KW': {
100
- if (key.algorithm.name !== 'AES-KW') {
101
- throw new TypeError(`CryptoKey does not support this operation, its algorithm.name must be AES-KW.`);
102
- }
103
- const expected = parseInt(alg.substr(1, 3), 10);
104
- const actual = key.algorithm.length;
105
- if (actual !== expected) {
106
- throw new TypeError(`CryptoKey does not support this operation, its algorithm.length must be ${expected}.`);
107
- }
108
- break;
109
- }
110
- case 'ECDH-ES':
111
- if (key.algorithm.name !== 'ECDH') {
112
- throw new TypeError(`CryptoKey does not support this operation, its algorithm.name must be ECDH.`);
113
- }
114
- break;
115
- case 'PBES2-HS256+A128KW':
116
- case 'PBES2-HS384+A192KW':
117
- case 'PBES2-HS512+A256KW':
118
- if (key.algorithm.name !== 'PBKDF2') {
119
- throw new TypeError(`CryptoKey does not support this operation, its algorithm.name must be PBKDF2.`);
120
- }
121
- break;
122
- case 'RSA-OAEP':
123
- case 'RSA-OAEP-256':
124
- case 'RSA-OAEP-384':
125
- case 'RSA-OAEP-512': {
126
- if (key.algorithm.name !== 'RSA-OAEP') {
127
- throw new TypeError(`CryptoKey does not support this operation, its algorithm.name must be RSA-OAEP.`);
128
- }
129
- const expected = parseInt(alg.substr(9), 10) || 1;
130
- const actual = getHashLength(key.algorithm.hash);
131
- if (actual !== expected) {
132
- throw new TypeError(`CryptoKey does not support this operation, its algorithm.hash must be SHA-${expected}.`);
133
- }
134
- break;
135
- }
136
- default:
137
- throw new TypeError('CryptoKey does not support this operation');
138
- }
139
- if (usages.length && !usages.some((expected) => key.usages.includes(expected))) {
140
- let msg = 'CryptoKey does not support this operation, its usages must include ';
141
- if (usages.length > 2) {
142
- const last = usages.pop();
143
- msg += `one of ${usages.join(', ')}, or ${last}.`;
144
- }
145
- else if (usages.length === 2) {
146
- msg += `one of ${usages[0]} or ${usages[1]}.`;
147
- }
148
- else {
149
- msg += `${usages[0]}.`;
150
- }
151
- throw new TypeError(msg);
152
- }
153
- }
154
- export function getKeyObject(key, alg, ...usages) {
155
- checkCryptoKey(key, alg, ...usages);
156
- return crypto.KeyObject.from(key);
157
- }
@@ -4,4 +4,8 @@ export interface RemoteJWKSetOptions {
4
4
  cooldownDuration?: number;
5
5
  agent?: any;
6
6
  }
7
+ interface URL {
8
+ href: string;
9
+ }
7
10
  export declare function createRemoteJWKSet(url: URL, options?: RemoteJWKSetOptions): GetKeyFunction<JWSHeaderParameters, FlattenedJWSInput>;
11
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jose",
3
- "version": "4.0.3",
3
+ "version": "4.1.2",
4
4
  "description": "'JSON Web Almost Everything' - JWA, JWS, JWE, JWT, JWK, JWKS with no dependencies using runtime's native crypto",
5
5
  "keywords": [
6
6
  "browser",
@@ -68,6 +68,9 @@
68
68
  "dist/**/package.json",
69
69
  "dist/**/*.js",
70
70
  "dist/types/**/*.d.ts",
71
+ "!dist/**/*.bundle.js",
72
+ "!dist/**/*.umd.js",
73
+ "!dist/**/*.min.js",
71
74
  "!dist/node/webcrypto/**/*",
72
75
  "!dist/types/runtime/*",
73
76
  "!dist/types/lib/*"