Skip to content

Commit 6f2b295

Browse files
committed
fix signing errors when there is no header
1 parent d54b4db commit 6f2b295

File tree

1 file changed

+55
-53
lines changed

1 file changed

+55
-53
lines changed

src/features/encoder/services/token-encoder.service.ts

Lines changed: 55 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,12 @@ class _TokenEncoderService {
8686

8787
const header = isNoneAlg(algorithm)
8888
? {
89-
alg: algorithm,
90-
}
89+
alg: algorithm,
90+
}
9191
: {
92-
alg: algorithm,
93-
typ: "JWT",
94-
};
92+
alg: algorithm,
93+
typ: "JWT",
94+
};
9595

9696
/**
9797
* We need to update the value of this payload; otherwise, the controlledPayload observable
@@ -605,7 +605,7 @@ class _TokenEncoderService {
605605
header: decodedHeader,
606606
headerWarnings:
607607
getValidatedHeaderResult.value.headerWarnings &&
608-
getValidatedHeaderResult.value.headerWarnings.length > 0
608+
getValidatedHeaderResult.value.headerWarnings.length > 0
609609
? getValidatedHeaderResult.value.headerWarnings
610610
: null,
611611
});
@@ -647,7 +647,7 @@ class _TokenEncoderService {
647647
header: decodedHeader,
648648
headerWarnings:
649649
getValidatedHeaderResult.value.headerWarnings &&
650-
getValidatedHeaderResult.value.headerWarnings.length > 0
650+
getValidatedHeaderResult.value.headerWarnings.length > 0
651651
? getValidatedHeaderResult.value.headerWarnings
652652
: null,
653653
});
@@ -837,28 +837,28 @@ class _TokenEncoderService {
837837
async encodeJwt(
838838
params:
839839
| {
840-
algType: SigningAlgCategoryValues.ANY;
841-
header: DecodedJwtHeaderModel;
842-
payload: DecodedJwtPayloadModel;
843-
symmetricSecretKey: string;
844-
symmetricSecretKeyEncoding: EncodingValues;
845-
asymmetricPrivateKey: string;
846-
asymmetricPrivateKeyFormat: AsymmetricKeyFormatValues;
847-
}
840+
algType: SigningAlgCategoryValues.ANY;
841+
header: DecodedJwtHeaderModel;
842+
payload: DecodedJwtPayloadModel;
843+
symmetricSecretKey: string;
844+
symmetricSecretKeyEncoding: EncodingValues;
845+
asymmetricPrivateKey: string;
846+
asymmetricPrivateKeyFormat: AsymmetricKeyFormatValues;
847+
}
848848
| {
849-
algType: SigningAlgCategoryValues.SYMMETRIC;
850-
header: DecodedJwtHeaderModel;
851-
payload: DecodedJwtPayloadModel;
852-
symmetricSecretKey: string;
853-
symmetricSecretKeyEncoding: EncodingValues;
854-
}
849+
algType: SigningAlgCategoryValues.SYMMETRIC;
850+
header: DecodedJwtHeaderModel;
851+
payload: DecodedJwtPayloadModel;
852+
symmetricSecretKey: string;
853+
symmetricSecretKeyEncoding: EncodingValues;
854+
}
855855
| {
856-
algType: SigningAlgCategoryValues.ASYMMETRIC;
857-
header: DecodedJwtHeaderModel;
858-
payload: DecodedJwtPayloadModel;
859-
asymmetricPrivateKey: string;
860-
asymmetricPrivateKeyFormat: AsymmetricKeyFormatValues;
861-
},
856+
algType: SigningAlgCategoryValues.ASYMMETRIC;
857+
header: DecodedJwtHeaderModel;
858+
payload: DecodedJwtPayloadModel;
859+
asymmetricPrivateKey: string;
860+
asymmetricPrivateKeyFormat: AsymmetricKeyFormatValues;
861+
},
862862
): Promise<
863863
Result<
864864
{
@@ -881,18 +881,18 @@ class _TokenEncoderService {
881881

882882
encodeJWTResult = isHmacAlg(header.alg)
883883
? await this.encodeJWTWithHmacAlg(
884+
header,
885+
payload,
886+
symmetricSecretKey,
887+
symmetricSecretKeyEncoding,
888+
)
889+
: isDigitalSignatureAlg(header.alg)
890+
? await this.encodeJWTWithDigitalSignatureAlg(
884891
header,
885892
payload,
886-
symmetricSecretKey,
887-
symmetricSecretKeyEncoding,
893+
asymmetricPrivateKey,
894+
asymmetricPrivateKeyFormat,
888895
)
889-
: isDigitalSignatureAlg(header.alg)
890-
? await this.encodeJWTWithDigitalSignatureAlg(
891-
header,
892-
payload,
893-
asymmetricPrivateKey,
894-
asymmetricPrivateKeyFormat,
895-
)
896896
: null;
897897
}
898898

@@ -1063,14 +1063,14 @@ class _TokenEncoderService {
10631063
const encodeJwtResult = isNoneAlg(header.alg)
10641064
? await this.encodeUnsecuredJWT(header, payload)
10651065
: await this.encodeJwt({
1066-
algType: SigningAlgCategoryValues.ANY,
1067-
header,
1068-
payload,
1069-
symmetricSecretKey: params.symmetricSecretKey,
1070-
symmetricSecretKeyEncoding: params.symmetricSecretKeyEncoding,
1071-
asymmetricPrivateKey: params.asymmetricPrivateKey,
1072-
asymmetricPrivateKeyFormat: params.asymmetricPrivateKeyFormat,
1073-
});
1066+
algType: SigningAlgCategoryValues.ANY,
1067+
header,
1068+
payload,
1069+
symmetricSecretKey: params.symmetricSecretKey,
1070+
symmetricSecretKeyEncoding: params.symmetricSecretKeyEncoding,
1071+
asymmetricPrivateKey: params.asymmetricPrivateKey,
1072+
asymmetricPrivateKeyFormat: params.asymmetricPrivateKeyFormat,
1073+
});
10741074

10751075
if (encodeJwtResult.isErr()) {
10761076
return {
@@ -1132,7 +1132,9 @@ class _TokenEncoderService {
11321132
payload: params.payload,
11331133
payloadErrors: null,
11341134
encodingWarnings: null,
1135-
signingErrors: null,
1135+
signingErrors: params.header ? null : [
1136+
"Fix any errors in the JWT header to enable editing this field.",
1137+
],
11361138
};
11371139

11381140
const processPayloadResult = this.processPayload({
@@ -1170,14 +1172,14 @@ class _TokenEncoderService {
11701172
const encodeJwtResult = isNoneAlg(header.alg)
11711173
? await this.encodeUnsecuredJWT(header, payload)
11721174
: await this.encodeJwt({
1173-
algType: SigningAlgCategoryValues.ANY,
1174-
header,
1175-
payload,
1176-
symmetricSecretKey: params.symmetricSecretKey,
1177-
symmetricSecretKeyEncoding: params.symmetricSecretKeyEncoding,
1178-
asymmetricPrivateKey: params.asymmetricPrivateKey,
1179-
asymmetricPrivateKeyFormat: params.asymmetricPrivateKeyFormat,
1180-
});
1175+
algType: SigningAlgCategoryValues.ANY,
1176+
header,
1177+
payload,
1178+
symmetricSecretKey: params.symmetricSecretKey,
1179+
symmetricSecretKeyEncoding: params.symmetricSecretKeyEncoding,
1180+
asymmetricPrivateKey: params.asymmetricPrivateKey,
1181+
asymmetricPrivateKeyFormat: params.asymmetricPrivateKeyFormat,
1182+
});
11811183

11821184
if (encodeJwtResult.isErr()) {
11831185
return {

0 commit comments

Comments
 (0)