Skip to content

Commit cd7dafd

Browse files
Bump jsonwebtoken from 8.5.1 to 9.0.0 (gchq#2219)
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: GCHQDeveloper581 <63102987+GCHQDeveloper581@users.noreply.github.com> (updated tests to reflect stricter parameter validation in the new library version)
1 parent 2b162d4 commit cd7dafd

3 files changed

Lines changed: 100 additions & 63 deletions

File tree

package-lock.json

Lines changed: 16 additions & 54 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@
142142
"json5": "^2.2.3",
143143
"jsonata": "^2.1.0",
144144
"jsonpath-plus": "^10.4.0",
145-
"jsonwebtoken": "8.5.1",
145+
"jsonwebtoken": "9.0.0",
146146
"jsqr": "^1.4.0",
147147
"jsrsasign": "^11.1.1",
148148
"kbpgp": "^2.1.17",

tests/operations/tests/JWTSign.mjs

Lines changed: 83 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const inputObject = JSON.stringify({
1515
}, null, 4);
1616

1717
const hsKey = "secret_cat";
18-
const rsKey = `-----BEGIN RSA PRIVATE KEY-----
18+
const rsKey1024 = `-----BEGIN RSA PRIVATE KEY-----
1919
MIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw
2020
33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW
2121
+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB
@@ -30,11 +30,52 @@ fSSjAkLRi54PKJ8TFUeOP15h9sQzydI8zJU+upvDEKZsZc/UhT/SySDOxQ4G/523
3030
Y0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP
3131
FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==
3232
-----END RSA PRIVATE KEY-----`;
33-
const esKey = `-----BEGIN PRIVATE KEY-----
33+
const rsKey2048 = `-----BEGIN RSA PRIVATE KEY-----
34+
MIIEogIBAAKCAQEAk0VOoksAblwP82DALTG6xGC86Hfho3nChbcPGWyqn+ScfHBF
35+
cg3SeKyy6aWCyLcKfNwE5cPYzuYvVBsZyIrdfFOuV90D/aRYbuw6UkKR3cmmy9qE
36+
qvu05dogvc0BcmkwbC37Q8JnsZBRcosoLGgTFxcK+LXdsG7DukajpsGesxQjOLb2
37+
1jnx+ypzx74xvj7grqlXkxeDKr22q7QkO3A1ApoOuJRAU+SjEEZmqdXzRery2RWx
38+
hkWbCXuQw4PnW5Lh3Wwabnu7XKVIa6wJa1pqL2IAxmlZ0bvGTfjtO5ggNfgJk5V4
39+
bGSOXnsplpG71AWMrK2q6NqHjFIE1szEycUKrwIDAQABAoIBAAivyt6Zy/G2g8kC
40+
852hfvcRubLV92eRdAmNGFqTOqaUcS00i3QZyp4MRGqxtOV/88y/nEOtP1RHkZJw
41+
HXTjHq4JsDvwhnQR8JbCX6z1zkLQdS01u3jrwJTaPpooxdATfPlfO6CYjqM+SapB
42+
o7dS1ZAZb4U8vPx+MWoDEVNxvO7/xyqho1Oc4H9MwqQUiyG2WfIoqxLSrBYcambv
43+
RmySwTIpgQZTr61EeWf/0eWpV0iEYbSnkB/VaKW+5tg4gCjPgy5v6/LQ0u/pzlYz
44+
ayCL3xN2rp0tigXsiiWz3cM5gDsnatK4nVNRs9y3JSZpWpI236ZfZjs8Lts+WBUw
45+
hAEoE9kCgYEAyEIGD1A7R/t5EYk5HhHDH5tGdyxejAcQL5AIz0YnTZU8Iixyc7FR
46+
uDmAMiuKIcJY/nUlxZjSxNc3MkOfZNggQvf9ONrt+ftQ1yyTjv+019NfU4w4d0Ep
47+
LNaiAHgaPKimBUZjYXbLgiMXj/1pBaQmgUYTK/VlO3PVdowxxzxMYlMCgYEAvEOG
48+
GrhVaQV1nAYx86BgZ3wn90hBFXZWGaN+eXUmyrast93Ih3TCSgQDKPuN3pdv/TIe
49+
cpQv/BxEMpW+6d5Z1NP3GbrLpaZUiUNk8fqw1S3pmD5aWZrYIUaNukAyOxnZVgjv
50+
EWD9QTpI663gODaeZZTkDYiRNzTzGOg5HtzporUCgYBBOphEtqqImNXnq13qeHip
51+
O+eo+8/UJpzUEUN9WGmG8NxEeVvSaWin7DrgnKQCuQ5J3Biwk0XcDgoRmks6Ctf/
52+
WE2oDk/DxGOhowhxZMMgJd6AFUVzOstRqpvcMULCjWB+iV3nqk1Bl3KeWTmzN7O/
53+
Gfc2s1kFE4btdV7lebObtwKBgE3rkLS8eLVYCh6Cvef9CAms7Im/wRhV+zrvXWh9
54+
4YljZEdRpy7RV5z03i33N/faLALa3JlF1jp9pIhfTD5Vxk59ULe4hZNRLYoGd+Bj
55+
hw8kyps1q4WMvkm/fueIrIGjqD2gwvopb4iwy/+n3rbFfHfE0UL8tEXqR3eWnhW1
56+
D4pFAoGAccR4eMJD43hJWaUQLtsj0RoW9lFKVXj7aqkIIeupXwt7Ic2z/FhCAJi+
57+
V0MWpd3K6+kPl+ifdt8U4kcYfubPMfJhd7IkMcgQS+yZK1+5xWdRISvI8GpNwIHE
58+
LUkVkCCadXNNZ7b1nmUKjse95u4IaE6hwAqjSTNb05gPmCfoEjg=
59+
-----END RSA PRIVATE KEY-----`;
60+
const esKeyP256 = `-----BEGIN PRIVATE KEY-----
3461
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgevZzL1gdAFr88hb2
3562
OF/2NxApJCzGCEDdfSp6VQO30hyhRANCAAQRWz+jn65BtOMvdyHKcvjBeBSDZH2r
3663
1RTwjmYSi9R/zpBnuQ4EiMnCqfMPWiZqB4QdbAd0E7oH50VpuZ1P087G
3764
-----END PRIVATE KEY-----`;
65+
const esKeyP384 = `-----BEGIN PRIVATE KEY-----
66+
MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDDpgCvB2frnLKd7TuWe
67+
JM1ejXXmr9y/5gskxKuuylLvpQTiDdtLtuhJnvw1/zWKWO6hZANiAAQ5Crhsi5FD
68+
t55i53dCtdzG9OzCnbDFf/6136ZfEiakDTDeWCdUvNnB3WQEcVBr97BfSWLI9mO+
69+
T5yzm0RfhgvWIq/tBou+sIDeGp6NQfJwhDhf+JsdeF174gtfNMZGj/s=
70+
-----END PRIVATE KEY-----`;
71+
const esKeyP521 = `-----BEGIN PRIVATE KEY-----
72+
MIHuAgEAMBAGByqGSM49AgEGBSuBBAAjBIHWMIHTAgEBBEIA0dBErrZ5ovKq4Xf/
73+
iTlRkYxuOfgBZ6+tWIfG13YwthB1XrH06YmteZGNjHHLZEeycwUt0jM4kUb+tOsJ
74+
3ckhj1ihgYkDgYYABACYgsa8JWKH46CQagwNw14v/L+DIs1WAjJdMXZySjKlRkD9
75+
LtLMxkbX2H4H4Zl2KzCMJkwTSETzSKNlXvAUJqKbRwHezCp4y5XZN9MOBYdmyylZ
76+
NOVxwwTouimNkJ0K6A8+/Im5S3PWB8Ra1D6t+bT1WHHhEePZcltSLLFlbIIyot5m
77+
2w==
78+
-----END PRIVATE KEY-----`;
3879

3980
TestRegister.addTests([
4081
{
@@ -88,7 +129,24 @@ TestRegister.addTests([
88129
recipeConfig: [
89130
{
90131
op: "JWT Sign",
91-
args: [esKey, "ES256", "{}"],
132+
args: [esKeyP256, "ES256", "{}"],
133+
},
134+
{
135+
op: "JWT Decode",
136+
args: []
137+
}
138+
],
139+
},
140+
{
141+
name: "JWT Sign: ES384 - P256 key",
142+
input: inputObject,
143+
expectedOutput: `Error: Have you entered the key correctly? The key should be either the secret for HMAC algorithms or the PEM-encoded private key for RSA and ECDSA.
144+
145+
Error: "alg" parameter "ES384" requires curve "secp384r1".`,
146+
recipeConfig: [
147+
{
148+
op: "JWT Sign",
149+
args: [esKeyP256, "ES384", "{}"],
92150
},
93151
{
94152
op: "JWT Decode",
@@ -103,7 +161,7 @@ TestRegister.addTests([
103161
recipeConfig: [
104162
{
105163
op: "JWT Sign",
106-
args: [esKey, "ES384", "{}"],
164+
args: [esKeyP384, "ES384", "{}"],
107165
},
108166
{
109167
op: "JWT Decode",
@@ -118,7 +176,24 @@ TestRegister.addTests([
118176
recipeConfig: [
119177
{
120178
op: "JWT Sign",
121-
args: [esKey, "ES512", "{}"],
179+
args: [esKeyP521, "ES512", "{}"],
180+
},
181+
{
182+
op: "JWT Decode",
183+
args: []
184+
}
185+
],
186+
},
187+
{
188+
name: "JWT Sign: RS256, weak key",
189+
input: inputObject,
190+
expectedOutput: `Error: Have you entered the key correctly? The key should be either the secret for HMAC algorithms or the PEM-encoded private key for RSA and ECDSA.
191+
192+
Error: secretOrPrivateKey has a minimum key size of 2048 bits for RS256`,
193+
recipeConfig: [
194+
{
195+
op: "JWT Sign",
196+
args: [rsKey1024, "RS256", "{}"],
122197
},
123198
{
124199
op: "JWT Decode",
@@ -133,7 +208,7 @@ TestRegister.addTests([
133208
recipeConfig: [
134209
{
135210
op: "JWT Sign",
136-
args: [rsKey, "RS256", "{}"],
211+
args: [rsKey2048, "RS256", "{}"],
137212
},
138213
{
139214
op: "JWT Decode",
@@ -148,7 +223,7 @@ TestRegister.addTests([
148223
recipeConfig: [
149224
{
150225
op: "JWT Sign",
151-
args: [rsKey, "RS384", "{}"],
226+
args: [rsKey2048, "RS384", "{}"],
152227
},
153228
{
154229
op: "JWT Decode",
@@ -163,7 +238,7 @@ TestRegister.addTests([
163238
recipeConfig: [
164239
{
165240
op: "JWT Sign",
166-
args: [esKey, "RS512", "{}"],
241+
args: [rsKey2048, "RS512", "{}"],
167242
},
168243
{
169244
op: "JWT Decode",

0 commit comments

Comments
 (0)