Package net.i2p.data.i2cp
Class SessionConfig
- java.lang.Object
-
- net.i2p.data.DataStructureImpl
-
- net.i2p.data.i2cp.SessionConfig
-
- All Implemented Interfaces:
Serializable
,DataStructure
public class SessionConfig extends DataStructureImpl
Defines the information a client must provide to create a session- Author:
- jrandom
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static String
PROP_OFFLINE_EXPIRATION
Seconds since epoch, NOT msstatic String
PROP_OFFLINE_SIGNATURE
Base 64, optionally preceded by sig type and ':', default DSA-SHA1static String
PROP_TRANSIENT_KEY
Base 64, optionally preceded by sig type and ':', default DSA-SHA1
-
Constructor Summary
Constructors Constructor Description SessionConfig()
SessionConfig(Destination dest)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object object)
Date
getCreationDate()
Determine when this session was authorized by the destination (so we can prevent replay attacks)Destination
getDestination()
Retrieve the destination for which this session is supposed to connectlong
getOfflineExpiration()
Get the offline expirationSignature
getOfflineSignature()
Properties
getOptions()
Retrieve any configuration options for the sessionSignature
getSignature()
SigningPublicKey
getTransientSigningPublicKey()
int
hashCode()
void
readBytes(InputStream rawConfig)
Load up the current object with data from the given stream.void
setCreationDate(Date date)
void
setOfflineSignature(long expires, SigningPublicKey transientSPK, Signature offlineSig)
Set the offline signing data.void
setOptions(Properties options)
Configure the session with the given options; keys and values 255 bytes (not chars) max each Defaults in SessionConfig options are, in general, NOT honored.void
setSignature(Signature sig)
void
signSessionConfig(SigningPrivateKey signingKey)
Sign the structure using the supplied private keyboolean
tooOld()
Misnamed, could be too old or too far in the future.String
toString()
boolean
verifySignature()
Verify that the signature matches the destination's signing public key.void
writeBytes(OutputStream out)
Write out the data structure to the stream, using the format defined in the I2P data structure specification.-
Methods inherited from class net.i2p.data.DataStructureImpl
calculateHash, fromBase64, fromByteArray, read, toBase64, toByteArray
-
-
-
-
Field Detail
-
PROP_OFFLINE_EXPIRATION
public static final String PROP_OFFLINE_EXPIRATION
Seconds since epoch, NOT ms- Since:
- 0.9.38
- See Also:
- Constant Field Values
-
PROP_TRANSIENT_KEY
public static final String PROP_TRANSIENT_KEY
Base 64, optionally preceded by sig type and ':', default DSA-SHA1- Since:
- 0.9.38
- See Also:
- Constant Field Values
-
PROP_OFFLINE_SIGNATURE
public static final String PROP_OFFLINE_SIGNATURE
Base 64, optionally preceded by sig type and ':', default DSA-SHA1- Since:
- 0.9.38
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
SessionConfig
public SessionConfig()
-
SessionConfig
public SessionConfig(Destination dest)
-
-
Method Detail
-
getDestination
public Destination getDestination()
Retrieve the destination for which this session is supposed to connect- Returns:
- Destination for this session
-
getCreationDate
public Date getCreationDate()
Determine when this session was authorized by the destination (so we can prevent replay attacks)- Returns:
- Date
-
setCreationDate
public void setCreationDate(Date date)
-
getOptions
public Properties getOptions()
Retrieve any configuration options for the session- Returns:
- Properties of this session
-
setOptions
public void setOptions(Properties options)
Configure the session with the given options; keys and values 255 bytes (not chars) max each Defaults in SessionConfig options are, in general, NOT honored. Defaults are not serialized out-of-JVM, and the router does not recognize defaults in-JVM. Client side must promote defaults to the primary map. Does NOT make a copy.- Parameters:
options
- Properties for this session
-
getSignature
public Signature getSignature()
-
setSignature
public void setSignature(Signature sig)
-
setOfflineSignature
public void setOfflineSignature(long expires, SigningPublicKey transientSPK, Signature offlineSig)
Set the offline signing data. Does NOT validate the signature. Must be called AFTER setOptions(). Will throw ISE otherwise. Side effect - modifies options.- Throws:
IllegalStateException
- Since:
- 0.9.38
-
getOfflineExpiration
public long getOfflineExpiration()
Get the offline expiration- Returns:
- Java time (ms) or 0 if not initialized or does not have offline keys
- Since:
- 0.9.38
-
getTransientSigningPublicKey
public SigningPublicKey getTransientSigningPublicKey()
- Returns:
- null on error or if not initialized or does not have offline keys
- Since:
- 0.9.38
-
getOfflineSignature
public Signature getOfflineSignature()
- Returns:
- null on error or if not initialized or does not have offline keys
- Since:
- 0.9.38
-
signSessionConfig
public void signSessionConfig(SigningPrivateKey signingKey) throws DataFormatException
Sign the structure using the supplied private key- Parameters:
signingKey
- SigningPrivateKey to sign with. If offline data is set, must be with the transient key.- Throws:
DataFormatException
-
verifySignature
public boolean verifySignature()
Verify that the signature matches the destination's signing public key. Note that this also returns false if the creation date is too far in the past or future. See tooOld() and getCreationDate(). As of 0.9.38, validates the offline signature if included.- Returns:
- true only if the signature matches
-
tooOld
public boolean tooOld()
Misnamed, could be too old or too far in the future.
-
readBytes
public void readBytes(InputStream rawConfig) throws DataFormatException, IOException
Description copied from interface:DataStructure
Load up the current object with data from the given stream. Data loaded this way must match the I2P data structure specification. Warning - many classes will throw IllegalStateException if data is already set.- Parameters:
rawConfig
- stream to read from- Throws:
DataFormatException
- if the data is improperly formattedIOException
- if there was a problem reading the stream
-
writeBytes
public void writeBytes(OutputStream out) throws DataFormatException, IOException
Description copied from interface:DataStructure
Write out the data structure to the stream, using the format defined in the I2P data structure specification.- Parameters:
out
- stream to write to- Throws:
DataFormatException
- if the data was incomplete or not yet ready to be writtenIOException
- if there was a problem writing to the stream
-
-