jose 6.2.11 → 6.2.13
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.
- package/README.md +2 -2
- package/dist/types/index.d.ts +1 -2
- package/dist/types/jwe/compact/decrypt.d.ts +9 -12
- package/dist/types/jwe/compact/encrypt.d.ts +14 -17
- package/dist/types/jwe/flattened/decrypt.d.ts +9 -12
- package/dist/types/jwe/flattened/encrypt.d.ts +17 -20
- package/dist/types/jwe/general/decrypt.d.ts +12 -17
- package/dist/types/jwe/general/encrypt.d.ts +19 -22
- package/dist/types/jwk/embedded.d.ts +3 -1
- package/dist/types/jwk/thumbprint.d.ts +4 -6
- package/dist/types/jwks/local.d.ts +5 -4
- package/dist/types/jwks/remote.d.ts +20 -21
- package/dist/types/jws/compact/sign.d.ts +7 -6
- package/dist/types/jws/compact/verify.d.ts +9 -12
- package/dist/types/jws/flattened/sign.d.ts +8 -7
- package/dist/types/jws/flattened/verify.d.ts +10 -12
- package/dist/types/jws/general/sign.d.ts +16 -17
- package/dist/types/jws/general/verify.d.ts +14 -18
- package/dist/types/jwt/decrypt.d.ts +15 -11
- package/dist/types/jwt/encrypt.d.ts +25 -23
- package/dist/types/jwt/sign.d.ts +4 -8
- package/dist/types/jwt/unsecured.d.ts +3 -7
- package/dist/types/jwt/verify.d.ts +12 -7
- package/dist/types/key/export.d.ts +6 -6
- package/dist/types/key/generate_key_pair.d.ts +9 -14
- package/dist/types/key/generate_secret.d.ts +10 -10
- package/dist/types/key/import.d.ts +21 -20
- package/dist/types/types.d.ts +217 -254
- package/dist/types/util/base64url.d.ts +7 -7
- package/dist/types/util/decode_jwt.d.ts +6 -1
- package/dist/types/util/decode_protected_header.d.ts +4 -3
- package/dist/types/util/errors.d.ts +30 -41
- package/dist/webapi/jwe/compact/decrypt.js +1 -2
- package/dist/webapi/jwe/compact/encrypt.js +9 -26
- package/dist/webapi/jwe/flattened/decrypt.js +3 -3
- package/dist/webapi/jwe/flattened/encrypt.js +11 -30
- package/dist/webapi/jwe/general/decrypt.js +6 -6
- package/dist/webapi/jwe/general/encrypt.js +36 -60
- package/dist/webapi/jwk/embedded.js +3 -4
- package/dist/webapi/jwk/thumbprint.js +11 -14
- package/dist/webapi/jwks/local.js +18 -11
- package/dist/webapi/jwks/remote.js +5 -5
- package/dist/webapi/jws/compact/sign.js +2 -4
- package/dist/webapi/jws/compact/verify.js +2 -2
- package/dist/webapi/jws/flattened/sign.js +8 -15
- package/dist/webapi/jws/flattened/verify.js +4 -14
- package/dist/webapi/jws/general/sign.js +6 -13
- package/dist/webapi/jws/general/verify.js +8 -10
- package/dist/webapi/jwt/decrypt.js +2 -3
- package/dist/webapi/jwt/encrypt.js +13 -27
- package/dist/webapi/jwt/sign.js +3 -3
- package/dist/webapi/jwt/unsecured.js +4 -5
- package/dist/webapi/jwt/verify.js +4 -4
- package/dist/webapi/key/export.js +12 -16
- package/dist/webapi/key/generate_key_pair.js +4 -13
- package/dist/webapi/key/generate_secret.js +5 -5
- package/dist/webapi/key/import.js +5 -9
- package/dist/webapi/lib/asn1.js +4 -6
- package/dist/webapi/lib/buffer_utils.js +39 -4
- package/dist/webapi/lib/content_encryption.js +29 -37
- package/dist/webapi/lib/deflate.js +9 -19
- package/dist/webapi/lib/jwe_algorithms.js +0 -4
- package/dist/webapi/lib/jwe_decrypt.js +30 -63
- package/dist/webapi/lib/jwe_encrypt.js +27 -60
- package/dist/webapi/lib/jws_algorithms.js +2 -2
- package/dist/webapi/lib/jws_sign.js +31 -45
- package/dist/webapi/lib/jws_verify.js +43 -48
- package/dist/webapi/lib/jwt_claims_set.js +45 -44
- package/dist/webapi/lib/key.js +122 -62
- package/dist/webapi/lib/key_management.js +57 -92
- package/dist/webapi/lib/{options.js → validate.js} +64 -3
- package/dist/webapi/util/base64url.js +5 -19
- package/dist/webapi/util/decode_jwt.js +13 -13
- package/dist/webapi/util/decode_protected_header.js +6 -6
- package/package.json +1 -1
- package/dist/webapi/lib/base64.js +0 -20
- package/dist/webapi/lib/crypto_key.js +0 -27
- package/dist/webapi/lib/helpers.js +0 -45
- package/dist/webapi/lib/invalid_key_input.js +0 -12
- package/dist/webapi/lib/is_key_like.js +0 -19
- package/dist/webapi/lib/jwk_metadata.js +0 -19
- package/dist/webapi/lib/jwk_to_key.js +0 -10
- package/dist/webapi/lib/key_options.js +0 -8
- package/dist/webapi/lib/signing.js +0 -22
- package/dist/webapi/lib/type_checks.js +0 -30
package/README.md
CHANGED
|
@@ -70,7 +70,7 @@ The `jose` module supports importing, exporting, and generating keys and secrets
|
|
|
70
70
|
|
|
71
71
|
### JSON Web Signature (JWS)
|
|
72
72
|
|
|
73
|
-
The `jose` module supports
|
|
73
|
+
The `jose` module supports digital signature and MAC computation and validation over arbitrary JWS Payloads using the JWS Compact Serialization and the flattened and general JWS JSON Serialization syntaxes ([RFC 7515, Section 7](https://www.rfc-editor.org/info/rfc7515/#section-7)).
|
|
74
74
|
|
|
75
75
|
- Signing - [Compact](docs/jws/compact/sign/classes/CompactSign.md), [Flattened JSON](docs/jws/flattened/sign/classes/FlattenedSign.md), [General JSON](docs/jws/general/sign/classes/GeneralSign.md)
|
|
76
76
|
- Verification - [Compact](docs/jws/compact/verify/functions/compactVerify.md), [Flattened JSON](docs/jws/flattened/verify/functions/flattenedVerify.md), [General JSON](docs/jws/general/verify/functions/generalVerify.md)
|
|
@@ -81,7 +81,7 @@ The `jose` module supports signing and verification of JWS messages with arbitra
|
|
|
81
81
|
|
|
82
82
|
### JSON Web Encryption (JWE)
|
|
83
83
|
|
|
84
|
-
The `jose` module supports encryption and decryption of
|
|
84
|
+
The `jose` module supports encryption and authenticated decryption of arbitrary plaintext using the JWE Compact Serialization and the flattened and general JWE JSON Serialization syntaxes ([RFC 7516, Section 7](https://www.rfc-editor.org/info/rfc7516/#section-7)).
|
|
85
85
|
|
|
86
86
|
- Encryption - [Compact](docs/jwe/compact/encrypt/classes/CompactEncrypt.md), [Flattened JSON](docs/jwe/flattened/encrypt/classes/FlattenedEncrypt.md), [General JSON](docs/jwe/general/encrypt/classes/GeneralEncrypt.md)
|
|
87
87
|
- Decryption - [Compact](docs/jwe/compact/decrypt/functions/compactDecrypt.md), [Flattened JSON](docs/jwe/flattened/decrypt/functions/flattenedDecrypt.md), [General JSON](docs/jwe/general/decrypt/functions/generalDecrypt.md)
|
package/dist/types/index.d.ts
CHANGED
|
@@ -48,8 +48,7 @@ import * as base64url from './util/base64url.js';
|
|
|
48
48
|
export { base64url };
|
|
49
49
|
export type { AnyJWK, CompactDecryptResult, CompactJWEHeaderParameters, CompactJWSHeaderParameters, CompactVerifyResult, CritOption, CryptoKey, DecryptOptions, EncryptOptions, FlattenedDecryptResult, FlattenedJWE, FlattenedJWS, FlattenedJWSInput, FlattenedVerifyResult, GeneralDecryptResult, GeneralJWE, GeneralJWS, GeneralJWSInput, GeneralVerifyResult, GetKeyFunction, JoseHeaderParameters, JSONWebKeySet, JWEContentEncryptionAlgorithm, JWEHeaderParameters, JWEKeyManagementAlgorithm, JWEKeyManagementHeaderParameters, JWK_AKP_Private, JWK_AKP_Public, JWK_EC_Private, JWK_EC_Public, JWK_oct, JWK_OKP_Private, JWK_OKP_Public, JWK_RSA_Private, JWK_RSA_Public, JWK, JWKKeyType, JWKParameters, JWSAlgorithm, JWSHeaderParameters, JWTClaimVerificationOptions, JWTDecryptResult, JWTHeaderParameters, JWTPayload, JWTVerifyResult, KeyInput, KeyObject, ProduceJWT, ResolvedKey, SignOptions, VerifyOptions, } from './types.d.ts';
|
|
50
50
|
/**
|
|
51
|
-
*
|
|
52
|
-
* to `"WebCryptoAPI"`
|
|
51
|
+
* Identified the loaded runtime-specific build in prior releases; now always `"WebCryptoAPI"`.
|
|
53
52
|
*
|
|
54
53
|
* @deprecated Remove any runtime branching on this value; it is always `"WebCryptoAPI"`.
|
|
55
54
|
*/
|
|
@@ -1,28 +1,25 @@
|
|
|
1
1
|
import type * as t from '../../types.d.ts';
|
|
2
|
-
/**
|
|
2
|
+
/** Resolves a key for Compact JWE decryption from unverified headers and token data. */
|
|
3
3
|
export interface CompactDecryptGetKey<KeyType extends t.CryptoKey | Uint8Array = t.CryptoKey | Uint8Array> extends t.GetKeyFunction<t.CompactJWEHeaderParameters, t.FlattenedJWE, KeyType | t.KeyObject | t.JWK> {
|
|
4
4
|
}
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Authenticates and decrypts a JWE Compact Serialization.
|
|
7
7
|
*
|
|
8
|
-
* @param key Private
|
|
8
|
+
* @param key Private key or shared secret. See
|
|
9
9
|
* {@link https://github.com/panva/jose/issues/210#jwe-alg Algorithm Key Requirements}.
|
|
10
10
|
*/
|
|
11
11
|
export declare function compactDecrypt(jwe: string | Uint8Array, key: t.KeyInput, options?: t.DecryptOptions): Promise<t.CompactDecryptResult>;
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* Authenticates and decrypts a JWE Compact Serialization with a dynamically resolved key, included
|
|
14
|
+
* in the result.
|
|
15
15
|
*
|
|
16
|
-
* @param getKey
|
|
17
|
-
* {@link https://github.com/panva/jose/issues/210#jwe-alg Algorithm Key Requirements}.
|
|
16
|
+
* @param getKey Resolves a private key or shared secret from unverified token data.
|
|
18
17
|
*/
|
|
19
18
|
export declare function compactDecrypt<KeyType extends t.CryptoKey | Uint8Array = t.CryptoKey | Uint8Array>(jwe: string | Uint8Array, getKey: CompactDecryptGetKey<KeyType>, options?: t.DecryptOptions): Promise<t.CompactDecryptResult & t.ResolvedKey<KeyType>>;
|
|
20
19
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* function was used.
|
|
20
|
+
* Authenticates and decrypts a JWE Compact Serialization with a key or key resolver. The result
|
|
21
|
+
* includes `key` only when a resolver is used.
|
|
24
22
|
*
|
|
25
|
-
* @param key Private
|
|
26
|
-
* {@link https://github.com/panva/jose/issues/210#jwe-alg Algorithm Key Requirements}.
|
|
23
|
+
* @param key Private key or shared secret, or a function resolving one.
|
|
27
24
|
*/
|
|
28
25
|
export declare function compactDecrypt(jwe: string | Uint8Array, key: t.KeyInput | CompactDecryptGetKey, options?: t.DecryptOptions): Promise<t.CompactDecryptResult & Partial<t.ResolvedKey>>;
|
|
@@ -1,42 +1,39 @@
|
|
|
1
1
|
import type * as t from '../../types.d.ts';
|
|
2
|
-
/**
|
|
2
|
+
/** Produces JWE Compact Serialization using authenticated encryption. */
|
|
3
3
|
export declare class CompactEncrypt {
|
|
4
4
|
#private;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Creates an encryptor for JWE Compact Serialization.
|
|
7
7
|
*
|
|
8
8
|
* @param plaintext Binary representation of the plaintext to encrypt.
|
|
9
9
|
*/
|
|
10
10
|
constructor(plaintext: Uint8Array);
|
|
11
11
|
/**
|
|
12
|
-
* Sets a content encryption key
|
|
13
|
-
*
|
|
12
|
+
* Sets a content encryption key instead of generating a random one for the JWE "enc" algorithm.
|
|
13
|
+
* May only be called once.
|
|
14
14
|
*
|
|
15
|
-
* @deprecated
|
|
16
|
-
* validation purposes.
|
|
15
|
+
* @deprecated Use only for testing and vector validation.
|
|
17
16
|
*/
|
|
18
17
|
setContentEncryptionKey(cek: Uint8Array): this;
|
|
19
18
|
/**
|
|
20
|
-
* Sets the
|
|
21
|
-
*
|
|
19
|
+
* Sets the content encryption IV instead of generating a random one for the JWE "enc" algorithm.
|
|
20
|
+
* May only be called once.
|
|
22
21
|
*
|
|
23
|
-
* @deprecated
|
|
24
|
-
* validation purposes.
|
|
22
|
+
* @deprecated Use only for testing and vector validation.
|
|
25
23
|
*/
|
|
26
24
|
setInitializationVector(iv: Uint8Array): this;
|
|
27
|
-
/** Sets the JWE Protected Header
|
|
25
|
+
/** Sets the JWE Protected Header. May only be called once. */
|
|
28
26
|
setProtectedHeader(protectedHeader: t.CompactJWEHeaderParameters): this;
|
|
29
27
|
/**
|
|
30
|
-
* Sets
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* appropriate JOSE Header.
|
|
28
|
+
* Sets key management inputs such as ECDH-ES "apu"/"apv" or PBES2 "p2c". Use this method instead
|
|
29
|
+
* of header setters; the resulting parameters are added to the JOSE Header. May only be called
|
|
30
|
+
* once.
|
|
34
31
|
*/
|
|
35
32
|
setKeyManagementParameters(parameters: t.JWEKeyManagementHeaderParameters): this;
|
|
36
33
|
/**
|
|
37
|
-
* Encrypts and
|
|
34
|
+
* Encrypts the plaintext and returns the JWE Compact Serialization.
|
|
38
35
|
*
|
|
39
|
-
* @param key Public
|
|
36
|
+
* @param key Public key or shared secret. See
|
|
40
37
|
* {@link https://github.com/panva/jose/issues/210#jwe-alg Algorithm Key Requirements}.
|
|
41
38
|
*/
|
|
42
39
|
encrypt(key: t.KeyInput, options?: t.EncryptOptions): Promise<string>;
|
|
@@ -1,28 +1,25 @@
|
|
|
1
1
|
import type * as t from '../../types.d.ts';
|
|
2
|
-
/**
|
|
2
|
+
/** Resolves a key for Flattened JWE decryption from unverified headers and token data. */
|
|
3
3
|
export interface FlattenedDecryptGetKey<KeyType extends t.CryptoKey | Uint8Array = t.CryptoKey | Uint8Array> extends t.GetKeyFunction<t.JWEHeaderParameters | undefined, t.FlattenedJWE, KeyType | t.KeyObject | t.JWK> {
|
|
4
4
|
}
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Authenticates and decrypts a flattened JWE JSON Serialization.
|
|
7
7
|
*
|
|
8
|
-
* @param key Private
|
|
8
|
+
* @param key Private key or shared secret. See
|
|
9
9
|
* {@link https://github.com/panva/jose/issues/210#jwe-alg Algorithm Key Requirements}.
|
|
10
10
|
*/
|
|
11
11
|
export declare function flattenedDecrypt(jwe: t.FlattenedJWE, key: t.KeyInput, options?: t.DecryptOptions): Promise<t.FlattenedDecryptResult>;
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* Authenticates and decrypts a flattened JWE JSON Serialization with a dynamically resolved key,
|
|
14
|
+
* included in the result.
|
|
15
15
|
*
|
|
16
|
-
* @param getKey
|
|
17
|
-
* {@link https://github.com/panva/jose/issues/210#jwe-alg Algorithm Key Requirements}.
|
|
16
|
+
* @param getKey Resolves a private key or shared secret from unverified token data.
|
|
18
17
|
*/
|
|
19
18
|
export declare function flattenedDecrypt<KeyType extends t.CryptoKey | Uint8Array = t.CryptoKey | Uint8Array>(jwe: t.FlattenedJWE, getKey: FlattenedDecryptGetKey<KeyType>, options?: t.DecryptOptions): Promise<t.FlattenedDecryptResult & t.ResolvedKey<KeyType>>;
|
|
20
19
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* function was used.
|
|
20
|
+
* Authenticates and decrypts a flattened JWE JSON Serialization with a key or key resolver. The
|
|
21
|
+
* result includes `key` only when a resolver is used.
|
|
24
22
|
*
|
|
25
|
-
* @param key Private
|
|
26
|
-
* {@link https://github.com/panva/jose/issues/210#jwe-alg Algorithm Key Requirements}.
|
|
23
|
+
* @param key Private key or shared secret, or a function resolving one.
|
|
27
24
|
*/
|
|
28
25
|
export declare function flattenedDecrypt(jwe: t.FlattenedJWE, key: t.KeyInput | FlattenedDecryptGetKey, options?: t.DecryptOptions): Promise<t.FlattenedDecryptResult & Partial<t.ResolvedKey>>;
|
|
@@ -1,48 +1,45 @@
|
|
|
1
1
|
import type * as t from '../../types.d.ts';
|
|
2
|
-
/**
|
|
2
|
+
/** Produces flattened JWE JSON Serialization using authenticated encryption. */
|
|
3
3
|
export declare class FlattenedEncrypt {
|
|
4
4
|
#private;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Creates an encryptor for flattened JWE JSON Serialization.
|
|
7
7
|
*
|
|
8
8
|
* @param plaintext Binary representation of the plaintext to encrypt.
|
|
9
9
|
*/
|
|
10
10
|
constructor(plaintext: Uint8Array);
|
|
11
11
|
/**
|
|
12
|
-
* Sets
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* appropriate JOSE Header.
|
|
12
|
+
* Sets key management inputs such as ECDH-ES "apu"/"apv" or PBES2 "p2c". Use this method instead
|
|
13
|
+
* of header setters; the resulting parameters are added to the JOSE Header. May only be called
|
|
14
|
+
* once.
|
|
16
15
|
*/
|
|
17
16
|
setKeyManagementParameters(parameters: t.JWEKeyManagementHeaderParameters): this;
|
|
18
|
-
/** Sets the JWE Protected Header
|
|
17
|
+
/** Sets the JWE Protected Header. May only be called once. */
|
|
19
18
|
setProtectedHeader(protectedHeader: t.JWEHeaderParameters): this;
|
|
20
|
-
/** Sets the JWE Shared Unprotected Header
|
|
19
|
+
/** Sets the JWE Shared Unprotected Header. May only be called once. */
|
|
21
20
|
setSharedUnprotectedHeader(sharedUnprotectedHeader: t.JWEHeaderParameters): this;
|
|
22
|
-
/** Sets the JWE Per-Recipient Unprotected Header
|
|
21
|
+
/** Sets the JWE Per-Recipient Unprotected Header. May only be called once. */
|
|
23
22
|
setUnprotectedHeader(unprotectedHeader: t.JWEHeaderParameters): this;
|
|
24
|
-
/** Sets the
|
|
23
|
+
/** Sets the JWE AAD, which is integrity protected but not encrypted. */
|
|
25
24
|
setAdditionalAuthenticatedData(aad: Uint8Array): this;
|
|
26
25
|
/**
|
|
27
|
-
* Sets a content encryption key
|
|
28
|
-
*
|
|
26
|
+
* Sets a content encryption key instead of generating a random one for the JWE "enc" algorithm.
|
|
27
|
+
* May only be called once.
|
|
29
28
|
*
|
|
30
|
-
* @deprecated
|
|
31
|
-
* validation purposes.
|
|
29
|
+
* @deprecated Use only for testing and vector validation.
|
|
32
30
|
*/
|
|
33
31
|
setContentEncryptionKey(cek: Uint8Array): this;
|
|
34
32
|
/**
|
|
35
|
-
* Sets the
|
|
36
|
-
*
|
|
33
|
+
* Sets the content encryption IV instead of generating a random one for the JWE "enc" algorithm.
|
|
34
|
+
* May only be called once.
|
|
37
35
|
*
|
|
38
|
-
* @deprecated
|
|
39
|
-
* validation purposes.
|
|
36
|
+
* @deprecated Use only for testing and vector validation.
|
|
40
37
|
*/
|
|
41
38
|
setInitializationVector(iv: Uint8Array): this;
|
|
42
39
|
/**
|
|
43
|
-
* Encrypts
|
|
40
|
+
* Encrypts the plaintext and returns the flattened JWE JSON Serialization.
|
|
44
41
|
*
|
|
45
|
-
* @param key Public
|
|
42
|
+
* @param key Public key or shared secret. See
|
|
46
43
|
* {@link https://github.com/panva/jose/issues/210#jwe-alg Algorithm Key Requirements}.
|
|
47
44
|
*/
|
|
48
45
|
encrypt(key: t.KeyInput, options?: t.EncryptOptions): Promise<t.FlattenedJWE>;
|
|
@@ -1,34 +1,29 @@
|
|
|
1
1
|
import type * as t from '../../types.d.ts';
|
|
2
|
-
/**
|
|
2
|
+
/** Resolves a key for General JWE decryption from unverified headers and token data. */
|
|
3
3
|
export interface GeneralDecryptGetKey<KeyType extends t.CryptoKey | Uint8Array = t.CryptoKey | Uint8Array> extends t.GetKeyFunction<t.JWEHeaderParameters | undefined, t.FlattenedJWE, KeyType | t.KeyObject | t.JWK> {
|
|
4
4
|
}
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Authenticates and decrypts a general JWE JSON Serialization.
|
|
7
7
|
*
|
|
8
|
-
* > Note:
|
|
9
|
-
* >
|
|
10
|
-
* > the
|
|
11
|
-
* > in the General JWE are not validated, and their headers are not included in the returned result.
|
|
12
|
-
* > Recipients of a General JWE should only rely on the returned (decrypted) data.
|
|
8
|
+
* > Note: Returns plaintext and headers from the first recipient that decrypts successfully. Other
|
|
9
|
+
* > recipients may be inspected to enforce serialization rules, but their headers are not included in
|
|
10
|
+
* > the result. Rely only on the returned data.
|
|
13
11
|
*
|
|
14
|
-
* @param key Private
|
|
12
|
+
* @param key Private key or shared secret. See
|
|
15
13
|
* {@link https://github.com/panva/jose/issues/210#jwe-alg Algorithm Key Requirements}.
|
|
16
14
|
*/
|
|
17
15
|
export declare function generalDecrypt(jwe: t.GeneralJWE, key: t.KeyInput, options?: t.DecryptOptions): Promise<t.GeneralDecryptResult>;
|
|
18
16
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
17
|
+
* Authenticates and decrypts a general JWE JSON Serialization with a dynamically resolved key,
|
|
18
|
+
* included in the result.
|
|
21
19
|
*
|
|
22
|
-
* @param getKey
|
|
23
|
-
* {@link https://github.com/panva/jose/issues/210#jwe-alg Algorithm Key Requirements}.
|
|
20
|
+
* @param getKey Resolves a private key or shared secret from unverified token data.
|
|
24
21
|
*/
|
|
25
22
|
export declare function generalDecrypt<KeyType extends t.CryptoKey | Uint8Array = t.CryptoKey | Uint8Array>(jwe: t.GeneralJWE, getKey: GeneralDecryptGetKey<KeyType>, options?: t.DecryptOptions): Promise<t.GeneralDecryptResult & t.ResolvedKey<KeyType>>;
|
|
26
23
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* function was used.
|
|
24
|
+
* Authenticates and decrypts a general JWE JSON Serialization with a key or key resolver. The
|
|
25
|
+
* result includes `key` only when a resolver is used.
|
|
30
26
|
*
|
|
31
|
-
* @param key Private
|
|
32
|
-
* {@link https://github.com/panva/jose/issues/210#jwe-alg Algorithm Key Requirements}.
|
|
27
|
+
* @param key Private key or shared secret, or a function resolving one.
|
|
33
28
|
*/
|
|
34
29
|
export declare function generalDecrypt(jwe: t.GeneralJWE, key: t.KeyInput | GeneralDecryptGetKey, options?: t.DecryptOptions): Promise<t.GeneralDecryptResult & Partial<t.ResolvedKey>>;
|
|
@@ -1,54 +1,51 @@
|
|
|
1
1
|
import type * as t from '../../types.d.ts';
|
|
2
2
|
/** Configures an individual recipient in a General JWE. */
|
|
3
3
|
export interface Recipient {
|
|
4
|
-
/** Sets the JWE Per-Recipient Unprotected Header
|
|
4
|
+
/** Sets the JWE Per-Recipient Unprotected Header. May only be called once. */
|
|
5
5
|
setUnprotectedHeader(unprotectedHeader: t.JWEHeaderParameters): Recipient;
|
|
6
6
|
/**
|
|
7
|
-
* Sets
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* appropriate JOSE Header.
|
|
7
|
+
* Sets key management inputs such as ECDH-ES "apu"/"apv" or PBES2 "p2c". Use this method instead
|
|
8
|
+
* of header setters; the resulting parameters are added to the JOSE Header. May only be called
|
|
9
|
+
* once.
|
|
11
10
|
*/
|
|
12
11
|
setKeyManagementParameters(parameters: t.JWEKeyManagementHeaderParameters): Recipient;
|
|
13
12
|
/**
|
|
14
|
-
*
|
|
15
|
-
* {@link GeneralEncrypt} instance.
|
|
13
|
+
* Adds another recipient to the enclosing {@link GeneralEncrypt} and returns its configuration.
|
|
16
14
|
*
|
|
17
|
-
* @param key Public
|
|
18
|
-
*
|
|
15
|
+
* @param key Public key or shared secret. See
|
|
16
|
+
* {@link https://github.com/panva/jose/issues/210#jwe-alg Algorithm Key Requirements}.
|
|
19
17
|
*/
|
|
20
18
|
addRecipient(key: t.KeyInput, options?: t.CritOption): Recipient;
|
|
21
19
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* {@link addRecipient}.
|
|
20
|
+
* Encrypts for all recipients on the enclosing {@link GeneralEncrypt}, using their configured
|
|
21
|
+
* keys.
|
|
25
22
|
*/
|
|
26
23
|
encrypt(): Promise<t.GeneralJWE>;
|
|
27
|
-
/** Returns the enclosing {@link GeneralEncrypt} instance */
|
|
24
|
+
/** Returns the enclosing {@link GeneralEncrypt} instance. */
|
|
28
25
|
done(): GeneralEncrypt;
|
|
29
26
|
}
|
|
30
|
-
/**
|
|
27
|
+
/** Produces general JWE JSON Serialization using authenticated encryption. */
|
|
31
28
|
export declare class GeneralEncrypt {
|
|
32
29
|
#private;
|
|
33
30
|
/**
|
|
34
|
-
*
|
|
31
|
+
* Creates an encryptor for general JWE JSON Serialization.
|
|
35
32
|
*
|
|
36
33
|
* @param plaintext Binary representation of the plaintext to encrypt.
|
|
37
34
|
*/
|
|
38
35
|
constructor(plaintext: Uint8Array);
|
|
39
36
|
/**
|
|
40
|
-
* Adds
|
|
37
|
+
* Adds a recipient and returns its configuration.
|
|
41
38
|
*
|
|
42
|
-
* @param key Public
|
|
43
|
-
*
|
|
39
|
+
* @param key Public key or shared secret. See
|
|
40
|
+
* {@link https://github.com/panva/jose/issues/210#jwe-alg Algorithm Key Requirements}.
|
|
44
41
|
*/
|
|
45
42
|
addRecipient(key: t.KeyInput, options?: t.CritOption): Recipient;
|
|
46
|
-
/** Sets the JWE Protected Header
|
|
43
|
+
/** Sets the JWE Protected Header. May only be called once. */
|
|
47
44
|
setProtectedHeader(protectedHeader: t.JWEHeaderParameters): this;
|
|
48
|
-
/** Sets the JWE Shared Unprotected Header
|
|
45
|
+
/** Sets the JWE Shared Unprotected Header. May only be called once. */
|
|
49
46
|
setSharedUnprotectedHeader(sharedUnprotectedHeader: t.JWEHeaderParameters): this;
|
|
50
|
-
/** Sets the
|
|
47
|
+
/** Sets the JWE AAD, which is integrity protected but not encrypted. */
|
|
51
48
|
setAdditionalAuthenticatedData(aad: Uint8Array): this;
|
|
52
|
-
/** Encrypts
|
|
49
|
+
/** Encrypts the plaintext and returns the general JWE JSON Serialization. */
|
|
53
50
|
encrypt(): Promise<t.GeneralJWE>;
|
|
54
51
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type * as t from '../types.d.ts';
|
|
2
2
|
/**
|
|
3
|
-
* Resolves a verification key from an embedded "jwk" (JSON Web Key) Header Parameter.
|
|
3
|
+
* Resolves a verification key from an embedded "jwk" (JSON Web Key) Header Parameter. This key
|
|
4
|
+
* resolver opts JWS and JWT verification into trusting a public key supplied by the token. Use the
|
|
5
|
+
* verification function's `algorithms` option to restrict accepted algorithms.
|
|
4
6
|
*
|
|
5
7
|
* @param token The consumed JWS token.
|
|
6
8
|
* @returns The public key from the JWS "jwk" (JSON Web Key) Header Parameter.
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import type * as t from '../types.d.ts';
|
|
2
2
|
/**
|
|
3
|
-
* Calculates a base64url-encoded
|
|
3
|
+
* Calculates a base64url-encoded JWK Thumbprint. CryptoKey inputs must be extractable.
|
|
4
4
|
*
|
|
5
5
|
* @param key Key to calculate the thumbprint for.
|
|
6
|
-
* @param digestAlgorithm Digest
|
|
7
|
-
* "sha256".
|
|
6
|
+
* @param digestAlgorithm Digest algorithm. Defaults to "sha256".
|
|
8
7
|
*/
|
|
9
8
|
export declare function calculateJwkThumbprint(key: t.JWK | t.CryptoKey | t.KeyObject, digestAlgorithm?: 'sha256' | 'sha384' | 'sha512'): Promise<string>;
|
|
10
9
|
/**
|
|
11
|
-
* Calculates a
|
|
10
|
+
* Calculates a JWK Thumbprint URI. CryptoKey inputs must be extractable.
|
|
12
11
|
*
|
|
13
12
|
* @param key Key to calculate the thumbprint for.
|
|
14
|
-
* @param digestAlgorithm Digest
|
|
15
|
-
* "sha256".
|
|
13
|
+
* @param digestAlgorithm Digest algorithm. Defaults to "sha256".
|
|
16
14
|
*/
|
|
17
15
|
export declare function calculateJwkThumbprintUri(key: t.CryptoKey | t.KeyObject | t.JWK, digestAlgorithm?: 'sha256' | 'sha384' | 'sha512'): Promise<string>;
|
|
@@ -2,14 +2,15 @@ import type * as t from '../types.d.ts';
|
|
|
2
2
|
/** A key resolver created by {@link createLocalJWKSet}. */
|
|
3
3
|
export interface LocalJWKSet {
|
|
4
4
|
(protectedHeader?: t.JWSHeaderParameters, token?: t.FlattenedJWSInput): Promise<t.CryptoKey>;
|
|
5
|
-
/** Returns a structured clone of the JSON Web Key Set
|
|
5
|
+
/** Returns a structured clone of the original JSON Web Key Set. */
|
|
6
6
|
jwks: () => t.JSONWebKeySet;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
|
-
* Creates a resolver for a locally available JSON Web Key Set.
|
|
9
|
+
* Creates a resolver for a locally available JSON Web Key Set. Selection uses the header's "alg"
|
|
10
|
+
* (Algorithm) and "kid" (Key ID), and respects the JWK's "use" (Public Key Use) and "key_ops" (Key
|
|
11
|
+
* Operations). Exactly one key must match.
|
|
10
12
|
*
|
|
11
|
-
* > Note:
|
|
12
|
-
* > for public encryption keys.
|
|
13
|
+
* > Note: Only public signature verification keys are supported, not public encryption keys.
|
|
13
14
|
*
|
|
14
15
|
* @param jwks JSON Web Key Set formatted object.
|
|
15
16
|
*/
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
import type * as t from '../types.d.ts';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Configures a custom fetch implementation for remote JWKS retrieval.
|
|
4
4
|
*
|
|
5
|
-
* > Note:
|
|
6
|
-
* >
|
|
5
|
+
* > Note: Fetch-like libraries may have incompatible TypeScript signatures even when they accept the
|
|
6
|
+
* > supplied arguments at runtime.
|
|
7
7
|
*/
|
|
8
8
|
export declare const customFetch: unique symbol;
|
|
9
|
-
/**
|
|
9
|
+
/** Custom fetch function. Must return HTTP 200 with a JSON JWKS. See {@link customFetch}. */
|
|
10
10
|
export type FetchImplementation = (
|
|
11
|
-
/** URL
|
|
11
|
+
/** JWKS URL, passed as the fetch resource. */
|
|
12
12
|
url: string,
|
|
13
|
-
/** Options
|
|
13
|
+
/** Options passed to fetch. */
|
|
14
14
|
options: {
|
|
15
|
-
/** HTTP Headers */
|
|
16
15
|
headers: Headers;
|
|
17
|
-
/** The {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods request method} */
|
|
18
16
|
method: 'GET';
|
|
19
17
|
/** See {@link !Request.redirect} */
|
|
20
18
|
redirect: 'manual';
|
|
@@ -23,9 +21,8 @@ options: {
|
|
|
23
21
|
/**
|
|
24
22
|
* Symbol used to configure an externally persisted remote JWKS cache.
|
|
25
23
|
*
|
|
26
|
-
* > Warning:
|
|
27
|
-
* >
|
|
28
|
-
* > code.
|
|
24
|
+
* > Warning: Only trusted application code must be allowed to write this cache; its keys are trusted for
|
|
25
|
+
* > signature verification.
|
|
29
26
|
*/
|
|
30
27
|
export declare const jwksCache: unique symbol;
|
|
31
28
|
/** Remote JWKS resolver options. */
|
|
@@ -36,13 +33,13 @@ export interface RemoteJWKSetOptions {
|
|
|
36
33
|
*/
|
|
37
34
|
timeoutDuration?: number;
|
|
38
35
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
36
|
+
* Time in milliseconds after a successful fetch before a missing key can trigger another fetch.
|
|
37
|
+
* Must not be `NaN`. Defaults to 30000 (30 seconds).
|
|
41
38
|
*/
|
|
42
39
|
cooldownDuration?: number;
|
|
43
40
|
/**
|
|
44
|
-
* Maximum
|
|
45
|
-
*
|
|
41
|
+
* Maximum age of cached keys in milliseconds. Defaults to 600000 (10 minutes); `Infinity`
|
|
42
|
+
* disables expiry. Must not be `NaN`.
|
|
46
43
|
*/
|
|
47
44
|
cacheMaxAge?: number | typeof Infinity;
|
|
48
45
|
/** Headers to be sent with the HTTP request. */
|
|
@@ -56,7 +53,7 @@ export interface RemoteJWKSetOptions {
|
|
|
56
53
|
export interface ExportedJWKSCache {
|
|
57
54
|
/** Current cached JSON Web Key Set */
|
|
58
55
|
jwks: t.JSONWebKeySet;
|
|
59
|
-
/** Last
|
|
56
|
+
/** Last successful fetch, in milliseconds since Unix epoch. */
|
|
60
57
|
uat: number;
|
|
61
58
|
}
|
|
62
59
|
/** Values accepted by the {@link jwksCache} option. */
|
|
@@ -79,16 +76,18 @@ export interface RemoteJWKSet {
|
|
|
79
76
|
*/
|
|
80
77
|
reload: () => Promise<void>;
|
|
81
78
|
/**
|
|
82
|
-
*
|
|
83
|
-
* {@link jwksCache}
|
|
79
|
+
* Returns a structured clone of the cached JSON Web Key Set, or `undefined` before keys have been
|
|
80
|
+
* fetched or seeded via {@link jwksCache}.
|
|
84
81
|
*/
|
|
85
82
|
jwks: () => t.JSONWebKeySet | undefined;
|
|
86
83
|
}
|
|
87
84
|
/**
|
|
88
|
-
* Creates a resolver for a JSON Web Key Set available at an HTTP(S) URL.
|
|
85
|
+
* Creates a resolver for a JSON Web Key Set available at an HTTP(S) URL. Fetches the JSON Web Key
|
|
86
|
+
* Set when the cache is missing or stale. An unmatched key triggers another fetch only when
|
|
87
|
+
* `cooldownDuration` has elapsed since the last successful fetch. Selection uses the header's "alg"
|
|
88
|
+
* and "kid" and respects the JWK's "use" and "key_ops". Exactly one key must match.
|
|
89
89
|
*
|
|
90
|
-
* > Note:
|
|
91
|
-
* > for public encryption keys.
|
|
90
|
+
* > Note: Only public signature verification keys are supported, not public encryption keys.
|
|
92
91
|
*
|
|
93
92
|
* @param url URL to fetch the JSON Web Key Set from.
|
|
94
93
|
*/
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import type * as t from '../../types.d.ts';
|
|
2
|
-
/**
|
|
2
|
+
/** Produces JWS Compact Serialization using a digital signature or MAC. */
|
|
3
3
|
export declare class CompactSign {
|
|
4
4
|
#private;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Creates a signer for JWS Compact Serialization.
|
|
7
7
|
*
|
|
8
|
-
* @param payload
|
|
8
|
+
* @param payload JWS Payload bytes to sign or MAC.
|
|
9
9
|
*/
|
|
10
10
|
constructor(payload: Uint8Array);
|
|
11
|
-
/** Sets the JWS Protected Header
|
|
11
|
+
/** Sets the JWS Protected Header. May only be called once. */
|
|
12
12
|
setProtectedHeader(protectedHeader: t.CompactJWSHeaderParameters): this;
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* Computes the JWS Signature (digital signature or MAC) and returns the JWS Compact
|
|
15
|
+
* Serialization.
|
|
15
16
|
*
|
|
16
|
-
* @param key Private
|
|
17
|
+
* @param key Private key or shared secret. See
|
|
17
18
|
* {@link https://github.com/panva/jose/issues/210#jws-alg Algorithm Key Requirements}.
|
|
18
19
|
*/
|
|
19
20
|
sign(key: t.KeyInput, options?: t.SignOptions): Promise<string>;
|
|
@@ -1,28 +1,25 @@
|
|
|
1
1
|
import type * as t from '../../types.d.ts';
|
|
2
|
-
/**
|
|
2
|
+
/** Resolves a key for Compact JWS verification from unverified headers and token data. */
|
|
3
3
|
export interface CompactVerifyGetKey<KeyType extends t.CryptoKey | Uint8Array = t.CryptoKey | Uint8Array> extends t.GetKeyFunction<t.CompactJWSHeaderParameters, t.FlattenedJWSInput, KeyType | t.KeyObject | t.JWK> {
|
|
4
4
|
}
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Validates a JWS Compact Serialization (digital signature or MAC) and decodes its JWS Payload.
|
|
7
7
|
*
|
|
8
|
-
* @param key
|
|
8
|
+
* @param key Public key or shared secret. See
|
|
9
9
|
* {@link https://github.com/panva/jose/issues/210#jws-alg Algorithm Key Requirements}.
|
|
10
10
|
*/
|
|
11
11
|
export declare function compactVerify(jws: string | Uint8Array, key: t.KeyInput, options?: t.VerifyOptions): Promise<t.CompactVerifyResult>;
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* Validates a JWS Compact Serialization (digital signature or MAC) and decodes its JWS Payload with
|
|
14
|
+
* a dynamically resolved key, included in the result.
|
|
15
15
|
*
|
|
16
|
-
* @param getKey
|
|
17
|
-
* {@link https://github.com/panva/jose/issues/210#jws-alg Algorithm Key Requirements}.
|
|
16
|
+
* @param getKey Resolves a public key or shared secret from unverified token data.
|
|
18
17
|
*/
|
|
19
18
|
export declare function compactVerify<KeyType extends t.CryptoKey | Uint8Array = t.CryptoKey | Uint8Array>(jws: string | Uint8Array, getKey: CompactVerifyGetKey<KeyType>, options?: t.VerifyOptions): Promise<t.CompactVerifyResult & t.ResolvedKey<KeyType>>;
|
|
20
19
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* function was used.
|
|
20
|
+
* Validates a JWS Compact Serialization (digital signature or MAC) and decodes its JWS Payload
|
|
21
|
+
* using a key or key resolver. The result includes `key` only when a resolver is used.
|
|
24
22
|
*
|
|
25
|
-
* @param key
|
|
26
|
-
* {@link https://github.com/panva/jose/issues/210#jws-alg Algorithm Key Requirements}.
|
|
23
|
+
* @param key Public key or shared secret, or a function resolving one.
|
|
27
24
|
*/
|
|
28
25
|
export declare function compactVerify(jws: string | Uint8Array, key: t.KeyInput | CompactVerifyGetKey, options?: t.VerifyOptions): Promise<t.CompactVerifyResult & Partial<t.ResolvedKey>>;
|