Class SRP6Server
java.lang.Object
org.gudy.bouncycastle.crypto.agreement.srp.SRP6Server
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
FieldsModifier and TypeFieldDescriptionprotected BigInteger
protected BigInteger
protected BigInteger
protected Digest
protected BigInteger
protected BigInteger
protected SecureRandom
protected BigInteger
protected BigInteger
protected BigInteger
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate BigInteger
calculateSecret
(BigInteger clientA) Processes the client's credentials.Generates the server's credentials that are to be sent to the client.void
init
(BigInteger N, BigInteger g, BigInteger v, Digest digest, SecureRandom random) Initialises the server to accept a new client authentication attemptprotected BigInteger
-
Field Details
-
N
-
g
-
v
-
random
-
digest
-
A
-
b
-
B
-
u
-
S
-
-
Constructor Details
-
SRP6Server
public SRP6Server()
-
-
Method Details
-
init
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
Generates the server's credentials that are to be sent to the client.- Returns:
- The server's public value to the client
-
calculateSecret
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
-
calculateS
-