Class TOTPConfig

java.lang.Object
io.github.pratiyush.totp.TOTPConfig

public final class TOTPConfig extends Object
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:
  • Field Details

    • MIN_PERIOD_SECONDS

      public static final int MIN_PERIOD_SECONDS
      Minimum allowed period in seconds
      See Also:
    • MAX_PERIOD_SECONDS

      public static final int MAX_PERIOD_SECONDS
      Maximum allowed period in seconds
      See Also:
    • MIN_DIGITS

      public static final int MIN_DIGITS
      Minimum allowed digits
      See Also:
    • MAX_DIGITS

      public static final int MAX_DIGITS
      Maximum allowed digits
      See Also:
    • MAX_DRIFT_STEPS

      public static final int MAX_DRIFT_STEPS
      Maximum allowed drift steps
      See Also:
  • Method Details

    • getAlgorithm

      public Algorithm 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

      public Duration 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

      public static TOTPConfig.Builder builder()
      Returns a builder with default values.
      Returns:
      new builder instance
    • defaultConfig

      public static TOTPConfig defaultConfig()
      Returns the default configuration (Google Authenticator compatible).
      Returns:
      default configuration
    • sha256Config

      public static TOTPConfig sha256Config()
      Returns a configuration optimized for SHA-256.
      Returns:
      SHA-256 configuration
    • highSecurityConfig

      public static TOTPConfig highSecurityConfig()
      Returns a high-security configuration with SHA-512 and 8 digits.
      Returns:
      high-security configuration
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object