Package io.axoniq.dataprotection.cryptoengine

## Class InMemoryCryptoEngine

- java.lang.Object
- - io.axoniq.dataprotection.cryptoengine.DatabaseBackedCryptoEngine
  - - io.axoniq.dataprotection.cryptoengine.InMemoryCryptoEngine

- All Implemented Interfaces:
    `CryptoEngine`

      public class InMemoryCryptoEngine
      extends DatabaseBackedCryptoEngine

  Implementation of `CryptoEngine` that extends from `DatabaseBackedCryptoEngine` and simply keeps all its data in an in-memory `ConcurrentHashMap`. This is useful for (unit) testing purposes.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `InMemoryCryptoEngine()` | Constructs an `InMemoryCryptoEngine`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `deleteKey​(String id)` | Deletes the key for a given id.
    `SecretKey` | `getKey​(String id)` | Retrieves the key for a given id.
    `protected SecretKey` | `putKeyIfAbsent​(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`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### InMemoryCryptoEngine

          public InMemoryCryptoEngine()

      Constructs an `InMemoryCryptoEngine`. There are no parameters to configure.

  - ### Method Detail

    - #### getKey

          public SecretKey getKey​(String id)

      Description copied from interface: `CryptoEngine`
      Retrieves the key for a given id.
      Parameters:
        `id` - the id of the `SecretKey`
      Returns:
        the existing `SecretKey` associated with the id, or `null` if no such key exists

    - #### putKeyIfAbsent

          protected SecretKey putKeyIfAbsent​(String id,
                                             SecretKeySpec secretKeySpec)

      Description copied from class: `DatabaseBackedCryptoEngine`
      Stores 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 from `ConcurrentHashMap.putIfAbsent(Object, Object)`, which always returns the prior value belonging to key.)
      Specified by:
        `putKeyIfAbsent` in class `DatabaseBackedCryptoEngine`
      Parameters:
        `id` - the id for which to store/retrieve the secret key
        `secretKeySpec` - the `SecretKeySpec` to store if none has been stored yet for id
      Returns:
        the effective `SecretKeySpec` for id

    - #### deleteKey

          public void deleteKey​(String id)

      Description copied from interface: `CryptoEngine`
      Deletes the key for a given id. Does nothing if the key doesn't exist.
      Parameters:
        `id` - the id of the `SecretKey`