Class HmacOneTimePasswordGenerator

java.lang.Object
com.eatthepath.otp.HmacOneTimePasswordGenerator

public class HmacOneTimePasswordGenerator extends Object
Generates HMAC-based one-time passwords (HOTP) as specified in RFC 4226. HmacOneTimePasswordGenerator instances are thread-safe and may be shared between threads.
Author:
Jon Chambers
  • Field Details

    • DEFAULT_PASSWORD_LENGTH

      public static final int DEFAULT_PASSWORD_LENGTH
      The default length, in decimal digits, for one-time passwords.
      See Also:
  • Constructor Details

    • HmacOneTimePasswordGenerator

      public HmacOneTimePasswordGenerator()
      Creates a new HMAC-based one-time password (HOTP) generator using a default password length (6 digits).
    • HmacOneTimePasswordGenerator

      public HmacOneTimePasswordGenerator(int passwordLength)
      Creates a new HMAC-based one-time password (HOTP) generator using the given password length.
      Parameters:
      passwordLength - the length, in decimal digits, of the one-time passwords to be generated; must be between 6 and 8, inclusive
  • Method Details

    • generateOneTimePassword

      public int generateOneTimePassword(Key key, long counter) throws InvalidKeyException
      Generates a one-time password using the given key and counter value.
      Parameters:
      key - the key to be used to generate the password
      counter - the counter value for which to generate the password
      Returns:
      an integer representation of a one-time password; callers will need to format the password for display on their own
      Throws:
      InvalidKeyException - if the given key is inappropriate for initializing the Mac for this generator
    • generateOneTimePasswordString

      public String generateOneTimePasswordString(Key key, long counter) throws InvalidKeyException
      Generates a one-time password using the given key and counter value and formats it as a string using the system default locale.
      Parameters:
      key - the key to be used to generate the password
      counter - the counter value for which to generate the password
      Returns:
      a string representation of a one-time password
      Throws:
      InvalidKeyException - if the given key is inappropriate for initializing the Mac for this generator
      See Also:
    • generateOneTimePasswordString

      public String generateOneTimePasswordString(Key key, long counter, Locale locale) throws InvalidKeyException
      Generates a one-time password using the given key and counter value and formats it as a string using the given locale.
      Parameters:
      key - the key to be used to generate the password
      counter - the counter value for which to generate the password
      locale - the locale to apply during formatting
      Returns:
      a string representation of a one-time password
      Throws:
      InvalidKeyException - if the given key is inappropriate for initializing the Mac for this generator
    • getPasswordLength

      public int getPasswordLength()
      Returns the length, in decimal digits, of passwords produced by this generator.
      Returns:
      the length, in decimal digits, of passwords produced by this generator
    • getAlgorithm

      public String getAlgorithm()
      Returns the name of the HMAC algorithm used by this generator.
      Returns:
      the name of the HMAC algorithm used by this generator