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 BigIntegerprotected BigIntegerprotected BigIntegerprotected Digestprotected BigIntegerprotected BigIntegerprotected SecureRandomprotected BigIntegerprotected BigIntegerprotected BigInteger -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate BigIntegercalculateSecret(BigInteger clientA) Processes the client's credentials.Generates the server's credentials that are to be sent to the client.voidinit(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
-