Package com.bastiaanjansen.otp
Class TOTPGenerator
java.lang.Object
com.bastiaanjansen.otp.OneTimePasswordGenerator
com.bastiaanjansen.otp.TOTPGenerator
public class TOTPGenerator extends OneTimePasswordGenerator
Generates time-based one-time passwords
- Author:
- Bastiaan Jansen
- See Also:
OneTimePasswordGenerator
-
Field Summary
Fields Modifier and Type Field Description static java.time.DurationDEFAULT_PERIODDefault time interval for a time-based one-time passwordFields inherited from class com.bastiaanjansen.otp.OneTimePasswordGenerator
algorithm, DEFAULT_HMAC_ALGORITHM, DEFAULT_PASSWORD_LENGTH, passwordLength, secret -
Constructor Summary
Constructors Constructor Description TOTPGenerator(int passwordLength, HMACAlgorithm algorithm, String secret)Constructs generator with custom password length and hashing algorithmTOTPGenerator(int passwordLength, String secret)Constructs generator with custom password lengthTOTPGenerator(int passwordLength, java.time.Duration period, HMACAlgorithm algorithm, String secret)Constructs generator with custom password length, time interval and hashing algorithmTOTPGenerator(int passwordLength, java.time.Duration period, String secret)Constructs generator with custom password length and periodTOTPGenerator(HMACAlgorithm algorithm, String secret)Constructs generator with custom hashing algorithm and default time intervalTOTPGenerator(String secret)Constructs generatorTOTPGenerator(URI uri)Constructs generator from a OTPAuth URITOTPGenerator(java.time.Duration period, HMACAlgorithm algorithm, String secret)Constructs generator with custom time interval and hashing algorithmTOTPGenerator(java.time.Duration period, String secret)Constructs generator with custom time interval -
Method Summary
Modifier and Type Method Description Stringgenerate()Generate a time-based one-time password for current time interval instantStringgenerate(long secondsPast1970)Generate a time-based one-time password for a specific time based on seconds past 1970Stringgenerate(java.time.Instant instant)Generate a time-based one-time password for a Java instantStringgenerate(Date date)Generate a time-based one-time password for a specific datejava.time.DurationgetPeriod()URIgetURI(String issuer)Create a OTPAuth URI for easy onboarding with only an issuerURIgetURI(String issuer, String account)Create a OTPAuth URI for easy user on-boarding with an issuer and account namebooleanverify(String code)Checks whether a code is valid for a specific counterbooleanverify(String code, int delayWindow)Checks whether a code is valid for a specific counter taking a delay window into accountMethods inherited from class com.bastiaanjansen.otp.OneTimePasswordGenerator
generate, getAlgorithm, getPasswordLength, getSecret, getURI, verify, verify
-
Field Details
-
DEFAULT_PERIOD
public static final java.time.Duration DEFAULT_PERIODDefault time interval for a time-based one-time password
-
-
Constructor Details
-
TOTPGenerator
Constructs generator- Parameters:
secret- used to generate hash
-
TOTPGenerator
Constructs generator with custom password length- Parameters:
passwordLength- number of digits for generated code in range 6...8secret- used to generate hash
-
TOTPGenerator
Constructs generator with custom time interval- Parameters:
period- time interval between new codessecret- used to generate hash
-
TOTPGenerator
Constructs generator with custom time interval and hashing algorithm- Parameters:
period- time interval between new codesalgorithm- HMAC hash algorithm used to hash datasecret- used to generate hash
-
TOTPGenerator
Constructs generator with custom hashing algorithm and default time interval- Parameters:
algorithm- HMAC hash algorithm used to hash datasecret- used to generate hash
-
TOTPGenerator
Constructs generator with custom password length and period- Parameters:
passwordLength- number of digits for generated code in range 6...8period- time interval between new codessecret- used to generate hash
-
TOTPGenerator
Constructs generator with custom password length and hashing algorithm- Parameters:
passwordLength- number of digits for generated code in range 6...8algorithm- HMAC hash algorithm used to hash datasecret- used to generate hash
-
TOTPGenerator
public TOTPGenerator(int passwordLength, java.time.Duration period, HMACAlgorithm algorithm, String secret)Constructs generator with custom password length, time interval and hashing algorithm- Parameters:
passwordLength- number of digits for generated code in range 6...8period- time interval between new codesalgorithm- HMAC hash algorithm used to hash datasecret- used to generate hash
-
TOTPGenerator
Constructs generator from a OTPAuth URI- Parameters:
uri- OTPAuth URI- Throws:
UnsupportedEncodingException- when URI query can't be encoded
-
-
Method Details
-
generate
Generate a time-based one-time password for current time interval instant- Returns:
- generated TOTP code
- Throws:
IllegalStateException- when code could not be generated
-
generate
Generate a time-based one-time password for a Java instant- Parameters:
instant- an instant- Returns:
- generated TOTP code
- Throws:
IllegalStateException- when code could not be generated
-
generate
Generate a time-based one-time password for a specific date- Parameters:
date- specific date- Returns:
- generated TOTP code
- Throws:
IllegalStateException- when code could not be generated
-
generate
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
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
Checks whether a code is valid for a specific counter taking a delay window into account- Parameters:
code- an OTP codedelayWindow- window in which a code can still be deemed valid- Returns:
- a boolean, true if code is valid, otherwise false
-
getPeriod
public java.time.Duration getPeriod() -
getURI
Create a OTPAuth URI for easy onboarding with only an issuer- Parameters:
issuer- name- Returns:
- generated OTPAuth URI
- Throws:
URISyntaxException- when URI cannot be created
-
getURI
Create a OTPAuth URI for easy user on-boarding with an issuer and account name- Parameters:
issuer- nameaccount- name- Returns:
- generated OTPAuth URI
- Throws:
URISyntaxException- when URI cannot be created
-