1
1
/*
2
2
* ===========================================================================
3
- * (c) Copyright IBM Corp. 2022, 2023 All Rights Reserved
3
+ * (c) Copyright IBM Corp. 2022, 2024 All Rights Reserved
4
4
* ===========================================================================
5
5
*
6
6
* This code is free software; you can redistribute it and/or modify it
@@ -687,11 +687,19 @@ private void initProviders() {
687
687
688
688
// Remove the provider's optional arguments if there are.
689
689
pos = providerName .indexOf (' ' );
690
- providerName = (pos < 0 ) ? providerName .trim () : providerName .substring (0 , pos ).trim ();
691
- // Remove the provider's class package names if there are.
692
- pos = providerName .lastIndexOf ('.' );
693
- providerName = (pos < 0 ) ? providerName : providerName .substring (pos + 1 , providerName .length ());
694
- // Provider without arguments and package names.
690
+ if (pos >= 0 ) {
691
+ providerName = providerName .substring (0 , pos );
692
+ }
693
+ providerName = providerName .trim ();
694
+
695
+ // Remove argument, e.g. -NSS-FIPS, if present.
696
+ pos = providerName .indexOf ('-' );
697
+ if (pos >= 0 ) {
698
+ providerName = providerName .substring (0 , pos );
699
+ }
700
+
701
+ // Provider name defined in provider construction method.
702
+ providerName = getProvidersSimpleName (providerName );
695
703
providersSimpleName .add (pNum - 1 , providerName );
696
704
}
697
705
@@ -959,11 +967,12 @@ boolean isRestrictedProviderAllowed(String providerName) {
959
967
960
968
// Remove argument, e.g. -NSS-FIPS, if there is.
961
969
int pos = providerName .indexOf ('-' );
962
- providerName = (pos < 0 ) ? providerName : providerName .substring (0 , pos );
970
+ if (pos >= 0 ) {
971
+ providerName = providerName .substring (0 , pos );
972
+ }
963
973
964
- // Remove the provider class package name if there is.
965
- pos = providerName .lastIndexOf ('.' );
966
- providerName = (pos < 0 ) ? providerName : providerName .substring (pos + 1 , providerName .length ());
974
+ // Provider name defined in provider construction method.
975
+ providerName = getProvidersSimpleName (providerName );
967
976
968
977
// Check if the provider is in restricted security provider list.
969
978
// If not, the provider won't be registered.
@@ -988,6 +997,27 @@ boolean isRestrictedProviderAllowed(String providerName) {
988
997
return false ;
989
998
}
990
999
1000
+ /**
1001
+ * Get the provider name defined in provider construction method.
1002
+ *
1003
+ * @param providerName provider name or provider with packages
1004
+ * @return provider name defined in provider construction method
1005
+ */
1006
+ private static String getProvidersSimpleName (String providerName ) {
1007
+ if (providerName .equals ("com.sun.security.sasl.Provider" )) {
1008
+ // The main class for the SunSASL provider is com.sun.security.sasl.Provider.
1009
+ return "SunSASL" ;
1010
+ } else {
1011
+ // Remove the provider's class package names if present.
1012
+ int pos = providerName .lastIndexOf ('.' );
1013
+ if (pos >= 0 ) {
1014
+ providerName = providerName .substring (pos + 1 );
1015
+ }
1016
+ // Provider without package names.
1017
+ return providerName ;
1018
+ }
1019
+ }
1020
+
991
1021
/**
992
1022
* List audit info of all available RestrictedSecurity profiles.
993
1023
*/
0 commit comments