Class SRP6Server
- java.lang.Object
-
- org.gudy.bouncycastle.crypto.agreement.srp.SRP6Server
-
public class SRP6Server extends java.lang.Object
Implements the server 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
b
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
v
-
Constructor Summary
Constructors Constructor Description SRP6Server()
-
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 clientA)
Processes the client's credentials.java.math.BigInteger
generateServerCredentials()
Generates the server's credentials that are to be sent to the client.void
init(java.math.BigInteger N, java.math.BigInteger g, java.math.BigInteger v, Digest digest, java.security.SecureRandom random)
Initialises the server to accept a new client authentication attemptprotected java.math.BigInteger
selectPrivateValue()
-
-
-
Field Detail
-
N
protected java.math.BigInteger N
-
g
protected java.math.BigInteger g
-
v
protected java.math.BigInteger v
-
random
protected java.security.SecureRandom random
-
digest
protected Digest digest
-
A
protected java.math.BigInteger A
-
b
protected java.math.BigInteger b
-
B
protected java.math.BigInteger B
-
u
protected java.math.BigInteger u
-
S
protected java.math.BigInteger S
-
-
Method Detail
-
init
public void init(java.math.BigInteger N, java.math.BigInteger g, java.math.BigInteger v, Digest digest, java.security.SecureRandom random)
Initialises the server to accept a new client authentication attempt- Parameters:
N
- The safe prime associated with the client's verifierg
- The group parameter associated with the client's verifierv
- The client's verifierdigest
- The digest algorithm associated with the client's verifierrandom
- For key generation
-
generateServerCredentials
public java.math.BigInteger generateServerCredentials()
Generates the server's credentials that are to be sent to the client.- Returns:
- The server's public value to the client
-
calculateSecret
public java.math.BigInteger calculateSecret(java.math.BigInteger clientA) throws CryptoException
Processes the client's credentials. If valid the shared secret is generated and returned.- Parameters:
clientA
- The client's credentials- Returns:
- A shared secret BigInteger
- Throws:
CryptoException
- If client's credentials are invalid
-
selectPrivateValue
protected java.math.BigInteger selectPrivateValue()
-
calculateS
private java.math.BigInteger calculateS()
-
-