# Package io.axoniq.dataprotection.cryptoengine

Contains the core `CryptoEngine` interface and various implementations.

- Interface Summary
  Interface | Description
  --- | ---
  CryptoEngine | Interface towards the cryptographic functionality needed by the Axon Data Protection Module.

- Class Summary
  Class | Description
  --- | ---
  DatabaseBackedCryptoEngine | Partial implementation of `CryptoEngine` which operates using the JVM's standard `Provider` to perform encryption and decryption, while assuming some separate storage facility for keys.
  InMemoryCryptoEngine | Implementation of `CryptoEngine` that extends from `DatabaseBackedCryptoEngine` and simply keeps all its data in an in-memory `ConcurrentHashMap`.
  JavaKeyStoreCryptoEngine | Implementation of `CryptoEngine` that uses a JCE `KeyStore` implementation to store its keys.
  JdbcCryptoEngine | JDBC-based implementation of the `CryptoEngine` interface, included for users who wish to store keys in a relational database but do not wish to use JPA.
  PKCS11CryptoEngine | Implementation of `CryptoEngine` that uses a PKCS#11 backend, such as a Hardware Security Module (HSM).

- Enum Summary
  Enum | Description
  --- | ---
  KeyType | Enum used to describe key type/length.