Skip to main content

lib/kryptex.ex

defmodule Kryptex do
  @moduledoc """
  Public API for encrypting/decrypting field payloads.

  This package ports the same core mechanism from the Phoenix Ecto encryption
  example:

  - AES-256-GCM
  - random IV on every write
  - key id embedded in ciphertext for key rotation
  - encryption wired into `Ecto.ParameterizedType`
  """

  alias Kryptex.Cipher

  @spec encrypt(binary()) :: {:ok, binary()} | {:error, term()}
  def encrypt(plaintext) when is_binary(plaintext) do
    Cipher.encrypt(plaintext)
  end

  @spec decrypt(binary()) :: {:ok, binary()} | {:error, term()}
  def decrypt(ciphertext) when is_binary(ciphertext) do
    Cipher.decrypt(ciphertext)
  end
end