Class CredentialStore

  • Direct Known Subclasses:
    IsoCredentialStore

    public abstract class CredentialStore
    extends java.lang.Object
    A container for cryptographic credentials. Smartcards may protect access to the data stored on them by means of cryptography. The card services that are used to access that data will then require credentials to overcome this protection. The cryptographic algorithms that have to be used depend on the smartcard's OS. The kind of credential that has to be presented to the card service depends on the algorithm to support as well as on the service. For example, if the algorithm is DES, the credential may be a DES key, or an implementation of the DES algorithm for a specific key.
    As a result of these dependencies, card services supporting a particular smartcard or smartcard family will define specific credentials that have to be provided to them. Additionally, they will define a store into which only these credentials can be put. This class is the abstract base class of such stores. Methods to put credentials into it as well as to retrieve them have to be added in dervied classes, since at least the type of the credentials is service specific.
    Applications will collect their credentials for a specific smartcard in a credential store. Credential stores are collected in instances of class CredentialBag, so the same application may support different smartcards without having to worry about which one is inserted.
    Author:
    Reto Hermann (rhe@zurich.ibm.com), Thomas Schaeck (schaeck@de.ibm.com), Roland Weber (rolweber@de.ibm.com)
    See Also:
    Credential, CredentialBag, CardService
    • Constructor Detail

      • CredentialStore

        protected CredentialStore()
        Creates a new generic store for credentials.
    • Method Detail

      • supports

        public abstract boolean supports​(CardID cardID)
        Tests whether this store supports a particular card. Providers of card services that require credentials have to provide an appropriate CredentialStore class which supports the same cards as the services.
        Parameters:
        cardID - the ATR of the smartcard to test for
        Returns:
        true if the card is supported, false otherwise
      • getInstance

        public static CredentialStore getInstance​(java.lang.String className)
        Instantiates a new credential store. The class to instantiate has to provide a default constructor.
        Parameters:
        className - a subclass of CredentialStore to instantiate
        Returns:
        a new instance of the argument class, or null if the instantiation failed
      • storeCredential

        protected final void storeCredential​(java.lang.Object credID,
                                             Credential cred)
        Stores a credential. The credential can be retrieved using fetchCredential with an identifier equal to the one passed on storing it.
        The credentials are stored in a hashtable. The identifier therefore has to implement hashCode and equals appropriately. This method is protected since stores supporting a particular card will require a particular kind of credentials to be stored in them. They will also define an appropriate identifier for credentials.
        Parameters:
        credID - an identifier for the credential
        cred - the credential to be stored
        See Also:
        fetchCredential(java.lang.Object), Hashtable, Object.hashCode(), Object.equals(java.lang.Object)
      • fetchCredential

        protected final Credential fetchCredential​(java.lang.Object credID)
        Retrieves a credential. This method returns the last credential that was passed to storeCredential with an identifier that equals the argument.
        Parameters:
        credID - an identifier for the credential to retrieve
        Returns:
        the credential for the given identifier, or null if not found
        See Also:
        storeCredential(java.lang.Object, opencard.opt.security.Credential)