Class PasswordFactorySpi

java.lang.Object
org.wildfly.security.password.PasswordFactorySpi
Direct Known Subclasses:
PasswordFactorySpiImpl

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

    • PasswordFactorySpi

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

    • 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
    • engineVerify

      protected boolean engineVerify(String algorithm, Password password, char[] guess, Charset hashCharset) throws InvalidKeyException
      Perform password verification.
      Parameters:
      algorithm - the password algorithm
      password - the password object
      guess - the guessed password
      hashCharset - the character set used in the password object representation (must not be null)
      Returns:
      true if the password matches, false otherwise
      Throws:
      InvalidKeyException - if the given password type is not supported
      UnsupportedOperationException - if this method is not supported by the password factory implementation
    • 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
    • engineTransform

      protected abstract Password engineTransform(String algorithm, Password password, AlgorithmParameterSpec parameterSpec) throws InvalidKeyException, InvalidAlgorithmParameterException
      Transform a password with new parameters. Not every transformation is allowed, but iterative password types generally should allow increasing the number of iterations.
      Parameters:
      algorithm - the password algorithm
      password - the password
      parameterSpec - the new parameters
      Returns:
      the transformed password
      Throws:
      InvalidKeyException - if the given password is invalid
      InvalidAlgorithmParameterException - if the transformation cannot be applied to the given parameters