@@ -269,12 +269,35 @@ describe(QUICClient.name, () => {
269
269
} ) ;
270
270
} )
271
271
describe ( 'graceful tls handshake' , ( ) => {
272
+ const tlsArb = fc . oneof (
273
+ fc . record ( {
274
+ ca : fc . constant ( certFixtures . tlsConfigFileRSACa ) ,
275
+ tlsConfig1 : certFixtures . tlsConfigRSAExampleArb ,
276
+ tlsConfig2 : certFixtures . tlsConfigRSAExampleArb ,
277
+ } ) ,
278
+ fc . record ( {
279
+ ca : fc . constant ( certFixtures . tlsConfigFileOKPCa ) ,
280
+ tlsConfig1 : certFixtures . tlsConfigOKPExampleArb ,
281
+ tlsConfig2 : certFixtures . tlsConfigOKPExampleArb ,
282
+ } ) ,
283
+ fc . record ( {
284
+ ca : fc . constant ( certFixtures . tlsConfigFileECDSACa ) ,
285
+ tlsConfig1 : certFixtures . tlsConfigECDSAExampleArb ,
286
+ tlsConfig2 : certFixtures . tlsConfigECDSAExampleArb ,
287
+ } ) ,
288
+ ) ;
289
+ const {
290
+ ca,
291
+ tlsConfig1,
292
+ tlsConfig2,
293
+ } = fc . sample ( tlsArb , 1 ) [ 0 ]
294
+
272
295
test ( 'server verification succeeds' , async ( ) => {
273
296
const server = new QUICServer ( {
274
297
crypto,
275
298
logger : logger . getChild ( QUICServer . name ) ,
276
299
config : {
277
- tlsConfig : certFixtures . tlsConfigFileRSA1 ,
300
+ tlsConfig : tlsConfig1 ,
278
301
verifyPeer : false ,
279
302
}
280
303
} ) ;
@@ -292,21 +315,22 @@ describe(QUICClient.name, () => {
292
315
logger : logger . getChild ( QUICClient . name ) ,
293
316
config : {
294
317
verifyPeer : true ,
295
- verifyFromPemFile : certFixtures . tlsConfigFileRSA1 . certChainFromPemFile ,
318
+ verifyFromPemFile : ca . certChainFromPemFile ,
296
319
}
297
320
} ) ;
298
321
await handleConnectionEventProm . p
299
322
await client . destroy ( ) ;
300
323
await server . stop ( ) ;
301
324
} )
325
+ // Fixme: client verification works regardless of certs
302
326
test ( 'client verification succeeds' , async ( ) => {
303
327
const server = new QUICServer ( {
304
328
crypto,
305
329
logger : logger . getChild ( QUICServer . name ) ,
306
330
config : {
307
- tlsConfig : certFixtures . tlsConfigFileRSA1 ,
331
+ tlsConfig : tlsConfig1 ,
332
+ verifyFromPemFile : ca . certChainFromPemFile ,
308
333
verifyPeer : true ,
309
- verifyFromPemFile : certFixtures . tlsConfigFileRSA2 . certChainFromPemFile ,
310
334
}
311
335
} ) ;
312
336
const handleConnectionEventProm = promise < any > ( )
@@ -322,8 +346,8 @@ describe(QUICClient.name, () => {
322
346
crypto,
323
347
logger : logger . getChild ( QUICClient . name ) ,
324
348
config : {
349
+ tlsConfig : tlsConfig2 ,
325
350
verifyPeer : false ,
326
- tlsConfig : certFixtures . tlsConfigFileRSA2 ,
327
351
}
328
352
} ) ;
329
353
await handleConnectionEventProm . p
@@ -335,9 +359,9 @@ describe(QUICClient.name, () => {
335
359
crypto,
336
360
logger : logger . getChild ( QUICServer . name ) ,
337
361
config : {
338
- tlsConfig : certFixtures . tlsConfigFileRSA1 ,
362
+ tlsConfig : tlsConfig1 ,
363
+ verifyFromPemFile : ca . certChainFromPemFile ,
339
364
verifyPeer : true ,
340
- verifyFromPemFile : certFixtures . tlsConfigFileRSA2 . certChainFromPemFile ,
341
365
}
342
366
} ) ;
343
367
const handleConnectionEventProm = promise < any > ( )
@@ -353,10 +377,9 @@ describe(QUICClient.name, () => {
353
377
crypto,
354
378
logger : logger . getChild ( QUICClient . name ) ,
355
379
config : {
380
+ tlsConfig : tlsConfig2 ,
381
+ verifyFromPemFile : ca . certChainFromPemFile ,
356
382
verifyPeer : true ,
357
- tlsConfig : certFixtures . tlsConfigFileRSA2 ,
358
- verifyFromPemFile : certFixtures . tlsConfigFileRSA1 . certChainFromPemFile ,
359
-
360
383
}
361
384
} ) ;
362
385
await handleConnectionEventProm . p
@@ -368,7 +391,7 @@ describe(QUICClient.name, () => {
368
391
crypto,
369
392
logger : logger . getChild ( QUICServer . name ) ,
370
393
config : {
371
- tlsConfig : certFixtures . tlsConfigFileRSA1 ,
394
+ tlsConfig : tlsConfig1 ,
372
395
verifyPeer : false ,
373
396
}
374
397
} ) ;
@@ -391,12 +414,13 @@ describe(QUICClient.name, () => {
391
414
await handleConnectionEventProm . p
392
415
await server . stop ( ) ;
393
416
} )
417
+ // Fixme: client verification works regardless of certs
394
418
test ( 'graceful failure verifying client' , async ( ) => {
395
419
const server = new QUICServer ( {
396
420
crypto,
397
421
logger : logger . getChild ( QUICServer . name ) ,
398
422
config : {
399
- tlsConfig : certFixtures . tlsConfigFileRSA1 ,
423
+ tlsConfig : tlsConfig1 ,
400
424
verifyPeer : true ,
401
425
}
402
426
} ) ;
@@ -413,21 +437,20 @@ describe(QUICClient.name, () => {
413
437
crypto,
414
438
logger : logger . getChild ( QUICClient . name ) ,
415
439
config : {
440
+ tlsConfig : tlsConfig2 ,
416
441
verifyPeer : false ,
417
- tlsConfig : certFixtures . tlsConfigFileRSA2 ,
418
442
}
419
443
} ) ) . toReject ( ) ;
420
444
await handleConnectionEventProm . p
421
445
await server . stop ( ) ;
422
446
} )
423
- test ( 'graceful failure verifying client amd server' , async ( ) => {
447
+ test ( 'graceful failure verifying client and server' , async ( ) => {
424
448
const server = new QUICServer ( {
425
449
crypto,
426
450
logger : logger . getChild ( QUICServer . name ) ,
427
451
config : {
428
- tlsConfig : certFixtures . tlsConfigFileRSA1 ,
452
+ tlsConfig : tlsConfig1 ,
429
453
verifyPeer : true ,
430
- verifyFromPemFile : certFixtures . tlsConfigFileRSA2 . certChainFromPemFile ,
431
454
}
432
455
} ) ;
433
456
const handleConnectionEventProm = promise < any > ( )
@@ -443,9 +466,8 @@ describe(QUICClient.name, () => {
443
466
crypto,
444
467
logger : logger . getChild ( QUICClient . name ) ,
445
468
config : {
469
+ tlsConfig : tlsConfig2 ,
446
470
verifyPeer : true ,
447
- tlsConfig : certFixtures . tlsConfigFileRSA2 ,
448
- verifyFromPemFile : certFixtures . tlsConfigFileRSA1 . certChainFromPemFile ,
449
471
}
450
472
} ) ) . toReject ( ) ;
451
473
await handleConnectionEventProm . p
0 commit comments