From 0fa87af64b8e9f0f0cb68264f4dc22cc985acf91 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Thu, 11 Nov 2021 21:51:57 +0100 Subject: [PATCH] fix(typescript): Compact JWS Header Parameters has alg and enc as required --- src/index.ts | 1 + src/jwe/compact/decrypt.ts | 5 +++-- src/jwe/compact/encrypt.ts | 4 ++-- src/jwt/decrypt.ts | 5 +++-- src/jwt/encrypt.ts | 6 +++--- src/types.d.ts | 9 +++++++++ 6 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/index.ts b/src/index.ts index ce3aabb1..6d77131e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -89,4 +89,5 @@ export type { JWTVerifyResult, JWTDecryptResult, ResolvedKey, + CompactJWEHeaderParameters, } from './types.d' diff --git a/src/jwe/compact/decrypt.ts b/src/jwe/compact/decrypt.ts index e8a25449..3c29f3e4 100644 --- a/src/jwe/compact/decrypt.ts +++ b/src/jwe/compact/decrypt.ts @@ -4,7 +4,7 @@ import { decoder } from '../../lib/buffer_utils.js' import type { KeyLike, DecryptOptions, - JWEHeaderParameters, + CompactJWEHeaderParameters, GetKeyFunction, FlattenedJWE, CompactDecryptResult, @@ -15,7 +15,8 @@ import type { * Interface for Compact JWE Decryption dynamic key resolution. * No token components have been verified at the time of this function call. */ -export interface CompactDecryptGetKey extends GetKeyFunction {} +export interface CompactDecryptGetKey + extends GetKeyFunction {} /** * Decrypts a Compact JWE. diff --git a/src/jwe/compact/encrypt.ts b/src/jwe/compact/encrypt.ts index 44070605..6f7a74d8 100644 --- a/src/jwe/compact/encrypt.ts +++ b/src/jwe/compact/encrypt.ts @@ -2,7 +2,7 @@ import { FlattenedEncrypt } from '../flattened/encrypt.js' import type { KeyLike, JWEKeyManagementHeaderParameters, - JWEHeaderParameters, + CompactJWEHeaderParameters, EncryptOptions, } from '../../types.d' @@ -63,7 +63,7 @@ export class CompactEncrypt { * * @param protectedHeader JWE Protected Header object. */ - setProtectedHeader(protectedHeader: JWEHeaderParameters) { + setProtectedHeader(protectedHeader: CompactJWEHeaderParameters) { this._flattened.setProtectedHeader(protectedHeader) return this } diff --git a/src/jwt/decrypt.ts b/src/jwt/decrypt.ts index 9d50bede..d2c0e443 100644 --- a/src/jwt/decrypt.ts +++ b/src/jwt/decrypt.ts @@ -4,7 +4,7 @@ import type { DecryptOptions, JWTClaimVerificationOptions, GetKeyFunction, - JWEHeaderParameters, + CompactJWEHeaderParameters, FlattenedJWE, JWTDecryptResult, ResolvedKey, @@ -21,7 +21,8 @@ export interface JWTDecryptOptions extends DecryptOptions, JWTClaimVerificationO * Interface for JWT Decryption dynamic key resolution. * No token components have been verified at the time of this function call. */ -export interface JWTDecryptGetKey extends GetKeyFunction {} +export interface JWTDecryptGetKey + extends GetKeyFunction {} /** * Verifies the JWT format (to be a JWE Compact format), decrypts the ciphertext, validates the JWT Claims Set. diff --git a/src/jwt/encrypt.ts b/src/jwt/encrypt.ts index d616f0fe..e10c29d5 100644 --- a/src/jwt/encrypt.ts +++ b/src/jwt/encrypt.ts @@ -1,7 +1,7 @@ import { CompactEncrypt } from '../jwe/compact/encrypt.js' import type { EncryptOptions, - JWEHeaderParameters, + CompactJWEHeaderParameters, JWEKeyManagementHeaderParameters, KeyLike, } from '../types.d' @@ -31,7 +31,7 @@ export class EncryptJWT extends ProduceJWT { private _keyManagementParameters!: JWEKeyManagementHeaderParameters - private _protectedHeader!: JWEHeaderParameters + private _protectedHeader!: CompactJWEHeaderParameters private _replicateIssuerAsHeader!: boolean @@ -46,7 +46,7 @@ export class EncryptJWT extends ProduceJWT { * Must contain an "alg" (JWE Algorithm) and "enc" (JWE * Encryption Algorithm) properties. */ - setProtectedHeader(protectedHeader: JWEHeaderParameters) { + setProtectedHeader(protectedHeader: CompactJWEHeaderParameters) { if (this._protectedHeader) { throw new TypeError('setProtectedHeader can only be called once') } diff --git a/src/types.d.ts b/src/types.d.ts index c8150685..479618ac 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -720,3 +720,12 @@ export interface ResolvedKey { */ key: KeyLike | Uint8Array } + +/** + * Recognized Compact JWE Header Parameters, any other Header Members + * may also be present. + */ +export interface CompactJWEHeaderParameters extends JWEHeaderParameters { + alg: string + enc: string +}