Skip to content

Commit e839ecb

Browse files
committed
test: stop testing JWE RSA1_5 Algorithm
1 parent 1b91d88 commit e839ecb

File tree

7 files changed

+33
-74
lines changed

7 files changed

+33
-74
lines changed

cookbook/jwe.mjs

-66
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,4 @@
11
export default [
2-
{
3-
title:
4-
'https://www.rfc-editor.org/rfc/rfc7520#section-5.1 - Key Encryption using RSA v1.5 and AES-HMAC-SHA2',
5-
webcrypto: false,
6-
reproducible: false,
7-
input: {
8-
plaintext:
9-
'You can trust us to stick with you through thick and thin–to the bitter end. And you can trust us to keep any secret of yours–closer than you keep it yourself. But you cannot trust us to let you face trouble alone, and go off without a word. We are your friends, Frodo.',
10-
key: {
11-
kty: 'RSA',
12-
ext: false,
13-
14-
use: 'enc',
15-
n: 'maxhbsmBtdQ3CNrKvprUE6n9lYcregDMLYNeTAWcLj8NnPU9XIYegTHVHQjxKDSHP2l-F5jS7sppG1wgdAqZyhnWvXhYNvcM7RfgKxqNx_xAHx6f3yy7s-M9PSNCwPC2lh6UAkR4I00EhV9lrypM9Pi4lBUop9t5fS9W5UNwaAllhrd-osQGPjIeI1deHTwx-ZTHu3C60Pu_LJIl6hKn9wbwaUmA4cR5Bd2pgbaY7ASgsjCUbtYJaNIHSoHXprUdJZKUMAzV0WOKPfA6OPI4oypBadjvMZ4ZAj3BnXaSYsEZhaueTXvZB4eZOAjIyh2e_VOIKVMsnDrJYAVotGlvMQ',
16-
e: 'AQAB',
17-
d: 'Kn9tgoHfiTVi8uPu5b9TnwyHwG5dK6RE0uFdlpCGnJN7ZEi963R7wybQ1PLAHmpIbNTztfrheoAniRV1NCIqXaW_qS461xiDTp4ntEPnqcKsyO5jMAji7-CL8vhpYYowNFvIesgMoVaPRYMYT9TW63hNM0aWs7USZ_hLg6Oe1mY0vHTI3FucjSM86Nff4oIENt43r2fspgEPGRrdE6fpLc9Oaq-qeP1GFULimrRdndm-P8q8kvN3KHlNAtEgrQAgTTgz80S-3VD0FgWfgnb1PNmiuPUxO8OpI9KDIfu_acc6fg14nsNaJqXe6RESvhGPH2afjHqSy_Fd2vpzj85bQQ',
18-
p: '2DwQmZ43FoTnQ8IkUj3BmKRf5Eh2mizZA5xEJ2MinUE3sdTYKSLtaEoekX9vbBZuWxHdVhM6UnKCJ_2iNk8Z0ayLYHL0_G21aXf9-unynEpUsH7HHTklLpYAzOOx1ZgVljoxAdWNn3hiEFrjZLZGS7lOH-a3QQlDDQoJOJ2VFmU',
19-
q: 'te8LY4-W7IyaqH1ExujjMqkTAlTeRbv0VLQnfLY2xINnrWdwiQ93_VF099aP1ESeLja2nw-6iKIe-qT7mtCPozKfVtUYfz5HrJ_XY2kfexJINb9lhZHMv5p1skZpeIS-GPHCC6gRlKo1q-idn_qxyusfWv7WAxlSVfQfk8d6Et0',
20-
dp: 'UfYKcL_or492vVc0PzwLSplbg4L3-Z5wL48mwiswbpzOyIgd2xHTHQmjJpFAIZ8q-zf9RmgJXkDrFs9rkdxPtAsL1WYdeCT5c125Fkdg317JVRDo1inX7x2Kdh8ERCreW8_4zXItuTl_KiXZNU5lvMQjWbIw2eTx1lpsflo0rYU',
21-
dq: 'iEgcO-QfpepdH8FWd7mUFyrXdnOkXJBCogChY6YKuIHGc_p8Le9MbpFKESzEaLlN1Ehf3B6oGBl5Iz_ayUlZj2IoQZ82znoUrpa9fVYNot87ACfzIG7q9Mv7RiPAderZi03tkVXAdaBau_9vs5rS-7HMtxkVrxSUvJY14TkXlHE',
22-
qi: 'kC-lzZOqoFaZCr5l0tOVtREKoVqaAYhQiqIRGL-MzS4sCmRkxm5vZlXYx6RtE1n_AagjqajlkjieGlxTTThHD8Iga6foGBMaAr5uR1hGQpSc7Gl7CF1DZkBJMTQN6EshYzZfxW08mIO8M6Rzuh0beL6fG9mkDcIyPrBXx2bQ_mM',
23-
},
24-
alg: 'RSA1_5',
25-
enc: 'A128CBC-HS256',
26-
},
27-
generated: {
28-
cek: '3qyTVhIWt5juqZUCpfRqpvauwB956MEJL2Rt-8qXKSo',
29-
iv: 'bbd5sTkYwhAIqfHsx8DayA',
30-
},
31-
encrypting_key: {},
32-
encrypting_content: {
33-
protected: {
34-
alg: 'RSA1_5',
35-
36-
enc: 'A128CBC-HS256',
37-
},
38-
},
39-
output: {
40-
compact:
41-
'eyJhbGciOiJSU0ExXzUiLCJraWQiOiJmcm9kby5iYWdnaW5zQGhvYmJpdG9uLmV4YW1wbGUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0.laLxI0j-nLH-_BgLOXMozKxmy9gffy2gTdvqzfTihJBuuzxg0V7yk1WClnQePFvG2K-pvSlWc9BRIazDrn50RcRai__3TDON395H3c62tIouJJ4XaRvYHFjZTZ2GXfz8YAImcc91Tfk0WXC2F5Xbb71ClQ1DDH151tlpH77f2ff7xiSxh9oSewYrcGTSLUeeCt36r1Kt3OSj7EyBQXoZlN7IxbyhMAfgIe7Mv1rOTOI5I8NQqeXXW8VlzNmoxaGMny3YnGir5Wf6Qt2nBq4qDaPdnaAuuGUGEecelIO1wx1BpyIfgvfjOhMBs9M8XL223Fg47xlGsMXdfuY-4jaqVw.bbd5sTkYwhAIqfHsx8DayA.0fys_TY_na7f8dwSfXLiYdHaA2DxUjD67ieF7fcVbIR62JhJvGZ4_FNVSiGc_raa0HnLQ6s1P2sv3Xzl1p1l_o5wR_RsSzrS8Z-wnI3Jvo0mkpEEnlDmZvDu_k8OWzJv7eZVEqiWKdyVzFhPpiyQU28GLOpRc2VbVbK4dQKPdNTjPPEmRqcaGeTWZVyeSUvf5k59yJZxRuSvWFf6KrNtmRdZ8R4mDOjHSrM_s8uwIFcqt4r5GX8TKaI0zT5CbL5Qlw3sRc7u_hg0yKVOiRytEAEs3vZkcfLkP6nbXdC_PkMdNS-ohP78T2O6_7uInMGhFeX4ctHG7VelHGiT93JfWDEQi5_V9UN1rhXNrYu-0fVMkZAKX3VWi7lzA6BP430m.kvKuFBXHe5mQr4lqgobAUg',
42-
json: {
43-
recipients: [
44-
{
45-
encrypted_key:
46-
'laLxI0j-nLH-_BgLOXMozKxmy9gffy2gTdvqzfTihJBuuzxg0V7yk1WClnQePFvG2K-pvSlWc9BRIazDrn50RcRai__3TDON395H3c62tIouJJ4XaRvYHFjZTZ2GXfz8YAImcc91Tfk0WXC2F5Xbb71ClQ1DDH151tlpH77f2ff7xiSxh9oSewYrcGTSLUeeCt36r1Kt3OSj7EyBQXoZlN7IxbyhMAfgIe7Mv1rOTOI5I8NQqeXXW8VlzNmoxaGMny3YnGir5Wf6Qt2nBq4qDaPdnaAuuGUGEecelIO1wx1BpyIfgvfjOhMBs9M8XL223Fg47xlGsMXdfuY-4jaqVw',
47-
},
48-
],
49-
protected:
50-
'eyJhbGciOiJSU0ExXzUiLCJraWQiOiJmcm9kby5iYWdnaW5zQGhvYmJpdG9uLmV4YW1wbGUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0',
51-
iv: 'bbd5sTkYwhAIqfHsx8DayA',
52-
ciphertext:
53-
'0fys_TY_na7f8dwSfXLiYdHaA2DxUjD67ieF7fcVbIR62JhJvGZ4_FNVSiGc_raa0HnLQ6s1P2sv3Xzl1p1l_o5wR_RsSzrS8Z-wnI3Jvo0mkpEEnlDmZvDu_k8OWzJv7eZVEqiWKdyVzFhPpiyQU28GLOpRc2VbVbK4dQKPdNTjPPEmRqcaGeTWZVyeSUvf5k59yJZxRuSvWFf6KrNtmRdZ8R4mDOjHSrM_s8uwIFcqt4r5GX8TKaI0zT5CbL5Qlw3sRc7u_hg0yKVOiRytEAEs3vZkcfLkP6nbXdC_PkMdNS-ohP78T2O6_7uInMGhFeX4ctHG7VelHGiT93JfWDEQi5_V9UN1rhXNrYu-0fVMkZAKX3VWi7lzA6BP430m',
54-
tag: 'kvKuFBXHe5mQr4lqgobAUg',
55-
},
56-
json_flat: {
57-
protected:
58-
'eyJhbGciOiJSU0ExXzUiLCJraWQiOiJmcm9kby5iYWdnaW5zQGhvYmJpdG9uLmV4YW1wbGUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0',
59-
encrypted_key:
60-
'laLxI0j-nLH-_BgLOXMozKxmy9gffy2gTdvqzfTihJBuuzxg0V7yk1WClnQePFvG2K-pvSlWc9BRIazDrn50RcRai__3TDON395H3c62tIouJJ4XaRvYHFjZTZ2GXfz8YAImcc91Tfk0WXC2F5Xbb71ClQ1DDH151tlpH77f2ff7xiSxh9oSewYrcGTSLUeeCt36r1Kt3OSj7EyBQXoZlN7IxbyhMAfgIe7Mv1rOTOI5I8NQqeXXW8VlzNmoxaGMny3YnGir5Wf6Qt2nBq4qDaPdnaAuuGUGEecelIO1wx1BpyIfgvfjOhMBs9M8XL223Fg47xlGsMXdfuY-4jaqVw',
61-
iv: 'bbd5sTkYwhAIqfHsx8DayA',
62-
ciphertext:
63-
'0fys_TY_na7f8dwSfXLiYdHaA2DxUjD67ieF7fcVbIR62JhJvGZ4_FNVSiGc_raa0HnLQ6s1P2sv3Xzl1p1l_o5wR_RsSzrS8Z-wnI3Jvo0mkpEEnlDmZvDu_k8OWzJv7eZVEqiWKdyVzFhPpiyQU28GLOpRc2VbVbK4dQKPdNTjPPEmRqcaGeTWZVyeSUvf5k59yJZxRuSvWFf6KrNtmRdZ8R4mDOjHSrM_s8uwIFcqt4r5GX8TKaI0zT5CbL5Qlw3sRc7u_hg0yKVOiRytEAEs3vZkcfLkP6nbXdC_PkMdNS-ohP78T2O6_7uInMGhFeX4ctHG7VelHGiT93JfWDEQi5_V9UN1rhXNrYu-0fVMkZAKX3VWi7lzA6BP430m',
64-
tag: 'kvKuFBXHe5mQr4lqgobAUg',
65-
},
66-
},
67-
},
682
{
693
title:
704
'https://www.rfc-editor.org/rfc/rfc7520#section-5.2 - Key Encryption using RSA-OAEP with AES-GCM',

src/runtime/node/zlib.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
import { promisify } from 'util'
22
import { inflateRaw as inflateRawCb, deflateRaw as deflateRawCb } from 'zlib'
3+
import { JWEDecompressionFailed } from '../../util/errors.js'
34

45
import type { InflateFunction, DeflateFunction } from '../../types.d'
56

67
const inflateRaw = promisify(inflateRawCb)
78
const deflateRaw = promisify(deflateRawCb)
89

910
export const inflate: InflateFunction = (input: Uint8Array) =>
10-
inflateRaw(input, { maxOutputLength: 250_000 })
11+
inflateRaw(input, { maxOutputLength: 250_000 }).catch(() => {
12+
throw new JWEDecompressionFailed()
13+
})
1114
export const deflate: DeflateFunction = (input: Uint8Array) => deflateRaw(input)

src/util/errors.ts

+29
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,35 @@ export class JWEDecryptionFailed extends JOSEError {
190190
message = 'decryption operation failed'
191191
}
192192

193+
/**
194+
* An error subclass thrown when a JWE ciphertext decompression fails.
195+
*
196+
* @example Checking thrown error is this one using a stable error code
197+
*
198+
* ```js
199+
* if (err.code === 'ERR_JWE_DECOMPRESSION_FAILED') {
200+
* // ...
201+
* }
202+
* ```
203+
*
204+
* @example Checking thrown error is this one using `instanceof`
205+
*
206+
* ```js
207+
* if (err instanceof jose.errors.JWEDecompressionFailed) {
208+
* // ...
209+
* }
210+
* ```
211+
*/
212+
export class JWEDecompressionFailed extends JOSEError {
213+
static get code(): 'ERR_JWE_DECOMPRESSION_FAILED' {
214+
return 'ERR_JWE_DECOMPRESSION_FAILED'
215+
}
216+
217+
code = 'ERR_JWE_DECOMPRESSION_FAILED'
218+
219+
message = 'decompression operation failed'
220+
}
221+
193222
/**
194223
* An error subclass thrown when a JWE is invalid.
195224
*

tap/jwk.ts

-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ export default (QUnit: QUnit, lib: typeof jose) => {
3535
['RSA-OAEP-384', KEYS.RSA.jwk, true],
3636
['RSA-OAEP-512', KEYS.RSA.jwk, true],
3737
['RSA-OAEP', KEYS.RSA.jwk, true],
38-
['RSA1_5', KEYS.RSA.jwk, env.isNodeCrypto || env.isElectron],
3938
]
4039

4140
function publicJwk(jwk: JsonWebKey) {

tap/pem.ts

-3
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,6 @@ export default (QUnit: QUnit, lib: typeof jose) => {
5555
['RSA-OAEP', KEYS.RSA.pkcs8, true],
5656
['RSA-OAEP', KEYS.RSA.spki, true],
5757
['RSA-OAEP', KEYS.RSA.x509, true],
58-
['RSA1_5', KEYS.RSA.pkcs8, env.isNodeCrypto || env.isElectron],
59-
['RSA1_5', KEYS.RSA.spki, env.isNodeCrypto || env.isElectron],
60-
['RSA1_5', KEYS.RSA.x509, env.isNodeCrypto || env.isElectron],
6158
[['ECDH-ES', 'P-256'], KEYS.P256.pkcs8, true],
6259
[['ECDH-ES', 'P-256'], KEYS.P256.spki, true],
6360
[['ECDH-ES', 'P-256'], KEYS.P256.x509, true],

tap/rsaes.ts

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import type QUnit from 'qunit'
2-
import * as env from './env.js'
32
import type * as jose from '../src/index.js'
43
import * as roundtrip from './encrypt.js'
54

@@ -11,7 +10,6 @@ export default (QUnit: QUnit, lib: typeof jose) => {
1110

1211
type Vector = [string, boolean]
1312
const algorithms: Vector[] = [
14-
['RSA1_5', env.isNodeCrypto || env.isElectron],
1513
['RSA-OAEP', true],
1614
['RSA-OAEP-256', true],
1715
['RSA-OAEP-384', true],

test/jws/restrictions.test.mjs

-1
Original file line numberDiff line numberDiff line change
@@ -122,5 +122,4 @@ test(testECDSASigEncoding, 'ES256')
122122
test(testECDSASigEncoding, 'ES384')
123123
test(testECDSASigEncoding, 'ES512')
124124

125-
test(testRSAenc, 'RSA1_5')
126125
test(testECDSASigEncoding, 'ES256K')

0 commit comments

Comments
 (0)