Package io.github.pratiyush.totp
Class TOTPConfig
java.lang.Object
io.github.pratiyush.totp.TOTPConfig
Immutable configuration for TOTP generation and verification.
This class uses the Builder pattern for flexible, validated construction. All parameters are validated to ensure security constraints are met.
Default Configuration
The default configuration follows RFC 6238 recommendations and is compatible with Google Authenticator:
- Algorithm: SHA-1 (for compatibility)
- Digits: 6
- Period: 30 seconds
- Allowed drift: 1 step (forward and backward)
Usage Examples
// Default configuration (Google Authenticator compatible)
TOTPConfig config = TOTPConfig.defaultConfig();
// Custom configuration
TOTPConfig config = TOTPConfig.builder()
.algorithm(Algorithm.SHA256)
.digits(8)
.period(Duration.ofSeconds(30))
.allowedDrift(1)
.build();
- See Also:
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intMaximum allowed digitsstatic final intMaximum allowed drift stepsstatic final intMaximum allowed period in secondsstatic final intMinimum allowed digitsstatic final intMinimum allowed period in seconds -
Method Summary
Modifier and TypeMethodDescriptionstatic TOTPConfig.Builderbuilder()Returns a builder with default values.static TOTPConfigReturns the default configuration (Google Authenticator compatible).booleanReturns the HMAC algorithm.intReturns the allowed drift steps for verification.intReturns the number of digits in generated codes.Returns the time period for code validity.intReturns the period in seconds.inthashCode()static TOTPConfigReturns a high-security configuration with SHA-512 and 8 digits.static TOTPConfigReturns a configuration optimized for SHA-256.toString()
-
Field Details
-
MIN_PERIOD_SECONDS
public static final int MIN_PERIOD_SECONDSMinimum allowed period in seconds- See Also:
-
MAX_PERIOD_SECONDS
public static final int MAX_PERIOD_SECONDSMaximum allowed period in seconds- See Also:
-
MIN_DIGITS
public static final int MIN_DIGITSMinimum allowed digits- See Also:
-
MAX_DIGITS
public static final int MAX_DIGITSMaximum allowed digits- See Also:
-
MAX_DRIFT_STEPS
public static final int MAX_DRIFT_STEPSMaximum allowed drift steps- See Also:
-
-
Method Details
-
getAlgorithm
Returns the HMAC algorithm.- Returns:
- the algorithm, never null
-
getDigits
public int getDigits()Returns the number of digits in generated codes.- Returns:
- digit count (6-8)
-
getPeriod
Returns the time period for code validity.- Returns:
- the period, never null
-
getPeriodSeconds
public int getPeriodSeconds()Returns the period in seconds.- Returns:
- period in seconds
-
getAllowedDrift
public int getAllowedDrift()Returns the allowed drift steps for verification.A drift of 1 means codes from 1 step before and 1 step after the current time will be accepted.
- Returns:
- allowed drift steps
-
builder
Returns a builder with default values.- Returns:
- new builder instance
-
defaultConfig
Returns the default configuration (Google Authenticator compatible).- Returns:
- default configuration
-
sha256Config
Returns a configuration optimized for SHA-256.- Returns:
- SHA-256 configuration
-
highSecurityConfig
Returns a high-security configuration with SHA-512 and 8 digits.- Returns:
- high-security configuration
-
equals
-
hashCode
public int hashCode() -
toString
-