public abstract class SRP6Session
extends java.lang.Object
implements java.io.Serializable
| Modifier and Type | Field and Description |
|---|---|
protected java.math.BigInteger |
A
The client public value 'A'.
|
protected java.math.BigInteger |
B
The server public value 'B'.
|
protected ClientEvidenceRoutine |
clientEvidenceRoutine
Custom routine for the client evidence message 'M1' computation.
|
protected SRP6CryptoParams |
config
The crypto configuration.
|
protected URoutine |
hashedKeysRoutine
Custom routine for the hashed keys 'u' computation.
|
protected java.math.BigInteger |
k
The multiplier 'k'.
|
protected long |
lastActivity
The last activity timestamp, from System.currentTimeMillis().
|
protected java.math.BigInteger |
M1
The client evidence message 'M1'.
|
protected java.math.BigInteger |
M2
The server evidence message 'M2'.
|
protected java.security.SecureRandom |
random
Source of randomness.
|
protected java.math.BigInteger |
s
The password salt 's'.
|
protected java.math.BigInteger |
S
The shared session key 'S'.
|
protected ServerEvidenceRoutine |
serverEvidenceRoutine
Custom routine for the server evidence message 'M2' computation.
|
protected SRP6Routines |
srp6Routines |
protected int |
timeout
The SRP-6a authentication session timeout in seconds.
|
protected java.math.BigInteger |
u
The random scrambling parameter 'u'.
|
protected java.lang.String |
userID
The identity 'I' of the authenticating user.
|
| Constructor and Description |
|---|
SRP6Session()
Creates a new SRP-6a authentication session, session timeouts are
disabled.
|
SRP6Session(int timeout)
Creates a new SRP-6a authentication session.
|
SRP6Session(int timeout,
SRP6Routines srp6Routines)
Creates a new SRP-6a authentication session.
|
| Modifier and Type | Method and Description |
|---|---|
java.lang.Object |
getAttribute(java.lang.String key)
Gets a session attribute.
|
java.math.BigInteger |
getClientEvidenceMessage()
Gets the client evidence message 'M1'.
|
ClientEvidenceRoutine |
getClientEvidenceRoutine()
Gets the custom routine to compute the client evidence message 'M1'.
|
SRP6CryptoParams |
getCryptoParams()
Gets the SRP-6a crypto parameters for this session.
|
URoutine |
getHashedKeysRoutine()
Gets the custom routine to compute hashed keys 'u' a 'H(A | B)'.
|
long |
getLastActivityTime()
Gets the last session activity timestamp, in milliseconds since
midnight, January 1, 1970 UTC (see System.currentTimeMillis()).
|
java.math.BigInteger |
getPublicClientValue()
Gets the public client value 'A'.
|
java.math.BigInteger |
getPublicServerValue()
Gets the public server value 'B'.
|
java.math.BigInteger |
getSalt()
Gets the password salt 's'.
|
java.math.BigInteger |
getServerEvidenceMessage()
Gets the server evidence message 'M2'.
|
ServerEvidenceRoutine |
getServerEvidenceRoutine()
Gets the custom routine to compute the server evidence message 'M2'.
|
java.math.BigInteger |
getSessionKey()
Gets the shared session key 'S'
|
byte[] |
getSessionKeyHash()
Gets the hash of the shared session key H(S).
|
int |
getTimeout()
Gets the SRP-6a authentication session timeout.
|
java.lang.String |
getUserID()
Gets the identity 'I' of the authenticating user.
|
boolean |
hasTimedOut()
Returns
true if the session has timed out, based on the
timeout configuration and the last activity timestamp. |
void |
setAttribute(java.lang.String key,
java.lang.Object value)
Sets a session attribute.
|
void |
setClientEvidenceRoutine(ClientEvidenceRoutine routine)
Sets a custom routine to compute the client evidence message 'M1'.
|
void |
setHashedKeysRoutine(URoutine hashedKeysRoutine)
Sets a custom routine to compute hashed keys 'u' a 'H(A | B)'.
|
void |
setServerEvidenceRoutine(ServerEvidenceRoutine routine)
Sets a custom routine to compute the server evidence message 'M2'.
|
protected void |
updateLastActivityTime()
Updates the last activity timestamp.
|
protected final SRP6Routines srp6Routines
protected SRP6CryptoParams config
protected java.security.SecureRandom random
protected final int timeout
protected long lastActivity
protected java.lang.String userID
protected java.math.BigInteger s
protected java.math.BigInteger A
protected java.math.BigInteger B
protected java.math.BigInteger u
protected java.math.BigInteger k
protected java.math.BigInteger S
protected java.math.BigInteger M1
protected java.math.BigInteger M2
protected ClientEvidenceRoutine clientEvidenceRoutine
protected ServerEvidenceRoutine serverEvidenceRoutine
protected URoutine hashedKeysRoutine
public SRP6Session(int timeout,
SRP6Routines srp6Routines)
timeout - The SRP-6a authentication session timeout in seconds.
If the authenticating counterparty (server or client)
fails to respond within the specified time the
session will be closed. If zero timeouts are
disabled.srp6Routines - The math routines to use.public SRP6Session(int timeout)
timeout - The SRP-6a authentication session timeout in seconds.
If the authenticating counterparty (server or client)
fails to respond within the specified time the
session will be closed. If zero timeouts are
disabled.public SRP6Session()
protected void updateLastActivityTime()
public long getLastActivityTime()
public boolean hasTimedOut()
true if the session has timed out, based on the
timeout configuration and the last activity timestamp.true if the session has timed out, else
false.public SRP6CryptoParams getCryptoParams()
null if undefined.public java.lang.String getUserID()
null if undefined.public int getTimeout()
public void setClientEvidenceRoutine(ClientEvidenceRoutine routine)
SRP6ClientSession.State.STEP_2 or
SRP6ServerSession.State.STEP_2.routine - The client evidence message 'M1' routine or
null to use the default
SRP6Routines.computeClientEvidence(java.security.MessageDigest, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger).public ClientEvidenceRoutine getClientEvidenceRoutine()
null if the default
SRP6Routines.computeClientEvidence(java.security.MessageDigest, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger) is used.public void setServerEvidenceRoutine(ServerEvidenceRoutine routine)
SRP6ClientSession.State.STEP_3 or
SRP6ServerSession.State.STEP_2.routine - The server evidence message 'M2' routine or
null to use the default
SRP6Routines.computeServerEvidence(java.security.MessageDigest, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger).public ServerEvidenceRoutine getServerEvidenceRoutine()
null if the default
SRP6Routines.computeServerEvidence(java.security.MessageDigest, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger) is used.public URoutine getHashedKeysRoutine()
null if the default
SRP6Routines.computeU(java.security.MessageDigest, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger) is to be used.public void setHashedKeysRoutine(URoutine hashedKeysRoutine)
SRP6ServerSession.State.STEP_2.hashedKeysRoutine - The hashed keys 'u' routine or null
to use the default
SRP6Routines.computeU(java.security.MessageDigest, java.math.BigInteger, java.math.BigInteger, java.math.BigInteger).public java.math.BigInteger getSalt()
null.public java.math.BigInteger getPublicClientValue()
null.public java.math.BigInteger getPublicServerValue()
null.public java.math.BigInteger getClientEvidenceMessage()
null.public java.math.BigInteger getServerEvidenceMessage()
null.public java.math.BigInteger getSessionKey()
null
will be returned if authentication failed or the method is
invoked in a session state when the session key 'S' has not
been computed yet.public byte[] getSessionKeyHash()
null
will be returned if authentication failed or the method is
invoked in a session state when the session key 'S' has not
been computed yet.public void setAttribute(java.lang.String key,
java.lang.Object value)
getAttribute(java.lang.String).key - The attribute key. Must not be null.value - The attribute value. May be null.public java.lang.Object getAttribute(java.lang.String key)
setAttribute(java.lang.String, java.lang.Object).key - The attribute key. Must not be null.null if none was found by the
specified key or its value is null.