jose 4.1.3 → 4.2.1

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 (68) hide show
  1. package/README.md +4 -1
  2. package/dist/browser/index.js +1 -0
  3. package/dist/browser/jwe/flattened/encrypt.js +15 -4
  4. package/dist/browser/jwe/general/decrypt.js +3 -0
  5. package/dist/browser/jwe/general/encrypt.js +156 -0
  6. package/dist/browser/jws/general/sign.js +6 -16
  7. package/dist/browser/key/import.js +2 -1
  8. package/dist/browser/lib/cek.js +5 -6
  9. package/dist/browser/lib/decrypt_key_management.js +1 -1
  10. package/dist/browser/lib/encrypt_key_management.js +1 -1
  11. package/dist/browser/lib/iv.js +4 -11
  12. package/dist/browser/runtime/aeskw.js +2 -1
  13. package/dist/browser/runtime/asn1.js +2 -1
  14. package/dist/browser/runtime/check_key_length.js +0 -7
  15. package/dist/browser/runtime/decrypt.js +2 -1
  16. package/dist/browser/runtime/ecdhes.js +5 -4
  17. package/dist/browser/runtime/encrypt.js +2 -1
  18. package/dist/browser/runtime/get_sign_verify_key.js +3 -2
  19. package/dist/browser/runtime/key_to_jwk.js +2 -1
  20. package/dist/browser/runtime/pbes2kw.js +2 -1
  21. package/dist/browser/runtime/rsaes.js +3 -2
  22. package/dist/node/cjs/index.js +9 -7
  23. package/dist/node/cjs/jwe/flattened/encrypt.js +16 -5
  24. package/dist/node/cjs/jwe/general/decrypt.js +3 -0
  25. package/dist/node/cjs/jwe/general/encrypt.js +160 -0
  26. package/dist/node/cjs/jws/general/sign.js +6 -16
  27. package/dist/node/cjs/key/import.js +2 -1
  28. package/dist/node/cjs/lib/cek.js +5 -6
  29. package/dist/node/cjs/lib/decrypt_key_management.js +1 -1
  30. package/dist/node/cjs/lib/encrypt_key_management.js +1 -1
  31. package/dist/node/cjs/lib/iv.js +4 -11
  32. package/dist/node/cjs/runtime/aeskw.js +4 -3
  33. package/dist/node/cjs/runtime/asn1.js +2 -1
  34. package/dist/node/cjs/runtime/decrypt.js +13 -10
  35. package/dist/node/cjs/runtime/ecdhes.js +5 -4
  36. package/dist/node/cjs/runtime/encrypt.js +7 -5
  37. package/dist/node/cjs/runtime/get_named_curve.js +2 -1
  38. package/dist/node/cjs/runtime/get_sign_verify_key.js +3 -2
  39. package/dist/node/cjs/runtime/key_to_jwk.js +2 -1
  40. package/dist/node/cjs/runtime/pbes2kw.js +2 -1
  41. package/dist/node/cjs/runtime/rsaes.js +4 -3
  42. package/dist/node/cjs/runtime/sign.js +0 -4
  43. package/dist/node/esm/index.js +1 -0
  44. package/dist/node/esm/jwe/flattened/encrypt.js +15 -4
  45. package/dist/node/esm/jwe/general/decrypt.js +3 -0
  46. package/dist/node/esm/jwe/general/encrypt.js +156 -0
  47. package/dist/node/esm/jws/general/sign.js +6 -16
  48. package/dist/node/esm/key/import.js +2 -1
  49. package/dist/node/esm/lib/cek.js +5 -6
  50. package/dist/node/esm/lib/decrypt_key_management.js +1 -1
  51. package/dist/node/esm/lib/encrypt_key_management.js +1 -1
  52. package/dist/node/esm/lib/iv.js +4 -11
  53. package/dist/node/esm/runtime/aeskw.js +4 -3
  54. package/dist/node/esm/runtime/asn1.js +2 -1
  55. package/dist/node/esm/runtime/decrypt.js +13 -10
  56. package/dist/node/esm/runtime/ecdhes.js +5 -4
  57. package/dist/node/esm/runtime/encrypt.js +7 -5
  58. package/dist/node/esm/runtime/get_named_curve.js +2 -1
  59. package/dist/node/esm/runtime/get_sign_verify_key.js +3 -2
  60. package/dist/node/esm/runtime/key_to_jwk.js +2 -1
  61. package/dist/node/esm/runtime/pbes2kw.js +2 -1
  62. package/dist/node/esm/runtime/rsaes.js +4 -3
  63. package/dist/node/esm/runtime/sign.js +0 -4
  64. package/dist/types/index.d.ts +3 -1
  65. package/dist/types/jwe/flattened/encrypt.d.ts +1 -0
  66. package/dist/types/jwe/general/encrypt.d.ts +17 -0
  67. package/dist/types/types.d.ts +2 -1
  68. package/package.json +1 -1
