org.gudy.bouncycastle.crypto.agreement.srp
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 | 
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
 
            | 
 
 
| 
Method Summary | 
 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 attempt | 
protected  java.math.BigInteger | 
selectPrivateValue()
 
            | 
 
| Methods inherited from class java.lang.Object | 
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
 
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
SRP6Server
public SRP6Server()
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()