Class JpaCryptoEngine
- java.lang.Object
-
- io.axoniq.dataprotection.cryptoengine.DatabaseBackedCryptoEngine
-
- io.axoniq.dataprotection.cryptoengine.jpa.JpaCryptoEngine
-
- All Implemented Interfaces:
CryptoEngine
public class JpaCryptoEngine extends DatabaseBackedCryptoEngine
Implementation ofCryptoEnginethat extends fromDatabaseBackedCryptoEngineand stores its data in a relational database using JPA. It needs aEntityManagerFactoryto operate. This class will manage its own transactions. Therefore, it doesn't need any type of transaction manager, andEntityManagerFactorymust have theRESOURCE_LOCALtransaction type.This class by itself doesn't do any key caching. If this is required, applications may configure a second-level cache on the
EntityManagerFactory.
-
-
Constructor Summary
Constructors Constructor Description JpaCryptoEngine(jakarta.persistence.EntityManagerFactory emf)Creates a newJpaCryptoEngine.JpaCryptoEngine(jakarta.persistence.EntityManagerFactory emf, Class<? extends KeyEntity> entityClass)Creates a newJpaCryptoEnginefor a custom entity class.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voiddeleteKey(String id)Deletes the key for a given id.protected Class<? extends KeyEntity>entityClass()Provides access to the entity class specified in the constructor; madeprotectedto make this information available to subclassesSecretKeygetKey(String id)Retrieves the key for a given id.protected SecretKeyputKeyIfAbsent(String id, SecretKeySpec secretKeySpec)Stores the key for the given id, if no key is currently registered for this id.-
Methods inherited from class io.axoniq.dataprotection.cryptoengine.DatabaseBackedCryptoEngine
createCipher, createDigestCipher, getKeyType, getOrCreateKey, setKeyType
-
-
-
-
Constructor Detail
-
JpaCryptoEngine
public JpaCryptoEngine(jakarta.persistence.EntityManagerFactory emf)
Creates a newJpaCryptoEngine. Will useDefaultKeyEntityas the class to store key entities.- Parameters:
emf- theEntityManagerFactoryto use.
-
JpaCryptoEngine
public JpaCryptoEngine(jakarta.persistence.EntityManagerFactory emf, Class<? extends KeyEntity> entityClass)Creates a newJpaCryptoEnginefor a custom entity class.- Parameters:
emf- theEntityManagerFactoryto use.entityClass- the entity used to store key information
-
-
Method Detail
-
putKeyIfAbsent
protected SecretKey putKeyIfAbsent(String id, SecretKeySpec secretKeySpec)
Description copied from class:DatabaseBackedCryptoEngineStores the key for the given id, if no key is currently registered for this id. Returns the new key belonging to id, which is either the key that was already registered or the key provided as the 2nd argument if no key was registered yet. (Please note that this is different behaviour fromConcurrentHashMap.putIfAbsent(Object, Object), which always returns the prior value belonging to key.)- Specified by:
putKeyIfAbsentin classDatabaseBackedCryptoEngine- Parameters:
id- the id for which to store/retrieve the secret keysecretKeySpec- theSecretKeySpecto store if none has been stored yet for id- Returns:
- the effective
SecretKeySpecfor id
-
getKey
public SecretKey getKey(String id)
Description copied from interface:CryptoEngineRetrieves the key for a given id.
-
deleteKey
public void deleteKey(String id)
Description copied from interface:CryptoEngineDeletes the key for a given id. Does nothing if the key doesn't exist.- Parameters:
id- the id of theSecretKey
-
-