Class SRP6VerifierGenerator

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

public class SRP6VerifierGenerator
extends java.lang.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 Summary

    Fields
    Modifier and Type Field Description
    protected SRP6Routines srp6Routines  
  • Constructor Summary

    Constructors
    Constructor Description
    SRP6VerifierGenerator​(SRP6CryptoParams config)
    Creates a new generator of password verifier 'v' values.
    SRP6VerifierGenerator​(SRP6CryptoParams config, SRP6Routines srp6Routines)
    Creates a new generator of password verifier 'v' values.
  • Method Summary

    Modifier and Type Method Description
    byte[] generateRandomSalt()
    Generates a random 16-byte salt 's'.
    byte[] generateRandomSalt​(int numBytes)
    Generates a random salt 's'.
    byte[] generateRandomSalt​(int numBytes, java.security.SecureRandom random)
    Generates a random salt 's'.
    java.math.BigInteger generateVerifier​(byte[] salt, byte[] password)
    Generates a new verifier 'v' from the specified parameters with the user identifier 'I' omitted.
    java.math.BigInteger generateVerifier​(byte[] salt, byte[] userID, byte[] password)
    Generates a new verifier 'v' from the specified parameters.
    java.math.BigInteger generateVerifier​(java.math.BigInteger salt, java.lang.String password)
    Generates a new verifier 'v' from the specified parameters with the user identifier 'I' omitted.
    java.math.BigInteger generateVerifier​(java.math.BigInteger salt, java.lang.String userID, java.lang.String password)
    Generates a new verifier 'v' from the specified parameters.
    XRoutine getXRoutine()
    Gets the custom routine for the password key 'x' computation.
    void setXRoutine​(XRoutine routine)
    Sets a custom routine for the password key 'x' computation.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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, java.security.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 java.math.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 java.math.BigInteger generateVerifier​(java.math.BigInteger salt, java.lang.String userID, java.lang.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 java.math.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 java.math.BigInteger generateVerifier​(java.math.BigInteger salt, java.lang.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'.