@@ -165,7 +165,7 @@ private static void debug(Object o) {
165
165
// name of the C function that returns the PKCS#11 functionlist
166
166
// This option primarily exists for the deprecated
167
167
// Secmod.Module.getProvider() method.
168
- private String functionList = "C_GetFunctionList" ;
168
+ private String functionList = null ;
169
169
170
170
// whether to use NSS secmod mode. Implicitly set if nssLibraryDirectory,
171
171
// nssSecmodDirectory, or nssModule is specified.
@@ -311,6 +311,12 @@ boolean getAllowSingleThreadedModules() {
311
311
}
312
312
313
313
String getFunctionList () {
314
+ if (functionList == null ) {
315
+ // defaults to "C_GetFunctionList" for NSS secmod
316
+ if (nssUseSecmod || nssUseSecmodTrust ) {
317
+ return "C_GetFunctionList" ;
318
+ }
319
+ }
314
320
return functionList ;
315
321
}
316
322
@@ -408,67 +414,73 @@ private void parse() throws IOException {
408
414
if (token != TT_WORD ) {
409
415
throw excToken ("Unexpected token:" );
410
416
}
411
- String word = st .sval ;
412
- if ( word . equals ( "name" )) {
413
- name = parseStringEntry (word );
414
- } else if ( word . equals ( "library" )) {
415
- library = parseLibrary (word );
416
- } else if ( word . equals ( "description" )) {
417
- parseDescription (word );
418
- } else if ( word . equals ( "slot" )) {
419
- parseSlotID (word );
420
- } else if ( word . equals ( "slotListIndex" )) {
421
- parseSlotListIndex (word );
422
- } else if ( word . equals ( "enabledMechanisms" )) {
423
- parseEnabledMechanisms (word );
424
- } else if ( word . equals ( "disabledMechanisms" )) {
425
- parseDisabledMechanisms (word );
426
- } else if ( word . equals ( "attributes" )) {
427
- parseAttributes (word );
428
- } else if ( word . equals ( "handleStartupErrors" )) {
429
- parseHandleStartupErrors (word );
430
- } else if ( word . endsWith ( "insertionCheckInterval" )) {
431
- insertionCheckInterval = parseIntegerEntry (word );
417
+ switch ( st .sval ) {
418
+ case "name" ->
419
+ name = parseStringEntry (st . sval );
420
+ case "library" ->
421
+ library = parseLibrary (st . sval );
422
+ case "description" ->
423
+ parseDescription (st . sval );
424
+ case "slot" ->
425
+ parseSlotID (st . sval );
426
+ case "slotListIndex" ->
427
+ parseSlotListIndex (st . sval );
428
+ case "enabledMechanisms" ->
429
+ parseEnabledMechanisms (st . sval );
430
+ case "disabledMechanisms" ->
431
+ parseDisabledMechanisms (st . sval );
432
+ case "attributes" ->
433
+ parseAttributes (st . sval );
434
+ case "handleStartupErrors" ->
435
+ parseHandleStartupErrors (st . sval );
436
+ case "insertionCheckInterval" -> {
437
+ insertionCheckInterval = parseIntegerEntry (st . sval );
432
438
if (insertionCheckInterval < 100 ) {
433
- throw excLine (word + " must be at least 100 ms" );
439
+ throw excLine (st . sval + " must be at least 100 ms" );
434
440
}
435
- } else if (word .equals ("cleaner.shortInterval" )) {
436
- resourceCleanerShortInterval = parseIntegerEntry (word );
441
+ }
442
+ case "cleaner.shortInterval" -> {
443
+ resourceCleanerShortInterval = parseIntegerEntry (st .sval );
437
444
if (resourceCleanerShortInterval < 1_000 ) {
438
- throw excLine (word + " must be at least 1000 ms" );
445
+ throw excLine (st . sval + " must be at least 1000 ms" );
439
446
}
440
- } else if (word .equals ("cleaner.longInterval" )) {
441
- resourceCleanerLongInterval = parseIntegerEntry (word );
447
+ }
448
+ case "cleaner.longInterval" -> {
449
+ resourceCleanerLongInterval = parseIntegerEntry (st .sval );
442
450
if (resourceCleanerLongInterval < 1_000 ) {
443
- throw excLine (word + " must be at least 1000 ms" );
451
+ throw excLine (st . sval + " must be at least 1000 ms" );
444
452
}
445
- } else if (word .equals ("destroyTokenAfterLogout" )) {
446
- destroyTokenAfterLogout = parseBooleanEntry (word );
447
- } else if (word .equals ("showInfo" )) {
448
- showInfo = parseBooleanEntry (word );
449
- } else if (word .equals ("keyStoreCompatibilityMode" )) {
450
- keyStoreCompatibilityMode = parseBooleanEntry (word );
451
- } else if (word .equals ("explicitCancel" )) {
452
- explicitCancel = parseBooleanEntry (word );
453
- } else if (word .equals ("omitInitialize" )) {
454
- omitInitialize = parseBooleanEntry (word );
455
- } else if (word .equals ("allowSingleThreadedModules" )) {
456
- allowSingleThreadedModules = parseBooleanEntry (word );
457
- } else if (word .equals ("functionList" )) {
458
- functionList = parseStringEntry (word );
459
- } else if (word .equals ("nssUseSecmod" )) {
460
- nssUseSecmod = parseBooleanEntry (word );
461
- } else if (word .equals ("nssLibraryDirectory" )) {
462
- nssLibraryDirectory = parseLibrary (word );
453
+ }
454
+ case "destroyTokenAfterLogout" ->
455
+ destroyTokenAfterLogout = parseBooleanEntry (st .sval );
456
+ case "showInfo" ->
457
+ showInfo = parseBooleanEntry (st .sval );
458
+ case "keyStoreCompatibilityMode" ->
459
+ keyStoreCompatibilityMode = parseBooleanEntry (st .sval );
460
+ case "explicitCancel" ->
461
+ explicitCancel = parseBooleanEntry (st .sval );
462
+ case "omitInitialize" ->
463
+ omitInitialize = parseBooleanEntry (st .sval );
464
+ case "allowSingleThreadedModules" ->
465
+ allowSingleThreadedModules = parseBooleanEntry (st .sval );
466
+ case "functionList" ->
467
+ functionList = parseStringEntry (st .sval );
468
+ case "nssUseSecmod" ->
469
+ nssUseSecmod = parseBooleanEntry (st .sval );
470
+ case "nssLibraryDirectory" -> {
471
+ nssLibraryDirectory = parseLibrary (st .sval );
463
472
nssUseSecmod = true ;
464
- } else if (word .equals ("nssSecmodDirectory" )) {
465
- nssSecmodDirectory = expand (parseStringEntry (word ));
473
+ }
474
+ case "nssSecmodDirectory" -> {
475
+ nssSecmodDirectory = expand (parseStringEntry (st .sval ));
466
476
nssUseSecmod = true ;
467
- } else if (word .equals ("nssModule" )) {
468
- nssModule = parseStringEntry (word );
477
+ }
478
+ case "nssModule" -> {
479
+ nssModule = parseStringEntry (st .sval );
469
480
nssUseSecmod = true ;
470
- } else if (word .equals ("nssDbMode" )) {
471
- String mode = parseStringEntry (word );
481
+ }
482
+ case "nssDbMode" -> {
483
+ String mode = parseStringEntry (st .sval );
472
484
if (mode .equals ("readWrite" )) {
473
485
nssDbMode = Secmod .DbMode .READ_WRITE ;
474
486
} else if (mode .equals ("readOnly" )) {
@@ -479,22 +491,25 @@ private void parse() throws IOException {
479
491
throw excToken ("nssDbMode must be one of readWrite, readOnly, and noDb:" );
480
492
}
481
493
nssUseSecmod = true ;
482
- } else if (word .equals ("nssNetscapeDbWorkaround" )) {
483
- nssNetscapeDbWorkaround = parseBooleanEntry (word );
494
+ }
495
+ case "nssNetscapeDbWorkaround" -> {
496
+ nssNetscapeDbWorkaround = parseBooleanEntry (st .sval );
484
497
nssUseSecmod = true ;
485
- } else if (word .equals ("nssArgs" )) {
486
- parseNSSArgs (word );
487
- } else if (word .equals ("nssUseSecmodTrust" )) {
488
- nssUseSecmodTrust = parseBooleanEntry (word );
489
- } else if (word .equals ("useEcX963Encoding" )) {
490
- useEcX963Encoding = parseBooleanEntry (word );
491
- } else if (word .equals ("nssOptimizeSpace" )) {
492
- nssOptimizeSpace = parseBooleanEntry (word );
493
- } else {
498
+ }
499
+ case "nssArgs" ->
500
+ parseNSSArgs (st .sval );
501
+ case "nssUseSecmodTrust" ->
502
+ nssUseSecmodTrust = parseBooleanEntry (st .sval );
503
+ case "useEcX963Encoding" ->
504
+ useEcX963Encoding = parseBooleanEntry (st .sval );
505
+ case "nssOptimizeSpace" ->
506
+ nssOptimizeSpace = parseBooleanEntry (st .sval );
507
+ default ->
494
508
throw new ConfigurationException
495
- ("Unknown keyword '" + word + "', line " + st .lineno ());
509
+ ("Unknown keyword '" + st .sval + "', line " +
510
+ st .lineno ());
496
511
}
497
- parsedKeywords .add (word );
512
+ parsedKeywords .add (st . sval );
498
513
}
499
514
reader .close ();
500
515
reader = null ;
0 commit comments