# axon-data-protection-axon2 4.5.1 API

The core capability of Axon Data Protection is to encrypt and decrypt individual fields of a Java object, using a key which is determined by the value of another field of the object. Although this capability may have various different use cases, the main use case foreseen when designing the module was to provide the option to later effectively delete the contents of the encrypted fields, by destroying the key used to encrypt them.

As part of the Axon Data Protection distribution, there is an extensive user guide in PDF form explaining how to use the module. This Javadoc provides details on a class-by-class basis, but please review the user guide as a starting point.

Packages
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.