LemonCore.Secrets.Crypto (lemon_core v0.1.0)

View Source

Cryptographic helpers for encrypted secret storage.

This module encrypts secret values with AES-256-GCM and derives per-secret keys using HKDF-SHA256 from the configured master key and a random salt.

Summary

Types

encrypted_secret()

@type encrypted_secret() :: %{
  ciphertext: String.t(),
  nonce: String.t(),
  salt: String.t(),
  version: String.t()
}

Functions

decrypt(payload, master_key)

@spec decrypt(map(), binary()) :: {:ok, String.t()} | {:error, atom()}

encrypt(plaintext, master_key)

@spec encrypt(String.t(), binary()) :: {:ok, encrypted_secret()} | {:error, atom()}

version()

@spec version() :: String.t()