jose 5.9.6 → 6.0.0

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 (291) hide show
  1. package/README.md +21 -19
  2. package/dist/types/index.d.ts +5 -5
  3. package/dist/types/jwe/compact/decrypt.d.ts +4 -4
  4. package/dist/types/jwe/compact/encrypt.d.ts +4 -4
  5. package/dist/types/jwe/flattened/decrypt.d.ts +4 -4
  6. package/dist/types/jwe/flattened/encrypt.d.ts +6 -6
  7. package/dist/types/jwe/general/decrypt.d.ts +4 -4
  8. package/dist/types/jwe/general/encrypt.d.ts +7 -7
  9. package/dist/types/jwk/embedded.d.ts +2 -2
  10. package/dist/types/jwk/thumbprint.d.ts +5 -5
  11. package/dist/types/jwks/local.d.ts +2 -2
  12. package/dist/types/jwks/remote.d.ts +104 -25
  13. package/dist/types/jws/compact/sign.d.ts +4 -4
  14. package/dist/types/jws/compact/verify.d.ts +4 -4
  15. package/dist/types/jws/flattened/sign.d.ts +4 -4
  16. package/dist/types/jws/flattened/verify.d.ts +4 -4
  17. package/dist/types/jws/general/sign.d.ts +6 -6
  18. package/dist/types/jws/general/verify.d.ts +4 -4
  19. package/dist/types/jwt/decrypt.d.ts +5 -5
  20. package/dist/types/jwt/encrypt.d.ts +4 -4
  21. package/dist/types/jwt/produce.d.ts +3 -3
  22. package/dist/types/jwt/sign.d.ts +3 -3
  23. package/dist/types/jwt/unsecured.d.ts +5 -5
  24. package/dist/types/jwt/verify.d.ts +5 -5
  25. package/dist/types/key/export.d.ts +10 -12
  26. package/dist/types/key/generate_key_pair.d.ts +10 -11
  27. package/dist/types/key/generate_secret.d.ts +6 -9
  28. package/dist/types/key/import.d.ts +20 -27
  29. package/dist/types/types.d.ts +38 -59
  30. package/dist/types/util/decode_jwt.d.ts +2 -2
  31. package/dist/types/util/decode_protected_header.d.ts +2 -2
  32. package/dist/types/util/errors.d.ts +6 -6
  33. package/dist/{browser → webapi}/index.js +2 -2
  34. package/dist/{node/esm → webapi}/jwe/flattened/decrypt.js +8 -4
  35. package/dist/{node/esm → webapi}/jwe/flattened/encrypt.js +7 -3
  36. package/dist/{node/esm → webapi}/jwe/general/encrypt.js +8 -3
  37. package/dist/{node/esm → webapi}/jwk/thumbprint.js +18 -8
  38. package/dist/{node/esm → webapi}/jwks/local.js +4 -6
  39. package/dist/{node/esm → webapi}/jwks/remote.js +34 -6
  40. package/dist/{node/esm → webapi}/jws/flattened/sign.js +7 -5
  41. package/dist/{browser → webapi}/jws/flattened/verify.js +8 -14
  42. package/dist/{browser → webapi}/jwt/unsecured.js +1 -1
  43. package/dist/{node/esm → webapi}/key/export.js +2 -3
  44. package/dist/{browser/runtime/generate.js → webapi/key/generate_key_pair.js} +5 -54
  45. package/dist/webapi/key/generate_secret.js +40 -0
  46. package/dist/{browser → webapi}/key/import.js +9 -7
  47. package/dist/{node/esm → webapi}/lib/aesgcmkw.js +3 -3
  48. package/dist/{browser/runtime → webapi/lib}/aeskw.js +9 -16
  49. package/dist/{browser/runtime → webapi/lib}/asn1.js +25 -17
  50. package/dist/{browser/runtime → webapi/lib}/base64url.js +17 -9
  51. package/dist/{browser → webapi}/lib/buffer_utils.js +4 -19
  52. package/dist/{browser → webapi}/lib/cek.js +1 -2
  53. package/dist/{browser/runtime → webapi/lib}/check_cek_length.js +1 -2
  54. package/dist/{browser → webapi}/lib/check_iv_length.js +1 -2
  55. package/dist/webapi/lib/check_key_type.js +126 -0
  56. package/dist/{node/esm → webapi}/lib/crypto_key.js +11 -23
  57. package/dist/{browser/runtime → webapi/lib}/decrypt.js +26 -10
  58. package/dist/{node/esm → webapi}/lib/decrypt_key_management.js +22 -24
  59. package/dist/{browser/runtime → webapi/lib}/digest.js +1 -3
  60. package/dist/webapi/lib/ecdhes.js +46 -0
  61. package/dist/{browser/runtime → webapi/lib}/encrypt.js +8 -10
  62. package/dist/{node/esm → webapi}/lib/encrypt_key_management.js +26 -23
  63. package/dist/webapi/lib/get_sign_verify_key.js +12 -0
  64. package/dist/{node/esm → webapi}/lib/is_disjoint.js +1 -2
  65. package/dist/{browser → webapi}/lib/is_jwk.js +1 -1
  66. package/dist/webapi/lib/is_key_like.js +14 -0
  67. package/dist/{browser → webapi}/lib/is_object.js +2 -2
  68. package/dist/{node/esm → webapi}/lib/iv.js +1 -2
  69. package/dist/{browser/runtime → webapi/lib}/jwk_to_key.js +4 -10
  70. package/dist/webapi/lib/key_to_jwk.js +27 -0
  71. package/dist/webapi/lib/normalize_key.js +164 -0
  72. package/dist/webapi/lib/pbes2kw.js +37 -0
  73. package/dist/webapi/lib/rsaes.js +24 -0
  74. package/dist/{browser/runtime → webapi/lib}/sign.js +1 -3
  75. package/dist/{browser/runtime → webapi/lib}/subtle_dsa.js +5 -4
  76. package/dist/{browser → webapi}/lib/validate_algorithms.js +1 -2
  77. package/dist/{node/esm → webapi}/lib/validate_crit.js +3 -4
  78. package/dist/{browser/runtime → webapi/lib}/verify.js +1 -3
  79. package/dist/{node/esm → webapi}/util/base64url.js +1 -1
  80. package/package.json +36 -219
  81. package/dist/browser/jwe/compact/encrypt.js +0 -26
  82. package/dist/browser/jwe/flattened/decrypt.js +0 -161
  83. package/dist/browser/jwe/flattened/encrypt.js +0 -153
  84. package/dist/browser/jwe/general/encrypt.js +0 -174
  85. package/dist/browser/jwk/thumbprint.js +0 -53
  86. package/dist/browser/jwks/local.js +0 -121
  87. package/dist/browser/jwks/remote.js +0 -139
  88. package/dist/browser/jws/compact/sign.js +0 -17
  89. package/dist/browser/jws/flattened/sign.js +0 -81
  90. package/dist/browser/jws/general/sign.js +0 -67
  91. package/dist/browser/jwt/encrypt.js +0 -68
  92. package/dist/browser/jwt/produce.js +0 -75
  93. package/dist/browser/jwt/sign.js +0 -20
  94. package/dist/browser/key/export.js +0 -12
  95. package/dist/browser/key/generate_key_pair.js +0 -4
  96. package/dist/browser/key/generate_secret.js +0 -4
  97. package/dist/browser/lib/aesgcmkw.js +0 -16
  98. package/dist/browser/lib/check_key_type.js +0 -77
  99. package/dist/browser/lib/check_p2s.js +0 -6
  100. package/dist/browser/lib/crypto_key.js +0 -152
  101. package/dist/browser/lib/decrypt_key_management.js +0 -129
  102. package/dist/browser/lib/encrypt_key_management.js +0 -89
  103. package/dist/browser/lib/format_pem.js +0 -4
  104. package/dist/browser/lib/is_disjoint.js +0 -22
  105. package/dist/browser/lib/iv.js +0 -20
  106. package/dist/browser/lib/validate_crit.js +0 -34
  107. package/dist/browser/package.json +0 -1
  108. package/dist/browser/runtime/bogus.js +0 -6
  109. package/dist/browser/runtime/ecdhes.js +0 -47
  110. package/dist/browser/runtime/fetch_jwks.js +0 -34
  111. package/dist/browser/runtime/get_sign_verify_key.js +0 -24
  112. package/dist/browser/runtime/is_key_like.js +0 -8
  113. package/dist/browser/runtime/key_to_jwk.js +0 -21
  114. package/dist/browser/runtime/normalize_key.js +0 -68
  115. package/dist/browser/runtime/pbes2kw.js +0 -51
  116. package/dist/browser/runtime/random.js +0 -2
  117. package/dist/browser/runtime/rsaes.js +0 -37
  118. package/dist/browser/runtime/runtime.js +0 -1
  119. package/dist/browser/runtime/subtle_rsaes.js +0 -12
  120. package/dist/browser/runtime/timing_safe_equal.js +0 -19
  121. package/dist/browser/runtime/webcrypto.js +0 -2
  122. package/dist/browser/util/base64url.js +0 -3
  123. package/dist/browser/util/errors.js +0 -114
  124. package/dist/browser/util/runtime.js +0 -2
  125. package/dist/node/cjs/index.js +0 -69
  126. package/dist/node/cjs/jwe/compact/decrypt.js +0 -30
  127. package/dist/node/cjs/jwe/compact/encrypt.js +0 -31
  128. package/dist/node/cjs/jwe/flattened/decrypt.js +0 -164
  129. package/dist/node/cjs/jwe/flattened/encrypt.js +0 -165
  130. package/dist/node/cjs/jwe/general/decrypt.js +0 -34
  131. package/dist/node/cjs/jwe/general/encrypt.js +0 -186
  132. package/dist/node/cjs/jwk/embedded.js +0 -20
  133. package/dist/node/cjs/jwk/thumbprint.js +0 -57
  134. package/dist/node/cjs/jwks/local.js +0 -125
  135. package/dist/node/cjs/jwks/remote.js +0 -152
  136. package/dist/node/cjs/jws/compact/sign.js +0 -22
  137. package/dist/node/cjs/jws/compact/verify.js +0 -24
  138. package/dist/node/cjs/jws/flattened/sign.js +0 -88
  139. package/dist/node/cjs/jws/flattened/verify.js +0 -125
  140. package/dist/node/cjs/jws/general/sign.js +0 -77
  141. package/dist/node/cjs/jws/general/verify.js +0 -27
  142. package/dist/node/cjs/jwt/decrypt.js +0 -26
  143. package/dist/node/cjs/jwt/encrypt.js +0 -79
  144. package/dist/node/cjs/jwt/produce.js +0 -80
  145. package/dist/node/cjs/jwt/sign.js +0 -25
  146. package/dist/node/cjs/jwt/unsecured.js +0 -36
  147. package/dist/node/cjs/jwt/verify.js +0 -18
  148. package/dist/node/cjs/key/export.js +0 -17
  149. package/dist/node/cjs/key/generate_key_pair.js +0 -7
  150. package/dist/node/cjs/key/generate_secret.js +0 -7
  151. package/dist/node/cjs/key/import.js +0 -51
  152. package/dist/node/cjs/lib/aesgcmkw.js +0 -20
  153. package/dist/node/cjs/lib/buffer_utils.js +0 -60
  154. package/dist/node/cjs/lib/cek.js +0 -23
  155. package/dist/node/cjs/lib/check_iv_length.js +0 -10
  156. package/dist/node/cjs/lib/check_key_type.js +0 -80
  157. package/dist/node/cjs/lib/check_p2s.js +0 -9
  158. package/dist/node/cjs/lib/crypto_key.js +0 -156
  159. package/dist/node/cjs/lib/decrypt_key_management.js +0 -131
  160. package/dist/node/cjs/lib/encrypt_key_management.js +0 -91
  161. package/dist/node/cjs/lib/epoch.js +0 -3
  162. package/dist/node/cjs/lib/invalid_key_input.js +0 -34
  163. package/dist/node/cjs/lib/is_disjoint.js +0 -24
  164. package/dist/node/cjs/lib/is_jwk.js +0 -19
  165. package/dist/node/cjs/lib/is_object.js +0 -19
  166. package/dist/node/cjs/lib/iv.js +0 -23
  167. package/dist/node/cjs/lib/jwt_claims_set.js +0 -106
  168. package/dist/node/cjs/lib/private_symbols.js +0 -4
  169. package/dist/node/cjs/lib/secs.js +0 -57
  170. package/dist/node/cjs/lib/validate_algorithms.js +0 -13
  171. package/dist/node/cjs/lib/validate_crit.js +0 -36
  172. package/dist/node/cjs/runtime/aeskw.js +0 -55
  173. package/dist/node/cjs/runtime/asn1.js +0 -54
  174. package/dist/node/cjs/runtime/base64url.js +0 -20
  175. package/dist/node/cjs/runtime/cbc_tag.js +0 -11
  176. package/dist/node/cjs/runtime/check_cek_length.js +0 -37
  177. package/dist/node/cjs/runtime/check_key_length.js +0 -18
  178. package/dist/node/cjs/runtime/ciphers.js +0 -8
  179. package/dist/node/cjs/runtime/decrypt.js +0 -103
  180. package/dist/node/cjs/runtime/digest.js +0 -5
  181. package/dist/node/cjs/runtime/dsa_digest.js +0 -25
  182. package/dist/node/cjs/runtime/ecdhes.js +0 -70
  183. package/dist/node/cjs/runtime/encrypt.js +0 -80
  184. package/dist/node/cjs/runtime/fetch_jwks.js +0 -45
  185. package/dist/node/cjs/runtime/generate.js +0 -101
  186. package/dist/node/cjs/runtime/get_named_curve.js +0 -61
  187. package/dist/node/cjs/runtime/get_sign_verify_key.js +0 -31
  188. package/dist/node/cjs/runtime/hmac_digest.js +0 -16
  189. package/dist/node/cjs/runtime/is_key_like.js +0 -11
  190. package/dist/node/cjs/runtime/is_key_object.js +0 -4
  191. package/dist/node/cjs/runtime/jwk_to_key.js +0 -10
  192. package/dist/node/cjs/runtime/key_to_jwk.js +0 -36
  193. package/dist/node/cjs/runtime/node_key.js +0 -106
  194. package/dist/node/cjs/runtime/normalize_key.js +0 -3
  195. package/dist/node/cjs/runtime/pbes2kw.js +0 -48
  196. package/dist/node/cjs/runtime/random.js +0 -5
  197. package/dist/node/cjs/runtime/rsaes.js +0 -71
  198. package/dist/node/cjs/runtime/runtime.js +0 -3
  199. package/dist/node/cjs/runtime/sign.js +0 -19
  200. package/dist/node/cjs/runtime/timing_safe_equal.js +0 -5
  201. package/dist/node/cjs/runtime/verify.js +0 -31
  202. package/dist/node/cjs/runtime/webcrypto.js +0 -9
  203. package/dist/node/cjs/util/base64url.js +0 -6
  204. package/dist/node/cjs/util/decode_jwt.js +0 -35
  205. package/dist/node/cjs/util/decode_protected_header.js +0 -37
  206. package/dist/node/cjs/util/errors.js +0 -117
  207. package/dist/node/cjs/util/runtime.js +0 -4
  208. package/dist/node/esm/index.js +0 -30
  209. package/dist/node/esm/jwe/compact/decrypt.js +0 -27
  210. package/dist/node/esm/jwe/general/decrypt.js +0 -31
  211. package/dist/node/esm/jwk/embedded.js +0 -17
  212. package/dist/node/esm/jws/compact/verify.js +0 -21
  213. package/dist/node/esm/jws/flattened/verify.js +0 -122
  214. package/dist/node/esm/jws/general/verify.js +0 -24
  215. package/dist/node/esm/jwt/decrypt.js +0 -23
  216. package/dist/node/esm/jwt/unsecured.js +0 -32
  217. package/dist/node/esm/jwt/verify.js +0 -15
  218. package/dist/node/esm/key/generate_key_pair.js +0 -4
  219. package/dist/node/esm/key/generate_secret.js +0 -4
  220. package/dist/node/esm/key/import.js +0 -45
  221. package/dist/node/esm/lib/buffer_utils.js +0 -51
  222. package/dist/node/esm/lib/cek.js +0 -20
  223. package/dist/node/esm/lib/check_iv_length.js +0 -8
  224. package/dist/node/esm/lib/check_key_type.js +0 -77
  225. package/dist/node/esm/lib/check_p2s.js +0 -6
  226. package/dist/node/esm/lib/epoch.js +0 -1
  227. package/dist/node/esm/lib/invalid_key_input.js +0 -31
  228. package/dist/node/esm/lib/is_jwk.js +0 -13
  229. package/dist/node/esm/lib/is_object.js +0 -16
  230. package/dist/node/esm/lib/jwt_claims_set.js +0 -104
  231. package/dist/node/esm/lib/private_symbols.js +0 -1
  232. package/dist/node/esm/lib/secs.js +0 -55
  233. package/dist/node/esm/lib/validate_algorithms.js +0 -11
  234. package/dist/node/esm/package.json +0 -1
  235. package/dist/node/esm/runtime/aeskw.js +0 -50
  236. package/dist/node/esm/runtime/asn1.js +0 -46
  237. package/dist/node/esm/runtime/base64url.js +0 -14
  238. package/dist/node/esm/runtime/cbc_tag.js +0 -8
  239. package/dist/node/esm/runtime/check_cek_length.js +0 -35
  240. package/dist/node/esm/runtime/check_key_length.js +0 -16
  241. package/dist/node/esm/runtime/ciphers.js +0 -6
  242. package/dist/node/esm/runtime/decrypt.js +0 -101
  243. package/dist/node/esm/runtime/digest.js +0 -3
  244. package/dist/node/esm/runtime/dsa_digest.js +0 -22
  245. package/dist/node/esm/runtime/ecdhes.js +0 -64
  246. package/dist/node/esm/runtime/encrypt.js +0 -78
  247. package/dist/node/esm/runtime/fetch_jwks.js +0 -43
  248. package/dist/node/esm/runtime/generate.js +0 -97
  249. package/dist/node/esm/runtime/get_named_curve.js +0 -58
  250. package/dist/node/esm/runtime/get_sign_verify_key.js +0 -28
  251. package/dist/node/esm/runtime/hmac_digest.js +0 -13
  252. package/dist/node/esm/runtime/is_key_like.js +0 -8
  253. package/dist/node/esm/runtime/is_key_object.js +0 -2
  254. package/dist/node/esm/runtime/jwk_to_key.js +0 -8
  255. package/dist/node/esm/runtime/key_to_jwk.js +0 -34
  256. package/dist/node/esm/runtime/node_key.js +0 -103
  257. package/dist/node/esm/runtime/normalize_key.js +0 -1
  258. package/dist/node/esm/runtime/pbes2kw.js +0 -43
  259. package/dist/node/esm/runtime/random.js +0 -1
  260. package/dist/node/esm/runtime/rsaes.js +0 -66
  261. package/dist/node/esm/runtime/runtime.js +0 -1
  262. package/dist/node/esm/runtime/sign.js +0 -17
  263. package/dist/node/esm/runtime/timing_safe_equal.js +0 -3
  264. package/dist/node/esm/runtime/verify.js +0 -29
  265. package/dist/node/esm/runtime/webcrypto.js +0 -5
  266. package/dist/node/esm/util/decode_jwt.js +0 -32
  267. package/dist/node/esm/util/decode_protected_header.js +0 -34
  268. package/dist/node/esm/util/runtime.js +0 -2
  269. package/dist/types/util/runtime.d.ts +0 -3
  270. /package/dist/{browser → webapi}/jwe/compact/decrypt.js +0 -0
  271. /package/dist/{node/esm → webapi}/jwe/compact/encrypt.js +0 -0
  272. /package/dist/{browser → webapi}/jwe/general/decrypt.js +0 -0
  273. /package/dist/{browser → webapi}/jwk/embedded.js +0 -0
  274. /package/dist/{node/esm → webapi}/jws/compact/sign.js +0 -0
  275. /package/dist/{browser → webapi}/jws/compact/verify.js +0 -0
  276. /package/dist/{node/esm → webapi}/jws/general/sign.js +0 -0
  277. /package/dist/{browser → webapi}/jws/general/verify.js +0 -0
  278. /package/dist/{browser → webapi}/jwt/decrypt.js +0 -0
  279. /package/dist/{node/esm → webapi}/jwt/encrypt.js +0 -0
  280. /package/dist/{node/esm → webapi}/jwt/produce.js +0 -0
  281. /package/dist/{node/esm → webapi}/jwt/sign.js +0 -0
  282. /package/dist/{browser → webapi}/jwt/verify.js +0 -0
  283. /package/dist/{browser/runtime → webapi/lib}/check_key_length.js +0 -0
  284. /package/dist/{browser → webapi}/lib/epoch.js +0 -0
  285. /package/dist/{browser → webapi}/lib/invalid_key_input.js +0 -0
  286. /package/dist/{browser → webapi}/lib/jwt_claims_set.js +0 -0
  287. /package/dist/{browser → webapi}/lib/private_symbols.js +0 -0
  288. /package/dist/{browser → webapi}/lib/secs.js +0 -0
  289. /package/dist/{browser → webapi}/util/decode_jwt.js +0 -0
  290. /package/dist/{browser → webapi}/util/decode_protected_header.js +0 -0
  291. /package/dist/{node/esm → webapi}/util/errors.js +0 -0
