code: 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()] );
      }
docs: Exploratory part. This method returns all available services types