Class TOTPGenerator


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

      • withDefaultValues

        public static TOTPGenerator withDefaultValues​(byte[] secret)
      • at

        public String at​(long secondsPast1970)
                  throws IllegalArgumentException
        Generate a time-based one-time password for a specific time based on seconds past 1970
        Parameters:
        secondsPast1970 - seconds past 1970
        Returns:
        generated TOTP code
        Throws:
        IllegalArgumentException - when code could not be generated
      • verify

        public boolean verify​(String code)
        Checks whether a code is valid for a specific counter
        Parameters:
        code - an OTP code
        Returns:
        a boolean, true if code is valid, otherwise false
      • verify

        public boolean verify​(String code,
                              int delayWindow)
        Checks whether a code is valid for a specific counter taking a delay window into account
        Parameters:
        code - an OTP code
        delayWindow - window in which a code can still be deemed valid
        Returns:
        a boolean, true if code is valid, otherwise false
      • getPeriod

        public Duration getPeriod()
      • getClock

        public Clock getClock()
      • getPasswordLength

        public int getPasswordLength()
      • getURI

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

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

        public Duration durationUntilNextTimeWindow()
        Calculates time until next time window will be reached and a new totp should be generated
        Returns:
        a duration object with duration until next time window