@@ -1,114 +0,0 @@
1
- export class JOSEError extends Error {
2
- constructor(message, options) {
3
- super(message, options);
4
- this.code = 'ERR_JOSE_GENERIC';
5
- this.name = this.constructor.name;
6
- Error.captureStackTrace?.(this, this.constructor);
7
- }
8
- }
9
- JOSEError.code = 'ERR_JOSE_GENERIC';
10
- export class JWTClaimValidationFailed extends JOSEError {
11
- constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {
12
- super(message, { cause: { claim, reason, payload } });
13
- this.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';
14
- this.claim = claim;
15
- this.reason = reason;
16
- this.payload = payload;
17
- }
18
- }
19
- JWTClaimValidationFailed.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';
20
- export class JWTExpired extends JOSEError {
21
- constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {
22
- super(message, { cause: { claim, reason, payload } });
23
- this.code = 'ERR_JWT_EXPIRED';
24
- this.claim = claim;
25
- this.reason = reason;
26
- this.payload = payload;
27
- }
28
- }
29
- JWTExpired.code = 'ERR_JWT_EXPIRED';
30
- export class JOSEAlgNotAllowed extends JOSEError {
31
- constructor() {
32
- super(...arguments);
33
- this.code = 'ERR_JOSE_ALG_NOT_ALLOWED';
34
- }
35
- }
36
- JOSEAlgNotAllowed.code = 'ERR_JOSE_ALG_NOT_ALLOWED';
37
- export class JOSENotSupported extends JOSEError {
38
- constructor() {
39
- super(...arguments);
40
- this.code = 'ERR_JOSE_NOT_SUPPORTED';
41
- }
42
- }
43
- JOSENotSupported.code = 'ERR_JOSE_NOT_SUPPORTED';
44
- export class JWEDecryptionFailed extends JOSEError {
45
- constructor(message = 'decryption operation failed', options) {
46
- super(message, options);
47
- this.code = 'ERR_JWE_DECRYPTION_FAILED';
48
- }
49
- }
50
- JWEDecryptionFailed.code = 'ERR_JWE_DECRYPTION_FAILED';
51
- export class JWEInvalid extends JOSEError {
52
- constructor() {
53
- super(...arguments);
54
- this.code = 'ERR_JWE_INVALID';
55
- }
56
- }
57
- JWEInvalid.code = 'ERR_JWE_INVALID';
58
- export class JWSInvalid extends JOSEError {
59
- constructor() {
60
- super(...arguments);
61
- this.code = 'ERR_JWS_INVALID';
62
- }
63
- }
64
- JWSInvalid.code = 'ERR_JWS_INVALID';
65
- export class JWTInvalid extends JOSEError {
66
- constructor() {
67
- super(...arguments);
68
- this.code = 'ERR_JWT_INVALID';
69
- }
70
- }
71
- JWTInvalid.code = 'ERR_JWT_INVALID';
72
- export class JWKInvalid extends JOSEError {
73
- constructor() {
74
- super(...arguments);
75
- this.code = 'ERR_JWK_INVALID';
76
- }
77
- }
78
- JWKInvalid.code = 'ERR_JWK_INVALID';
79
- export class JWKSInvalid extends JOSEError {
80
- constructor() {
81
- super(...arguments);
82
- this.code = 'ERR_JWKS_INVALID';
83
- }
84
- }
85
- JWKSInvalid.code = 'ERR_JWKS_INVALID';
86
- export class JWKSNoMatchingKey extends JOSEError {
87
- constructor(message = 'no applicable key found in the JSON Web Key Set', options) {
88
- super(message, options);
89
- this.code = 'ERR_JWKS_NO_MATCHING_KEY';
90
- }
91
- }
92
- JWKSNoMatchingKey.code = 'ERR_JWKS_NO_MATCHING_KEY';
93
- export class JWKSMultipleMatchingKeys extends JOSEError {
94
- constructor(message = 'multiple matching keys found in the JSON Web Key Set', options) {
95
- super(message, options);
96
- this.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';
97
- }
98
- }
99
- Symbol.asyncIterator;
100
- JWKSMultipleMatchingKeys.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';
101
- export class JWKSTimeout extends JOSEError {
102
- constructor(message = 'request timed out', options) {
103
- super(message, options);
104
- this.code = 'ERR_JWKS_TIMEOUT';
105
- }
106
- }
107
- JWKSTimeout.code = 'ERR_JWKS_TIMEOUT';
108
- export class JWSSignatureVerificationFailed extends JOSEError {
109
- constructor(message = 'signature verification failed', options) {
110
- super(message, options);
111
- this.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';
112
- }
113
- }
114
- JWSSignatureVerificationFailed.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';
@@ -1,2 +0,0 @@
1
- import value from '../runtime/runtime.js';
2
- export default value;
@@ -1,69 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cryptoRuntime = exports.base64url = exports.generateSecret = exports.generateKeyPair = exports.errors = exports.decodeJwt = exports.decodeProtectedHeader = exports.importJWK = exports.importX509 = exports.importPKCS8 = exports.importSPKI = exports.exportJWK = exports.exportSPKI = exports.exportPKCS8 = exports.UnsecuredJWT = exports.experimental_jwksCache = exports.jwksCache = exports.createRemoteJWKSet = exports.createLocalJWKSet = exports.EmbeddedJWK = exports.calculateJwkThumbprintUri = exports.calculateJwkThumbprint = exports.EncryptJWT = exports.SignJWT = exports.GeneralSign = exports.FlattenedSign = exports.CompactSign = exports.FlattenedEncrypt = exports.CompactEncrypt = exports.jwtDecrypt = exports.jwtVerify = exports.generalVerify = exports.flattenedVerify = exports.compactVerify = exports.GeneralEncrypt = exports.generalDecrypt = exports.flattenedDecrypt = exports.compactDecrypt = void 0;
4
- var decrypt_js_1 = require("./jwe/compact/decrypt.js");
5
- Object.defineProperty(exports, "compactDecrypt", { enumerable: true, get: function () { return decrypt_js_1.compactDecrypt; } });
6
- var decrypt_js_2 = require("./jwe/flattened/decrypt.js");
7
- Object.defineProperty(exports, "flattenedDecrypt", { enumerable: true, get: function () { return decrypt_js_2.flattenedDecrypt; } });
8
- var decrypt_js_3 = require("./jwe/general/decrypt.js");
9
- Object.defineProperty(exports, "generalDecrypt", { enumerable: true, get: function () { return decrypt_js_3.generalDecrypt; } });
10
- var encrypt_js_1 = require("./jwe/general/encrypt.js");
11
- Object.defineProperty(exports, "GeneralEncrypt", { enumerable: true, get: function () { return encrypt_js_1.GeneralEncrypt; } });
12
- var verify_js_1 = require("./jws/compact/verify.js");
13
- Object.defineProperty(exports, "compactVerify", { enumerable: true, get: function () { return verify_js_1.compactVerify; } });
14
- var verify_js_2 = require("./jws/flattened/verify.js");
15
- Object.defineProperty(exports, "flattenedVerify", { enumerable: true, get: function () { return verify_js_2.flattenedVerify; } });
16
- var verify_js_3 = require("./jws/general/verify.js");
17
- Object.defineProperty(exports, "generalVerify", { enumerable: true, get: function () { return verify_js_3.generalVerify; } });
18
- var verify_js_4 = require("./jwt/verify.js");
19
- Object.defineProperty(exports, "jwtVerify", { enumerable: true, get: function () { return verify_js_4.jwtVerify; } });
20
- var decrypt_js_4 = require("./jwt/decrypt.js");
21
- Object.defineProperty(exports, "jwtDecrypt", { enumerable: true, get: function () { return decrypt_js_4.jwtDecrypt; } });
22
- var encrypt_js_2 = require("./jwe/compact/encrypt.js");
23
- Object.defineProperty(exports, "CompactEncrypt", { enumerable: true, get: function () { return encrypt_js_2.CompactEncrypt; } });
24
- var encrypt_js_3 = require("./jwe/flattened/encrypt.js");
25
- Object.defineProperty(exports, "FlattenedEncrypt", { enumerable: true, get: function () { return encrypt_js_3.FlattenedEncrypt; } });
26
- var sign_js_1 = require("./jws/compact/sign.js");
27
- Object.defineProperty(exports, "CompactSign", { enumerable: true, get: function () { return sign_js_1.CompactSign; } });
28
- var sign_js_2 = require("./jws/flattened/sign.js");
29
- Object.defineProperty(exports, "FlattenedSign", { enumerable: true, get: function () { return sign_js_2.FlattenedSign; } });
30
- var sign_js_3 = require("./jws/general/sign.js");
31
- Object.defineProperty(exports, "GeneralSign", { enumerable: true, get: function () { return sign_js_3.GeneralSign; } });
32
- var sign_js_4 = require("./jwt/sign.js");
33
- Object.defineProperty(exports, "SignJWT", { enumerable: true, get: function () { return sign_js_4.SignJWT; } });
34
- var encrypt_js_4 = require("./jwt/encrypt.js");
35
- Object.defineProperty(exports, "EncryptJWT", { enumerable: true, get: function () { return encrypt_js_4.EncryptJWT; } });
36
- var thumbprint_js_1 = require("./jwk/thumbprint.js");
37
- Object.defineProperty(exports, "calculateJwkThumbprint", { enumerable: true, get: function () { return thumbprint_js_1.calculateJwkThumbprint; } });
38
- Object.defineProperty(exports, "calculateJwkThumbprintUri", { enumerable: true, get: function () { return thumbprint_js_1.calculateJwkThumbprintUri; } });
39
- var embedded_js_1 = require("./jwk/embedded.js");
40
- Object.defineProperty(exports, "EmbeddedJWK", { enumerable: true, get: function () { return embedded_js_1.EmbeddedJWK; } });
41
- var local_js_1 = require("./jwks/local.js");
42
- Object.defineProperty(exports, "createLocalJWKSet", { enumerable: true, get: function () { return local_js_1.createLocalJWKSet; } });
43
- var remote_js_1 = require("./jwks/remote.js");
44
- Object.defineProperty(exports, "createRemoteJWKSet", { enumerable: true, get: function () { return remote_js_1.createRemoteJWKSet; } });
45
- Object.defineProperty(exports, "jwksCache", { enumerable: true, get: function () { return remote_js_1.jwksCache; } });
46
- Object.defineProperty(exports, "experimental_jwksCache", { enumerable: true, get: function () { return remote_js_1.experimental_jwksCache; } });
47
- var unsecured_js_1 = require("./jwt/unsecured.js");
48
- Object.defineProperty(exports, "UnsecuredJWT", { enumerable: true, get: function () { return unsecured_js_1.UnsecuredJWT; } });
49
- var export_js_1 = require("./key/export.js");
50
- Object.defineProperty(exports, "exportPKCS8", { enumerable: true, get: function () { return export_js_1.exportPKCS8; } });
51
- Object.defineProperty(exports, "exportSPKI", { enumerable: true, get: function () { return export_js_1.exportSPKI; } });
52
- Object.defineProperty(exports, "exportJWK", { enumerable: true, get: function () { return export_js_1.exportJWK; } });
53
- var import_js_1 = require("./key/import.js");
54
- Object.defineProperty(exports, "importSPKI", { enumerable: true, get: function () { return import_js_1.importSPKI; } });
55
- Object.defineProperty(exports, "importPKCS8", { enumerable: true, get: function () { return import_js_1.importPKCS8; } });
56
- Object.defineProperty(exports, "importX509", { enumerable: true, get: function () { return import_js_1.importX509; } });
57
- Object.defineProperty(exports, "importJWK", { enumerable: true, get: function () { return import_js_1.importJWK; } });
58
- var decode_protected_header_js_1 = require("./util/decode_protected_header.js");
59
- Object.defineProperty(exports, "decodeProtectedHeader", { enumerable: true, get: function () { return decode_protected_header_js_1.decodeProtectedHeader; } });
60
- var decode_jwt_js_1 = require("./util/decode_jwt.js");
61
- Object.defineProperty(exports, "decodeJwt", { enumerable: true, get: function () { return decode_jwt_js_1.decodeJwt; } });
62
- exports.errors = require("./util/errors.js");
63
- var generate_key_pair_js_1 = require("./key/generate_key_pair.js");
64
- Object.defineProperty(exports, "generateKeyPair", { enumerable: true, get: function () { return generate_key_pair_js_1.generateKeyPair; } });
65
- var generate_secret_js_1 = require("./key/generate_secret.js");
66
- Object.defineProperty(exports, "generateSecret", { enumerable: true, get: function () { return generate_secret_js_1.generateSecret; } });
67
- exports.base64url = require("./util/base64url.js");
68
- var runtime_js_1 = require("./util/runtime.js");
69
- Object.defineProperty(exports, "cryptoRuntime", { enumerable: true, get: function () { return runtime_js_1.default; } });
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.compactDecrypt = compactDecrypt;
4
- const decrypt_js_1 = require("../flattened/decrypt.js");
5
- const errors_js_1 = require("../../util/errors.js");
6
- const buffer_utils_js_1 = require("../../lib/buffer_utils.js");
7
- async function compactDecrypt(jwe, key, options) {
8
- if (jwe instanceof Uint8Array) {
9
- jwe = buffer_utils_js_1.decoder.decode(jwe);
10
- }
11
- if (typeof jwe !== 'string') {
12
- throw new errors_js_1.JWEInvalid('Compact JWE must be a string or Uint8Array');
13
- }
14
- const { 0: protectedHeader, 1: encryptedKey, 2: iv, 3: ciphertext, 4: tag, length, } = jwe.split('.');
15
- if (length !== 5) {
16
- throw new errors_js_1.JWEInvalid('Invalid Compact JWE');
17
- }
18
- const decrypted = await (0, decrypt_js_1.flattenedDecrypt)({
19
- ciphertext,
20
- iv: iv || undefined,
21
- protected: protectedHeader,
22
- tag: tag || undefined,
23
- encrypted_key: encryptedKey || undefined,
24
- }, key, options);
25
- const result = { plaintext: decrypted.plaintext, protectedHeader: decrypted.protectedHeader };
26
- if (typeof key === 'function') {
27
- return { ...result, key: decrypted.key };
28
- }
29
- return result;
30
- }
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CompactEncrypt = void 0;
4
- const encrypt_js_1 = require("../flattened/encrypt.js");
5
- class CompactEncrypt {
6
- _flattened;
7
- constructor(plaintext) {
8
- this._flattened = new encrypt_js_1.FlattenedEncrypt(plaintext);
9
- }
10
- setContentEncryptionKey(cek) {
11
- this._flattened.setContentEncryptionKey(cek);
12
- return this;
13
- }
14
- setInitializationVector(iv) {
15
- this._flattened.setInitializationVector(iv);
16
- return this;
17
- }
18
- setProtectedHeader(protectedHeader) {
19
- this._flattened.setProtectedHeader(protectedHeader);
20
- return this;
21
- }
22
- setKeyManagementParameters(parameters) {
23
- this._flattened.setKeyManagementParameters(parameters);
24
- return this;
25
- }
26
- async encrypt(key, options) {
27
- const jwe = await this._flattened.encrypt(key, options);
28
- return [jwe.protected, jwe.encrypted_key, jwe.iv, jwe.ciphertext, jwe.tag].join('.');
29
- }
30
- }
31
- exports.CompactEncrypt = CompactEncrypt;
@@ -1,164 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.flattenedDecrypt = flattenedDecrypt;
4
- const base64url_js_1 = require("../../runtime/base64url.js");
5
- const decrypt_js_1 = require("../../runtime/decrypt.js");
6
- const errors_js_1 = require("../../util/errors.js");
7
- const is_disjoint_js_1 = require("../../lib/is_disjoint.js");
8
- const is_object_js_1 = require("../../lib/is_object.js");
9
- const decrypt_key_management_js_1 = require("../../lib/decrypt_key_management.js");
10
- const buffer_utils_js_1 = require("../../lib/buffer_utils.js");
11
- const cek_js_1 = require("../../lib/cek.js");
12
- const validate_crit_js_1 = require("../../lib/validate_crit.js");
13
- const validate_algorithms_js_1 = require("../../lib/validate_algorithms.js");
14
- async function flattenedDecrypt(jwe, key, options) {
15
- if (!(0, is_object_js_1.default)(jwe)) {
16
- throw new errors_js_1.JWEInvalid('Flattened JWE must be an object');
17
- }
18
- if (jwe.protected === undefined && jwe.header === undefined && jwe.unprotected === undefined) {
19
- throw new errors_js_1.JWEInvalid('JOSE Header missing');
20
- }
21
- if (jwe.iv !== undefined && typeof jwe.iv !== 'string') {
22
- throw new errors_js_1.JWEInvalid('JWE Initialization Vector incorrect type');
23
- }
24
- if (typeof jwe.ciphertext !== 'string') {
25
- throw new errors_js_1.JWEInvalid('JWE Ciphertext missing or incorrect type');
26
- }
27
- if (jwe.tag !== undefined && typeof jwe.tag !== 'string') {
28
- throw new errors_js_1.JWEInvalid('JWE Authentication Tag incorrect type');
29
- }
30
- if (jwe.protected !== undefined && typeof jwe.protected !== 'string') {
31
- throw new errors_js_1.JWEInvalid('JWE Protected Header incorrect type');
32
- }
33
- if (jwe.encrypted_key !== undefined && typeof jwe.encrypted_key !== 'string') {
34
- throw new errors_js_1.JWEInvalid('JWE Encrypted Key incorrect type');
35
- }
36
- if (jwe.aad !== undefined && typeof jwe.aad !== 'string') {
37
- throw new errors_js_1.JWEInvalid('JWE AAD incorrect type');
38
- }
39
- if (jwe.header !== undefined && !(0, is_object_js_1.default)(jwe.header)) {
40
- throw new errors_js_1.JWEInvalid('JWE Shared Unprotected Header incorrect type');
41
- }
42
- if (jwe.unprotected !== undefined && !(0, is_object_js_1.default)(jwe.unprotected)) {
43
- throw new errors_js_1.JWEInvalid('JWE Per-Recipient Unprotected Header incorrect type');
44
- }
45
- let parsedProt;
46
- if (jwe.protected) {
47
- try {
48
- const protectedHeader = (0, base64url_js_1.decode)(jwe.protected);
49
- parsedProt = JSON.parse(buffer_utils_js_1.decoder.decode(protectedHeader));
50
- }
51
- catch {
52
- throw new errors_js_1.JWEInvalid('JWE Protected Header is invalid');
53
- }
54
- }
55
- if (!(0, is_disjoint_js_1.default)(parsedProt, jwe.header, jwe.unprotected)) {
56
- throw new errors_js_1.JWEInvalid('JWE Protected, JWE Unprotected Header, and JWE Per-Recipient Unprotected Header Parameter names must be disjoint');
57
- }
58
- const joseHeader = {
59
- ...parsedProt,
60
- ...jwe.header,
61
- ...jwe.unprotected,
62
- };
63
- (0, validate_crit_js_1.default)(errors_js_1.JWEInvalid, new Map(), options?.crit, parsedProt, joseHeader);
64
- if (joseHeader.zip !== undefined) {
65
- throw new errors_js_1.JOSENotSupported('JWE "zip" (Compression Algorithm) Header Parameter is not supported.');
66
- }
67
- const { alg, enc } = joseHeader;
68
- if (typeof alg !== 'string' || !alg) {
69
- throw new errors_js_1.JWEInvalid('missing JWE Algorithm (alg) in JWE Header');
70
- }
71
- if (typeof enc !== 'string' || !enc) {
72
- throw new errors_js_1.JWEInvalid('missing JWE Encryption Algorithm (enc) in JWE Header');
73
- }
74
- const keyManagementAlgorithms = options && (0, validate_algorithms_js_1.default)('keyManagementAlgorithms', options.keyManagementAlgorithms);
75
- const contentEncryptionAlgorithms = options &&
76
- (0, validate_algorithms_js_1.default)('contentEncryptionAlgorithms', options.contentEncryptionAlgorithms);
77
- if ((keyManagementAlgorithms && !keyManagementAlgorithms.has(alg)) ||
78
- (!keyManagementAlgorithms && alg.startsWith('PBES2'))) {
79
- throw new errors_js_1.JOSEAlgNotAllowed('"alg" (Algorithm) Header Parameter value not allowed');
80
- }
81
- if (contentEncryptionAlgorithms && !contentEncryptionAlgorithms.has(enc)) {
82
- throw new errors_js_1.JOSEAlgNotAllowed('"enc" (Encryption Algorithm) Header Parameter value not allowed');
83
- }
84
- let encryptedKey;
85
- if (jwe.encrypted_key !== undefined) {
86
- try {
87
- encryptedKey = (0, base64url_js_1.decode)(jwe.encrypted_key);
88
- }
89
- catch {
90
- throw new errors_js_1.JWEInvalid('Failed to base64url decode the encrypted_key');
91
- }
92
- }
93
- let resolvedKey = false;
94
- if (typeof key === 'function') {
95
- key = await key(parsedProt, jwe);
96
- resolvedKey = true;
97
- }
98
- let cek;
99
- try {
100
- cek = await (0, decrypt_key_management_js_1.default)(alg, key, encryptedKey, joseHeader, options);
101
- }
102
- catch (err) {
103
- if (err instanceof TypeError || err instanceof errors_js_1.JWEInvalid || err instanceof errors_js_1.JOSENotSupported) {
104
- throw err;
105
- }
106
- cek = (0, cek_js_1.default)(enc);
107
- }
108
- let iv;
109
- let tag;
110
- if (jwe.iv !== undefined) {
111
- try {
112
- iv = (0, base64url_js_1.decode)(jwe.iv);
113
- }
114
- catch {
115
- throw new errors_js_1.JWEInvalid('Failed to base64url decode the iv');
116
- }
117
- }
118
- if (jwe.tag !== undefined) {
119
- try {
120
- tag = (0, base64url_js_1.decode)(jwe.tag);
121
- }
122
- catch {
123
- throw new errors_js_1.JWEInvalid('Failed to base64url decode the tag');
124
- }
125
- }
126
- const protectedHeader = buffer_utils_js_1.encoder.encode(jwe.protected ?? '');
127
- let additionalData;
128
- if (jwe.aad !== undefined) {
129
- additionalData = (0, buffer_utils_js_1.concat)(protectedHeader, buffer_utils_js_1.encoder.encode('.'), buffer_utils_js_1.encoder.encode(jwe.aad));
130
- }
131
- else {
132
- additionalData = protectedHeader;
133
- }
134
- let ciphertext;
135
- try {
136
- ciphertext = (0, base64url_js_1.decode)(jwe.ciphertext);
137
- }
138
- catch {
139
- throw new errors_js_1.JWEInvalid('Failed to base64url decode the ciphertext');
140
- }
141
- const plaintext = await (0, decrypt_js_1.default)(enc, cek, ciphertext, iv, tag, additionalData);
142
- const result = { plaintext };
143
- if (jwe.protected !== undefined) {
144
- result.protectedHeader = parsedProt;
145
- }
146
- if (jwe.aad !== undefined) {
147
- try {
148
- result.additionalAuthenticatedData = (0, base64url_js_1.decode)(jwe.aad);
149
- }
150
- catch {
151
- throw new errors_js_1.JWEInvalid('Failed to base64url decode the aad');
152
- }
153
- }
154
- if (jwe.unprotected !== undefined) {
155
- result.sharedUnprotectedHeader = jwe.unprotected;
156
- }
157
- if (jwe.header !== undefined) {
158
- result.unprotectedHeader = jwe.header;
159
- }
160
- if (resolvedKey) {
161
- return { ...result, key };
162
- }
163
- return result;
164
- }
@@ -1,165 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FlattenedEncrypt = void 0;
4
- const base64url_js_1 = require("../../runtime/base64url.js");
5
- const private_symbols_js_1 = require("../../lib/private_symbols.js");
6
- const encrypt_js_1 = require("../../runtime/encrypt.js");
7
- const encrypt_key_management_js_1 = require("../../lib/encrypt_key_management.js");
8
- const errors_js_1 = require("../../util/errors.js");
9
- const is_disjoint_js_1 = require("../../lib/is_disjoint.js");
10
- const buffer_utils_js_1 = require("../../lib/buffer_utils.js");
11
- const validate_crit_js_1 = require("../../lib/validate_crit.js");
12
- class FlattenedEncrypt {
13
- _plaintext;
14
- _protectedHeader;
15
- _sharedUnprotectedHeader;
16
- _unprotectedHeader;
17
- _aad;
18
- _cek;
19
- _iv;
20
- _keyManagementParameters;
21
- constructor(plaintext) {
22
- if (!(plaintext instanceof Uint8Array)) {
23
- throw new TypeError('plaintext must be an instance of Uint8Array');
24
- }
25
- this._plaintext = plaintext;
26
- }
27
- setKeyManagementParameters(parameters) {
28
- if (this._keyManagementParameters) {
29
- throw new TypeError('setKeyManagementParameters can only be called once');
30
- }
31
- this._keyManagementParameters = parameters;
32
- return this;
33
- }
34
- setProtectedHeader(protectedHeader) {
35
- if (this._protectedHeader) {
36
- throw new TypeError('setProtectedHeader can only be called once');
37
- }
38
- this._protectedHeader = protectedHeader;
39
- return this;
40
- }
41
- setSharedUnprotectedHeader(sharedUnprotectedHeader) {
42
- if (this._sharedUnprotectedHeader) {
43
- throw new TypeError('setSharedUnprotectedHeader can only be called once');
44
- }
45
- this._sharedUnprotectedHeader = sharedUnprotectedHeader;
46
- return this;
47
- }
48
- setUnprotectedHeader(unprotectedHeader) {
49
- if (this._unprotectedHeader) {
50
- throw new TypeError('setUnprotectedHeader can only be called once');
51
- }
52
- this._unprotectedHeader = unprotectedHeader;
53
- return this;
54
- }
55
- setAdditionalAuthenticatedData(aad) {
56
- this._aad = aad;
57
- return this;
58
- }
59
- setContentEncryptionKey(cek) {
60
- if (this._cek) {
61
- throw new TypeError('setContentEncryptionKey can only be called once');
62
- }
63
- this._cek = cek;
64
- return this;
65
- }
66
- setInitializationVector(iv) {
67
- if (this._iv) {
68
- throw new TypeError('setInitializationVector can only be called once');
69
- }
70
- this._iv = iv;
71
- return this;
72
- }
73
- async encrypt(key, options) {
74
- if (!this._protectedHeader && !this._unprotectedHeader && !this._sharedUnprotectedHeader) {
75
- throw new errors_js_1.JWEInvalid('either setProtectedHeader, setUnprotectedHeader, or sharedUnprotectedHeader must be called before #encrypt()');
76
- }
77
- if (!(0, is_disjoint_js_1.default)(this._protectedHeader, this._unprotectedHeader, this._sharedUnprotectedHeader)) {
78
- throw new errors_js_1.JWEInvalid('JWE Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint');
79
- }
80
- const joseHeader = {
81
- ...this._protectedHeader,
82
- ...this._unprotectedHeader,
83
- ...this._sharedUnprotectedHeader,
84
- };
85
- (0, validate_crit_js_1.default)(errors_js_1.JWEInvalid, new Map(), options?.crit, this._protectedHeader, joseHeader);
86
- if (joseHeader.zip !== undefined) {
87
- throw new errors_js_1.JOSENotSupported('JWE "zip" (Compression Algorithm) Header Parameter is not supported.');
88
- }
89
- const { alg, enc } = joseHeader;
90
- if (typeof alg !== 'string' || !alg) {
91
- throw new errors_js_1.JWEInvalid('JWE "alg" (Algorithm) Header Parameter missing or invalid');
92
- }
93
- if (typeof enc !== 'string' || !enc) {
94
- throw new errors_js_1.JWEInvalid('JWE "enc" (Encryption Algorithm) Header Parameter missing or invalid');
95
- }
96
- let encryptedKey;
97
- if (this._cek && (alg === 'dir' || alg === 'ECDH-ES')) {
98
- throw new TypeError(`setContentEncryptionKey cannot be called with JWE "alg" (Algorithm) Header ${alg}`);
99
- }
100
- let cek;
101
- {
102
- let parameters;
103
- ({ cek, encryptedKey, parameters } = await (0, encrypt_key_management_js_1.default)(alg, enc, key, this._cek, this._keyManagementParameters));
104
- if (parameters) {
105
- if (options && private_symbols_js_1.unprotected in options) {
106
- if (!this._unprotectedHeader) {
107
- this.setUnprotectedHeader(parameters);
108
- }
109
- else {
110
- this._unprotectedHeader = { ...this._unprotectedHeader, ...parameters };
111
- }
112
- }
113
- else if (!this._protectedHeader) {
114
- this.setProtectedHeader(parameters);
115
- }
116
- else {
117
- this._protectedHeader = { ...this._protectedHeader, ...parameters };
118
- }
119
- }
120
- }
121
- let additionalData;
122
- let protectedHeader;
123
- let aadMember;
124
- if (this._protectedHeader) {
125
- protectedHeader = buffer_utils_js_1.encoder.encode((0, base64url_js_1.encode)(JSON.stringify(this._protectedHeader)));
126
- }
127
- else {
128
- protectedHeader = buffer_utils_js_1.encoder.encode('');
129
- }
130
- if (this._aad) {
131
- aadMember = (0, base64url_js_1.encode)(this._aad);
132
- additionalData = (0, buffer_utils_js_1.concat)(protectedHeader, buffer_utils_js_1.encoder.encode('.'), buffer_utils_js_1.encoder.encode(aadMember));
133
- }
134
- else {
135
- additionalData = protectedHeader;
136
- }
137
- const { ciphertext, tag, iv } = await (0, encrypt_js_1.default)(enc, this._plaintext, cek, this._iv, additionalData);
138
- const jwe = {
139
- ciphertext: (0, base64url_js_1.encode)(ciphertext),
140
- };
141
- if (iv) {
142
- jwe.iv = (0, base64url_js_1.encode)(iv);
143
- }
144
- if (tag) {
145
- jwe.tag = (0, base64url_js_1.encode)(tag);
146
- }
147
- if (encryptedKey) {
148
- jwe.encrypted_key = (0, base64url_js_1.encode)(encryptedKey);
149
- }
150
- if (aadMember) {
151
- jwe.aad = aadMember;
152
- }
153
- if (this._protectedHeader) {
154
- jwe.protected = buffer_utils_js_1.decoder.decode(protectedHeader);
155
- }
156
- if (this._sharedUnprotectedHeader) {
157
- jwe.unprotected = this._sharedUnprotectedHeader;
158
- }
159
- if (this._unprotectedHeader) {
160
- jwe.header = this._unprotectedHeader;
161
- }
162
- return jwe;
163
- }
164
- }
165
- exports.FlattenedEncrypt = FlattenedEncrypt;
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generalDecrypt = generalDecrypt;
4
- const decrypt_js_1 = require("../flattened/decrypt.js");
5
- const errors_js_1 = require("../../util/errors.js");
6
- const is_object_js_1 = require("../../lib/is_object.js");
7
- async function generalDecrypt(jwe, key, options) {
8
- if (!(0, is_object_js_1.default)(jwe)) {
9
- throw new errors_js_1.JWEInvalid('General JWE must be an object');
10
- }
11
- if (!Array.isArray(jwe.recipients) || !jwe.recipients.every(is_object_js_1.default)) {
12
- throw new errors_js_1.JWEInvalid('JWE Recipients missing or incorrect type');
13
- }
14
- if (!jwe.recipients.length) {
15
- throw new errors_js_1.JWEInvalid('JWE Recipients has no members');
16
- }
17
- for (const recipient of jwe.recipients) {
18
- try {
19
- return await (0, decrypt_js_1.flattenedDecrypt)({
20
- aad: jwe.aad,
21
- ciphertext: jwe.ciphertext,
22
- encrypted_key: recipient.encrypted_key,
23
- header: recipient.header,
24
- iv: jwe.iv,
25
- protected: jwe.protected,
26
- tag: jwe.tag,
27
- unprotected: jwe.unprotected,
28
- }, key, options);
29
- }
30
- catch {
31
- }
32
- }
33
- throw new errors_js_1.JWEDecryptionFailed();
34
- }