Class SRP6Client
- java.lang.Object
-
- org.gudy.bouncycastle.crypto.agreement.srp.SRP6Client
-
public class SRP6Client extends java.lang.Object
Implements the client side SRP-6a protocol. Note that this class is stateful, and therefore NOT threadsafe. This implementation of SRP is based on the optimized message sequence put forth by Thomas Wu in the paper "SRP-6: Improvements and Refinements to the Secure Remote Password Protocol, 2002"
-
-
Field Summary
Fields Modifier and Type Field Description protected java.math.BigInteger
a
protected java.math.BigInteger
A
protected java.math.BigInteger
B
protected Digest
digest
protected java.math.BigInteger
g
protected java.math.BigInteger
N
protected java.security.SecureRandom
random
protected java.math.BigInteger
S
protected java.math.BigInteger
u
protected java.math.BigInteger
x
-
Constructor Summary
Constructors Constructor Description SRP6Client()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private java.math.BigInteger
calculateS()
java.math.BigInteger
calculateSecret(java.math.BigInteger serverB)
Generates client's verification message given the server's credentialsjava.math.BigInteger
generateClientCredentials(byte[] salt, byte[] identity, byte[] password)
Generates client's credentials given the client's salt, identity and passwordvoid
init(java.math.BigInteger N, java.math.BigInteger g, Digest digest, java.security.SecureRandom random)
Initialises the client to begin new authentication attemptprotected java.math.BigInteger
selectPrivateValue()
-
-
-
Field Detail
-
N
protected java.math.BigInteger N
-
g
protected java.math.BigInteger g
-
a
protected java.math.BigInteger a
-
A
protected java.math.BigInteger A
-
B
protected java.math.BigInteger B
-
x
protected java.math.BigInteger x
-
u
protected java.math.BigInteger u
-
S
protected java.math.BigInteger S
-
digest
protected Digest digest
-
random
protected java.security.SecureRandom random
-
-
Method Detail
-
init
public void init(java.math.BigInteger N, java.math.BigInteger g, Digest digest, java.security.SecureRandom random)
Initialises the client to begin new authentication attempt- Parameters:
N
- The safe prime associated with the client's verifierg
- The group parameter associated with the client's verifierdigest
- The digest algorithm associated with the client's verifierrandom
- For key generation
-
generateClientCredentials
public java.math.BigInteger generateClientCredentials(byte[] salt, byte[] identity, byte[] password)
Generates client's credentials given the client's salt, identity and password- Parameters:
salt
- The salt used in the client's verifier.identity
- The user's identity (eg. username)password
- The user's password- Returns:
- Client's public value to send to server
-
calculateSecret
public java.math.BigInteger calculateSecret(java.math.BigInteger serverB) throws CryptoException
Generates client's verification message given the server's credentials- Parameters:
serverB
- The server's credentials- Returns:
- Client's verification message for the server
- Throws:
CryptoException
- If server's credentials are invalid
-
selectPrivateValue
protected java.math.BigInteger selectPrivateValue()
-
calculateS
private java.math.BigInteger calculateS()
-
-