Class KeyPairCache

java.lang.Object
org.globus.gsi.gssapi.KeyPairCache

public class KeyPairCache extends Object
Simple cache for key pairs. The cache is used to avoid excessive CPU consumption from key pair generation. In particular for purposes of delegation, reusing a key pair is safe.
  • Field Details

    • logger

      private static org.apache.commons.logging.Log logger
    • DEFAULT_ALGORITHM

      public static final String DEFAULT_ALGORITHM
      See Also:
    • DEFAULT_PROVIDER

      public static final String DEFAULT_PROVIDER
      See Also:
    • algorithm

      private final String algorithm
    • provider

      private final String provider
    • lifetime

      private final long lifetime
    • keyPairCache

      private static KeyPairCache keyPairCache
    • entries

      private final Map entries
      Hash table of cache entries. The use of Hashtable is significant, since we rely on access to the table being synchronized.
  • Constructor Details

    • KeyPairCache

      private KeyPairCache(String algorithm, String provider, long lifetime)
      Creates a KeyPairCache object for the specified algorithm, as supplied from the specified provider.
      Parameters:
      algorithm - the standard string name of the algorithm. See Appendix A in the Java Cryptography Architecture API Specification & Reference for information about standard algorithm names.
      provider - the string name of the provider.
      lifetime - the lifetime of the cache in milliseconds.
  • Method Details

    • getKeyPairCache

      public static KeyPairCache getKeyPairCache()
    • getKeyPairCache

      public static KeyPairCache getKeyPairCache(String algorithm, String provider, long lifetime)
    • getKeyPair

      public KeyPair getKeyPair(int bits) throws NoSuchAlgorithmException, NoSuchProviderException
      Returns a key pair of size bits. The same key pair may be returned several times within a period of the cache lifetime. If lifetime was set to zero or less than zero, no keys are cached.
      Parameters:
      bits - the keysize. This is an algorithm-specific metric, such as modulus length, specified in number of bits.
      Throws:
      NoSuchAlgorithmException - if the algorithm is not available in the environment.
      NoSuchProviderException - if the provider is not available in the environment.