Class HOTPGenerator


  • public final class HOTPGenerator
    extends Object
    Generates counter-based one-time passwords
    Author:
    Bastiaan Jansen
    • Method Detail

      • withDefaultValues

        public static HOTPGenerator withDefaultValues​(byte[] secret)
        Create a com.bastiaanjansen.otp.HOTPGenerator with default values
        Parameters:
        secret - used to generate hash
        Returns:
        a com.bastiaanjansen.otp.HOTPGenerator with default values
      • getURI

        public URI getURI​(int counter,
                          String issuer)
                   throws URISyntaxException
        Create an OTPAuth URI for easy user on-boarding with only an issuer
        Parameters:
        counter - of URI
        issuer - name for URI
        Returns:
        OTPAuth URI
        Throws:
        URISyntaxException - when URI cannot be created
      • getURI

        public URI getURI​(int counter,
                          String issuer,
                          String account)
                   throws URISyntaxException
        Create an OTPAuth URI for easy user on-boarding with an issuer and account name
        Parameters:
        counter - of URI
        issuer - name for URI
        account - name for URI
        Returns:
        OTPAuth URI
        Throws:
        URISyntaxException - when URI cannot be created
      • getPasswordLength

        public int getPasswordLength()
      • verify

        public boolean verify​(String code,
                              long counter)
        Checks whether a code is valid for a specific counter with a delay window of 0
        Parameters:
        code - an OTP code
        counter - how many times time interval has passed since 1970
        Returns:
        a boolean, true if code is valid, otherwise false
      • verify

        public boolean verify​(String code,
                              long counter,
                              int delayWindow)
        Checks whether a code is valid for a specific counter taking a delay window into account
        Parameters:
        code - an OTP codee
        counter - how many times time interval has passed since 1970
        delayWindow - window in which a code can still be deemed valid
        Returns:
        a boolean, true if code is valid, otherwise false
      • generate

        public String generate​(long counter)
                        throws IllegalStateException
        Generate a code
        Parameters:
        counter - how many times time interval has passed since 1970
        Returns:
        generated OTP code
        Throws:
        IllegalStateException - when hashing algorithm throws an error