Class SRP6VerifierGenerator

java.lang.Object
de.bsvrz.sys.funclib.srp6.SRP6VerifierGenerator

public class SRP6VerifierGenerator extends Object
Generator of password verifier 'v' values.

SRP6Routines.generateRandomSalt(int) may be used to create a random salt 's' of a specified byte size.

  • Field Details

  • Constructor Details

    • SRP6VerifierGenerator

      public SRP6VerifierGenerator(SRP6CryptoParams config)
      Creates a new generator of password verifier 'v' values.
      Parameters:
      config - The SRP-6a crypto parameters configuration. Must not be null.
    • SRP6VerifierGenerator

      public SRP6VerifierGenerator(SRP6CryptoParams config, SRP6Routines srp6Routines)
      Creates a new generator of password verifier 'v' values.
      Parameters:
      config - The SRP-6a crypto parameters configuration. Must not be null.
      srp6Routines - The cryptographic routines.
  • Method Details

    • generateRandomSalt

      public byte[] generateRandomSalt(int numBytes)
      Generates a random salt 's'.

      This method is a shortcut to SRP6Routines.generateRandomSalt(int).

      Parameters:
      numBytes - The number of bytes the salt 's' must have.
      Returns:
      The salt 's' as a byte array.
    • generateRandomSalt

      public byte[] generateRandomSalt(int numBytes, SecureRandom random)
      Generates a random salt 's'.

      This method is a shortcut to SRP6Routines.generateRandomSalt(int).

      Parameters:
      numBytes - The number of bytes the salt 's' must have.
      random - A secure random number generator.
      Returns:
      The salt 's' as a byte array.
    • generateRandomSalt

      public byte[] generateRandomSalt()
      Generates a random 16-byte salt 's'.

      This method is a shortcut to SRP6Routines.generateRandomSalt(int).

      Returns:
      The salt 's' as a byte array.
    • setXRoutine

      public void setXRoutine(XRoutine routine)
      Sets a custom routine for the password key 'x' computation.
      Parameters:
      routine - The password key 'x' routine or null to use the default one instead.
    • getXRoutine

      public XRoutine getXRoutine()
      Gets the custom routine for the password key 'x' computation.
      Returns:
      The routine instance or null if the default default one is used.
    • generateVerifier

      public BigInteger generateVerifier(byte[] salt, byte[] userID, byte[] password)
      Generates a new verifier 'v' from the specified parameters.

      The verifier is computed as v = g^x (mod N). If a custom 'x' computation routine is set it will be used instead of the default one.

      Tip: To convert a string to a byte array you can use String.getBytes() or String.getBytes(java.nio.charset.Charset). To convert a big integer to a byte array you can use BigInteger.toByteArray().

      Parameters:
      salt - The salt 's'. Must not be null.
      userID - The user identity 'I'. May be null if the default 'x' routine is used or the custom one ignores it.
      password - The user password 'P'. Must not be null.
      Returns:
      The resulting verifier 'v'.
    • generateVerifier

      public BigInteger generateVerifier(BigInteger salt, String userID, String password)
      Generates a new verifier 'v' from the specified parameters.

      The verifier is computed as v = g^x (mod N). If a custom 'x' computation routine is set it will be used instead of the default one.

      Parameters:
      salt - The salt 's'. Must not be null.
      userID - The user identity 'I', as an UTF-8 encoded string. May be null if the default 'x' routine is used or the custom one ignores it.
      password - The user password 'P', as an UTF-8 encoded string. Must not be null.
      Returns:
      The resulting verifier 'v'.
    • generateVerifier

      public BigInteger generateVerifier(byte[] salt, byte[] password)
      Generates a new verifier 'v' from the specified parameters with the user identifier 'I' omitted.

      The verifier is computed as v = g^x (mod N). If a custom 'x' computation routine is set it must omit the user identity 'I' as well.

      Tip: To convert a string to a byte array you can use String.getBytes() or String.getBytes(java.nio.charset.Charset). To convert a big integer to a byte array you can use BigInteger.toByteArray().

      Parameters:
      salt - The salt 's'. Must not be null.
      password - The user password 'P'. Must not be null.
      Returns:
      The resulting verifier 'v'.
    • generateVerifier

      public BigInteger generateVerifier(BigInteger salt, String password)
      Generates a new verifier 'v' from the specified parameters with the user identifier 'I' omitted.

      The verifier is computed as v = g^x (mod N). If a custom 'x' computation routine is set it must omit the user identity 'I' as well.

      Parameters:
      salt - The salt 's'. Must not be null.
      password - The user password 'P', as an UTF-8 encoded string. Must not be null.
      Returns:
      The resulting verifier 'v'.