public static String [ ] getServiceTypes ( ) { Set result = new HashSet ( ) ; // All all providers Provider [ ] providers = Security . getProviders ( ) ; for ( int i = 0 ; i < providers . length ; i ++ ) { // Get services provided by each provider Set keys = providers [ i ] . keySet ( ) ; for ( Iterator it = keys . iterator ( ) ; it . hasNext ( ) ; ) { String key = ( String ) it . next ( ) ; key = key . split ( " " ) [ 0 ] ; if ( key . startsWith ( "Alg.Alias." ) ) { // Strip the alias key = key . substring ( 10 ) ; } int ix = key . indexOf ( ' ' ) ; result . add ( key . substring ( 0 , ix ) ) ; } } return ( String [ ] ) result . toArray ( new String [ result . size ( ) ] ) ; }
Exploratory part . This method returns all available services types