alias Kryptex.Cipher alias Kryptex.EncryptedField alias Kryptex.Keyring encrypt = fn value -> value |> to_string() |> Cipher.encrypt() end decrypt = fn ciphertext -> Cipher.decrypt(ciphertext) end roundtrip = fn value -> with {:ok, ciphertext} <- Cipher.encrypt(to_string(value)), {:ok, plaintext} <- Cipher.decrypt(ciphertext) do %{ciphertext: ciphertext, plaintext: plaintext} end end field_roundtrip = fn value, source_type -> params = EncryptedField.init(source_type: source_type) with {:ok, dumped} <- EncryptedField.dump(value, &Ecto.Type.dump/2, params), {:ok, loaded} <- EncryptedField.load(dumped, &Ecto.Type.load/2, params) do %{dumped: dumped, loaded: loaded} end end current_key = fn -> Keyring.current_key() end IO.puts("") IO.puts("Kryptex helpers loaded: encrypt, decrypt, roundtrip, field_roundtrip, current_key") IO.puts("")