## Uses of Interface
io.axoniq.dataprotection.cryptoengine.CryptoEngine

- Packages that use CryptoEngine
  Package | Description
  --- | ---
  io.axoniq.dataprotection.api | Annotations, exceptions and encryption service objects of the Axon Data Protection Module.
  io.axoniq.dataprotection.cryptoengine | Contains the core `CryptoEngine` interface and various implementations.
  io.axoniq.dataprotection.cryptoengine.jpa | Contains a JPA-based implementation of `CryptoEngine` and some associated classes.
  io.axoniq.dataprotection.cryptoengine.vault | Contains a HashiCorp Vault backed implementation of `CryptoEngine` and associated classes.

- - ### Uses of CryptoEngine in io.axoniq.dataprotection.api

    Constructors in io.axoniq.dataprotection.api with parameters of type CryptoEngine
    Constructor | Description
    --- | ---
    `FieldEncrypter​(CryptoEngine cryptoEngine)` | Deprecated. in favor of using the `FieldEncrypter(CryptoEngine, Serializer)` to construct an instance using a configured `Serializer` instance.
    `FieldEncrypter​(CryptoEngine cryptoEngine, ReplacementValueProvider replacementValueProvider)` | Deprecated. in favor of using the `FieldEncrypter(CryptoEngine, Serializer, ReplacementValueProvider)` to construct an instance using a configured `Serializer` instance.
    `FieldEncrypter​(CryptoEngine cryptoEngine, Serializer serializer)` | Instantiates a FieldEncrypter with the default rules for value replacement but a custom `Serializer`.
    `FieldEncrypter​(CryptoEngine cryptoEngine, Serializer serializer, ReplacementValueProvider replacementValueProvider)` | Instantiates a FieldEncrypter with a custom `ReplacementValueProvider` and a custom `Serializer`.
    `FieldEncryptingSerializer​(CryptoEngine cryptoEngine, ReplacementValueProvider replacementValueProvider, Serializer delegateSerializer)` | Deprecated. in favor of using the `FieldEncryptingSerializer(CryptoEngine, Serializer, ReplacementValueProvider, Serializer)` to construct an instance using a configured `Serializer` instances.
    `FieldEncryptingSerializer​(CryptoEngine cryptoEngine, Serializer delegateSerializer)` | Deprecated. in favor of using the `FieldEncryptingSerializer(CryptoEngine, Serializer, Serializer)` to construct an instance using a configured `Serializer` instances.
    `FieldEncryptingSerializer​(CryptoEngine cryptoEngine, Serializer personalDataSerializer, ReplacementValueProvider replacementValueProvider, Serializer delegateSerializer)` | Constructs a `FieldEncryptingSerializer` using a given `CryptoEngine`, `ReplacementValueProvider` and `Serializer`.
    `FieldEncryptingSerializer​(CryptoEngine cryptoEngine, Serializer personalDataSerializer, Serializer delegateSerializer)` | Constructs a `FieldEncryptingSerializer` using a given `CryptoEngine` and `Serializer`.

  - ### Uses of CryptoEngine in io.axoniq.dataprotection.cryptoengine

    Classes in io.axoniq.dataprotection.cryptoengine that implement CryptoEngine
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `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.
    `class` | `InMemoryCryptoEngine` | Implementation of `CryptoEngine` that extends from `DatabaseBackedCryptoEngine` and simply keeps all its data in an in-memory `ConcurrentHashMap`.
    `class` | `JavaKeyStoreCryptoEngine` | Implementation of `CryptoEngine` that uses a JCE `KeyStore` implementation to store its keys.
    `class` | `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.
    `class` | `PKCS11CryptoEngine` | Implementation of `CryptoEngine` that uses a PKCS#11 backend, such as a Hardware Security Module (HSM).

  - ### Uses of CryptoEngine in io.axoniq.dataprotection.cryptoengine.jpa

    Classes in io.axoniq.dataprotection.cryptoengine.jpa that implement CryptoEngine
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `JpaCryptoEngine` | Implementation of `CryptoEngine` that extends from `DatabaseBackedCryptoEngine` and stores its data in a relational database using JPA.

  - ### Uses of CryptoEngine in io.axoniq.dataprotection.cryptoengine.vault

    Classes in io.axoniq.dataprotection.cryptoengine.vault that implement CryptoEngine
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `VaultCryptoEngine` | HashiCorp Vault-based implementation of the `CryptoEngine` interface.