Class 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.

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      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 Detail

    • Constructor Detail

      • 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 Detail

      • 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'.