@@ -14,10 +14,6 @@ else {
14
14
  const sign = async (alg, key, data) => {
15
15
  const keyObject = getSignKey(alg, key, 'sign');
16
16
  if (alg.startsWith('HS')) {
17
- const bitlen = parseInt(alg.substr(-3), 10);
18
- if (!keyObject.symmetricKeySize || keyObject.symmetricKeySize << 3 < bitlen) {
19
- throw new TypeError(`${alg} requires symmetric keys to be ${bitlen} bits or larger`);
20
- }
21
17
  const hmac = crypto.createHmac(hmacDigest(alg), keyObject);
22
18
  hmac.update(data);
23
19
  return hmac.digest();
@@ -4,6 +4,8 @@ export { flattenedDecrypt } from './jwe/flattened/decrypt';
4
4
  export type { FlattenedDecryptGetKey } from './jwe/flattened/decrypt';
5
5
  export { generalDecrypt } from './jwe/general/decrypt';
6
6
  export type { GeneralDecryptGetKey } from './jwe/general/decrypt';
7
+ export { GeneralEncrypt } from './jwe/general/encrypt';
8
+ export type { Recipient } from './jwe/general/encrypt';
7
9
  export { compactVerify } from './jws/compact/verify';
8
10
  export type { CompactVerifyGetKey } from './jws/compact/verify';
9
11
  export { flattenedVerify } from './jws/flattened/verify';
@@ -40,4 +42,4 @@ export type { GenerateKeyPairResult, GenerateKeyPairOptions } from './key/genera
40
42
  export { generateSecret } from './key/generate_secret';
41
43
  export type { GenerateSecretOptions } from './key/generate_secret';
42
44
  export * as base64url from './util/base64url';
43
- export type { KeyLike, JWK, FlattenedJWSInput, GeneralJWSInput, FlattenedJWS, GeneralJWS, JoseHeaderParameters, JWSHeaderParameters, JWEKeyManagementHeaderParameters, FlattenedJWE, GeneralJWE, JWEHeaderParameters, CritOption, DecryptOptions, EncryptOptions, JWTClaimVerificationOptions, VerifyOptions, SignOptions, JWTPayload, DeflateFunction, InflateFunction, FlattenedDecryptResult, GeneralDecryptResult, CompactDecryptResult, FlattenedVerifyResult, GeneralVerifyResult, CompactVerifyResult, JWTVerifyResult, JWTDecryptResult, ResolvedKey, } from './types';
45
+ export type { KeyLike, JWK, FlattenedJWSInput, GeneralJWSInput, FlattenedJWS, GeneralJWS, JoseHeaderParameters, JWSHeaderParameters, JWEKeyManagementHeaderParameters, FlattenedJWE, GeneralJWE, JWEHeaderParameters, CritOption, DeflateOption, DecryptOptions, EncryptOptions, JWTClaimVerificationOptions, VerifyOptions, SignOptions, JWTPayload, DeflateFunction, InflateFunction, FlattenedDecryptResult, GeneralDecryptResult, CompactDecryptResult, FlattenedVerifyResult, GeneralVerifyResult, CompactVerifyResult, JWTVerifyResult, JWTDecryptResult, ResolvedKey, } from './types';
@@ -1,4 +1,5 @@
1
1
  import type { KeyLike, FlattenedJWE, JWEHeaderParameters, JWEKeyManagementHeaderParameters, EncryptOptions } from '../../types';
2
+ export declare const unprotected: unique symbol;
2
3
  export declare class FlattenedEncrypt {
3
4
  private _plaintext;
4
5
  private _protectedHeader;
@@ -0,0 +1,17 @@
1
+ import type { KeyLike, GeneralJWE, JWEHeaderParameters, CritOption, DeflateOption } from '../../types';
2
+ export interface Recipient {
3
+ setUnprotectedHeader(unprotectedHeader: JWEHeaderParameters): Recipient;
4
+ }
5
+ export declare class GeneralEncrypt {
6
+ private _plaintext;
7
+ private _recipients;
8
+ private _protectedHeader;
9
+ private _unprotectedHeader;
10
+ private _aad;
11
+ constructor(plaintext: Uint8Array);
12
+ addRecipient(key: KeyLike | Uint8Array, options?: CritOption): Recipient;
13
+ setProtectedHeader(protectedHeader: JWEHeaderParameters): this;
14
+ setSharedUnprotectedHeader(sharedUnprotectedHeader: JWEHeaderParameters): this;
15
+ setAdditionalAuthenticatedData(aad: Uint8Array): this;
16
+ encrypt(options?: DeflateOption): Promise<GeneralJWE>;
17
+ }
@@ -200,9 +200,10 @@ export interface DecryptOptions extends CritOption {
200
200
  contentEncryptionAlgorithms?: string[]
201
201
  inflateRaw?: InflateFunction
202
202
  }
203
- export interface EncryptOptions extends CritOption {
203
+ export interface DeflateOption {
204
204
  deflateRaw?: DeflateFunction
205
205
  }
206
+ export interface EncryptOptions extends CritOption, DeflateOption {}
206
207
  export interface JWTClaimVerificationOptions {
207
208
  audience?: string | string[]
208
209
  clockTolerance?: string | number
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jose",
3
- "version": "4.1.3",
3
+ "version": "4.2.1",
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",