Correct subpath names that otherwise lead users to unexported entries, and fix examples, links, and missing descriptions in published JSDoc. Use instanceof in JWKS recovery examples so strict TypeScript can narrow caught errors. Signed-off-by: Filip Skokan <[email protected]>
10 KiB
Class: EncryptJWT
💗 Help the project
Support from the community to continue maintaining and improving this module is welcome. If you find the module useful, please consider supporting the project by becoming a sponsor.
The EncryptJWT class is used to build and encrypt Compact JWE formatted JSON Web Tokens.
This class is exported (as a named export) from the main 'jose' module entry point as well as
from its subpath export 'jose/jwt/encrypt'.
Example
const secret = jose.base64url.decode('zH4NRP1HMALxxCFnRZABFA7GOJtzU_gIj02alfL1lvI')
const jwt = await new jose.EncryptJWT({ 'urn:example:claim': true })
.setProtectedHeader({ alg: 'dir', enc: 'A128CBC-HS256' })
.setIssuedAt()
.setIssuer('urn:example:issuer')
.setAudience('urn:example:audience')
.setExpirationTime('2h')
.encrypt(secret)
console.log(jwt)
Constructors
Constructor
â–¸ new EncryptJWT(payload?): EncryptJWT
EncryptJWT constructor
Parameters
| Parameter | Type | Description |
|---|---|---|
payload |
JWTPayload |
The JWT Claims Set object. Defaults to an empty object. |
Returns
EncryptJWT
Methods
encrypt()
â–¸ encrypt(key, options?): Promise<string>
Encrypts and returns the JWT.
Parameters
| Parameter | Type | Description |
|---|---|---|
key |
KeyInput |
Public Key or Secret to encrypt the JWT with. See Algorithm Key Requirements. |
options? |
EncryptOptions |
JWE Encryption options. |
Returns
Promise<string>
replicateAudienceAsHeader()
â–¸ replicateAudienceAsHeader(): this
Replicates the "aud" (Audience) Claim as a JWE Protected Header Parameter.
Returns
this
See
replicateIssuerAsHeader()
â–¸ replicateIssuerAsHeader(): this
Replicates the "iss" (Issuer) Claim as a JWE Protected Header Parameter.
Returns
this
See
replicateSubjectAsHeader()
â–¸ replicateSubjectAsHeader(): this
Replicates the "sub" (Subject) Claim as a JWE Protected Header Parameter.
Returns
this
See
setAudience()
â–¸ setAudience(audience): this
Set the "aud" (Audience) Claim.
Parameters
| Parameter | Type | Description |
|---|---|---|
audience |
string | string[] |
"aud" (Audience) Claim value to set on the JWT Claims Set. |
Returns
this
setContentEncryptionKey()
â–¸ setContentEncryptionKey(cek): this
Sets a content encryption key to use, by default a random suitable one is generated for the JWE "enc" (Encryption Algorithm) Header Parameter.
Parameters
| Parameter | Type | Description |
|---|---|---|
cek |
Uint8Array |
JWE Content Encryption Key. |
Returns
this
Deprecated
You should not use this method. It is only really intended for test and vector validation purposes.
setExpirationTime()
â–¸ setExpirationTime(input): this
Set the "exp" (Expiration Time) Claim.
- If a
numberis passed as an argument it is used as the claim directly. - If a
Dateinstance is passed as an argument it is converted to unix timestamp and used as the claim. - If a
stringis passed as an argument it is resolved to a time span, and then added to the current unix timestamp and used as the claim.
Format used for time span should be a number followed by a unit, such as "5 minutes" or "1 day".
Valid units are: "sec", "secs", "second", "seconds", "s", "minute", "minutes", "min", "mins", "m", "hour", "hours", "hr", "hrs", "h", "day", "days", "d", "week", "weeks", "w", "year", "years", "yr", "yrs", and "y". It is not possible to specify months. 365.25 days is used as an alias for a year.
If the string is suffixed with "ago", or prefixed with a "-", the resulting time span gets subtracted from the current unix timestamp. A "from now" suffix can also be used for readability when adding to the current unix timestamp.
Parameters
| Parameter | Type | Description |
|---|---|---|
input |
string | number | Date |
"exp" (Expiration Time) Claim value to set on the JWT Claims Set. |
Returns
this
setInitializationVector()
â–¸ setInitializationVector(iv): this
Sets the JWE Initialization Vector to use for content encryption, by default a random suitable one is generated for the JWE "enc" (Encryption Algorithm) Header Parameter.
Parameters
| Parameter | Type | Description |
|---|---|---|
iv |
Uint8Array |
JWE Initialization Vector. |
Returns
this
Deprecated
You should not use this method. It is only really intended for test and vector validation purposes.
setIssuedAt()
â–¸ setIssuedAt(input?): this
Set the "iat" (Issued At) Claim.
- If no argument is used the current unix timestamp is used as the claim.
- If a
numberis passed as an argument it is used as the claim directly. - If a
Dateinstance is passed as an argument it is converted to unix timestamp and used as the claim. - If a
stringis passed as an argument it is resolved to a time span, and then added to the current unix timestamp and used as the claim.
Format used for time span should be a number followed by a unit, such as "5 minutes" or "1 day".
Valid units are: "sec", "secs", "second", "seconds", "s", "minute", "minutes", "min", "mins", "m", "hour", "hours", "hr", "hrs", "h", "day", "days", "d", "week", "weeks", "w", "year", "years", "yr", "yrs", and "y". It is not possible to specify months. 365.25 days is used as an alias for a year.
If the string is suffixed with "ago", or prefixed with a "-", the resulting time span gets subtracted from the current unix timestamp. A "from now" suffix can also be used for readability when adding to the current unix timestamp.
Parameters
| Parameter | Type | Description |
|---|---|---|
input? |
string | number | Date |
"iat" (Issued At) Claim value to set on the JWT Claims Set. |
Returns
this
setIssuer()
â–¸ setIssuer(issuer): this
Set the "iss" (Issuer) Claim.
Parameters
| Parameter | Type | Description |
|---|---|---|
issuer |
string |
"Issuer" Claim value to set on the JWT Claims Set. |
Returns
this
setJti()
â–¸ setJti(jwtId): this
Set the "jti" (JWT ID) Claim.
Parameters
| Parameter | Type | Description |
|---|---|---|
jwtId |
string |
"jti" (JWT ID) Claim value to set on the JWT Claims Set. |
Returns
this
setKeyManagementParameters()
â–¸ setKeyManagementParameters(parameters): this
Sets the JWE Key Management parameters to be used when encrypting.
(ECDH-ES) Use of this method is needed for ECDH based algorithms to set the "apu" (Agreement PartyUInfo) or "apv" (Agreement PartyVInfo) parameters.
Parameters
| Parameter | Type | Description |
|---|---|---|
parameters |
JWEKeyManagementHeaderParameters |
JWE Key Management parameters. |
Returns
this
setNotBefore()
â–¸ setNotBefore(input): this
Set the "nbf" (Not Before) Claim.
- If a
numberis passed as an argument it is used as the claim directly. - If a
Dateinstance is passed as an argument it is converted to unix timestamp and used as the claim. - If a
stringis passed as an argument it is resolved to a time span, and then added to the current unix timestamp and used as the claim.
Format used for time span should be a number followed by a unit, such as "5 minutes" or "1 day".
Valid units are: "sec", "secs", "second", "seconds", "s", "minute", "minutes", "min", "mins", "m", "hour", "hours", "hr", "hrs", "h", "day", "days", "d", "week", "weeks", "w", "year", "years", "yr", "yrs", and "y". It is not possible to specify months. 365.25 days is used as an alias for a year.
If the string is suffixed with "ago", or prefixed with a "-", the resulting time span gets subtracted from the current unix timestamp. A "from now" suffix can also be used for readability when adding to the current unix timestamp.
Parameters
| Parameter | Type | Description |
|---|---|---|
input |
string | number | Date |
"nbf" (Not Before) Claim value to set on the JWT Claims Set. |
Returns
this
setProtectedHeader()
â–¸ setProtectedHeader(protectedHeader): this
Sets the JWE Protected Header on the EncryptJWT object.
Parameters
| Parameter | Type | Description |
|---|---|---|
protectedHeader |
CompactJWEHeaderParameters |
JWE Protected Header. Must contain an "alg" (JWE Algorithm) and "enc" (JWE Encryption Algorithm) properties. |
Returns
this
setSubject()
â–¸ setSubject(subject): this
Set the "sub" (Subject) Claim.
Parameters
| Parameter | Type | Description |
|---|---|---|
subject |
string |
"sub" (Subject) Claim value to set on the JWT Claims Set. |
Returns
this