|
Cumulus4j API (1.0.2) |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
public interface CryptoSession
A CryptoSession is a session managed by a client to decrypt/encrypt data.
Data can only be decrypted (or encrypted) within the scope of a valid session. That means,
the client must open a CryptoSession prior to persisting/querying data.
There exists one CryptoSession instance for each unique combination of
NucleusContext, cryptoManagerID and
cryptoSessionID. Therefore, it can happen, that multiple
PersistenceManager/EntityManager instances access the same
CryptoSession from multiple threads.
Thus all implementations of CryptoSession must be thread-safe! In this context, it is important
to know that Cipher is not thread-safe! You should thus always synchronize on the Cipher
instance before using it (if you share them, which you probably do due to the expensiveness of key-initialisations).
A CryptoSession must not be instantiated directly, but instead obtained via
CryptoManager.getCryptoSession(String). In other words, a new instance of
CryptoSession must only be created within the CryptoManager
implementation.
Important: It is strongly recommended to subclass AbstractCryptoSession
instead of directly implementing this interface!
| Field Summary | |
|---|---|
static String |
PROPERTY_CRYPTO_SESSION_ID
Property-name used to pass the cryptoSessionID to the Cumulus4j-core. |
| Method Summary | |
|---|---|
void |
close()
Close the session. |
Plaintext |
decrypt(CryptoContext cryptoContext,
Ciphertext ciphertext)
Decrypt the given ciphertext. |
Ciphertext |
encrypt(CryptoContext cryptoContext,
Plaintext plaintext)
Encrypt the given plaintext. |
Date |
getCreationTimestamp()
|
CryptoManager |
getCryptoManager()
Get the CryptoManager to which this session belongs. |
String |
getCryptoSessionID()
|
Date |
getLastUsageTimestamp()
Get the timestamp of the last call to #release(). |
boolean |
isClosed()
Indicate, whether the session was already closed. |
void |
setCryptoManager(CryptoManager cryptoManager)
Set the CryptoManager to which this session belongs. |
void |
setCryptoSessionID(String cryptoSessionID)
Set the cryptoSessionID. |
void |
updateLastUsageTimestamp()
Set the lastUsageTimestamp to now, i.e. |
| Field Detail |
|---|
static final String PROPERTY_CRYPTO_SESSION_ID
Property-name used to pass the cryptoSessionID to the Cumulus4j-core.
The property must be passed to the Cumulus4j-core via
PersistenceManager.setProperty(String, Object) or
EntityManager.
| Method Detail |
|---|
void setCryptoManager(CryptoManager cryptoManager)
Set the CryptoManager to which this session belongs.
If you subclass AbstractCryptoManager (instead of directly implementing the CryptoManager interface)
you must never call this method. Otherwise, it is expected, that you call this method once in CryptoManager.getCryptoSession(String)
after creating a new CryptoSession, before returning it.
cryptoManager - the CryptoManager to which this session belongs.getCryptoManager()CryptoManager getCryptoManager()
Get the CryptoManager to which this session belongs.
CryptoManager to which this session belongs.void setCryptoSessionID(String cryptoSessionID)
Set the cryptoSessionID.
If you subclass AbstractCryptoManager (instead of directly implementing the CryptoManager interface)
you must never call this method. Otherwise, it is expected, that you call this method once in CryptoManager.getCryptoSession(String)
after creating a new CryptoSession, before returning it.
cryptoSessionID - the identifier of this session.getCryptoSessionID()String getCryptoSessionID()
Date getCreationTimestamp()
Date getLastUsageTimestamp()
Get the timestamp of the last call to #release().
If #release() was not yet called, get the time when this
instance was created (just like getCreationTimestamp() does).
Therefore, this method always returns the time when the session was stopped being used the last time.
This timestamp is used for automatic closing of expired sessions.
void updateLastUsageTimestamp()
Set the lastUsageTimestamp to now, i.e. new Date().
This method should be called by CryptoManager.getCryptoSession(String).
getLastUsageTimestamp()
Ciphertext encrypt(CryptoContext cryptoContext,
Plaintext plaintext)
Encrypt the given plaintext.
This method is thread-safe. Thus, implementors should keep in mind that Cipher is not thread-safe!
cryptoContext - context used to encrypt or decrypt data.plaintext - the unencrypted information (aka plaintext) to be encrypted.
Plaintext decrypt(CryptoContext cryptoContext,
Ciphertext ciphertext)
Decrypt the given ciphertext.
This method is thread-safe. Thus, implementors should keep in mind that Cipher is not thread-safe!
cryptoContext - context used to encrypt or decrypt data.ciphertext - the encrypted information (aka ciphertext) to be decrypted.
void close()
Close the session.
After closing, the CryptoSession cannot be used for encryption/decryption anymore, i.e.
encrypt(CryptoContext, Plaintext) and decrypt(CryptoContext, Ciphertext) very likely throw an exception. The other
methods might still work.
This method can be called multiple times - every following call will be silently ignored.
boolean isClosed()
closed.
true, if close() was already called; false otherwise.
|
Cumulus4j API (1.0.2) |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||