Class PasswordFactorySpi


  • public abstract class PasswordFactorySpi
    extends Object
    The SPI for password factories to implement.
    Author:
    David M. Lloyd
    • Constructor Detail

      • PasswordFactorySpi

        protected PasswordFactorySpi()
        Construct a new instance.
    • Method Detail

      • engineGeneratePassword

        protected abstract Password engineGeneratePassword​(String algorithm,
                                                           KeySpec keySpec)
                                                    throws InvalidKeySpecException
        Generate a password from the given key specification.
        Parameters:
        algorithm - the password algorithm
        keySpec - the key specification
        Returns:
        the password
        Throws:
        InvalidKeySpecException - if the key specification is not supported
      • engineGetKeySpec

        protected abstract <S extends KeySpec> S engineGetKeySpec​(String algorithm,
                                                                  Password password,
                                                                  Class<S> keySpecType)
                                                           throws InvalidKeySpecException
        Get a key specification for the given password object.
        Type Parameters:
        S - the key specification type
        Parameters:
        algorithm - the password algorithm
        password - the password object
        keySpecType - the key specification class
        Returns:
        the key specification
        Throws:
        InvalidKeySpecException - if the key specification type is not supported
      • engineIsTranslatablePassword

        protected abstract boolean engineIsTranslatablePassword​(String algorithm,
                                                                Password password)
        Determine whether the given password can be translated into one which is consumable by this factory. If this method returns true, then engineTranslatePassword(String, Password) must succeed.
        Parameters:
        password - the password object
        Returns:
        true if the given password is supported by this algorithm, false otherwise
      • engineTranslatePassword

        protected abstract Password engineTranslatePassword​(String algorithm,
                                                            Password password)
                                                     throws InvalidKeyException
        Translate a password object into one which is supported by this engine.
        Parameters:
        algorithm - the password algorithm
        password - the password object
        Returns:
        the translated password
        Throws:
        InvalidKeyException - if the given password type is not supported
      • engineVerify

        protected abstract boolean engineVerify​(String algorithm,
                                                Password password,
                                                char[] guess)
                                         throws InvalidKeyException
        Perform password verification.
        Parameters:
        algorithm - the password algorithm
        password - the password object
        guess - the guessed password
        Returns:
        true if the password matches, false otherwise
        Throws:
        InvalidKeyException - if the given password type is not supported
      • engineConvertibleToKeySpec

        protected abstract <S extends KeySpec> boolean engineConvertibleToKeySpec​(String algorithm,
                                                                                  Password password,
                                                                                  Class<S> keySpecType)
        Determine whether the given password object is convertible to the given key specification type.
        Type Parameters:
        S - the key specification type
        Parameters:
        algorithm - the password algorithm
        password - the password object
        keySpecType - the key specification class
        Returns:
        true if the password is convertible, false otherwise