Current section
Files
Jump to
Current section
Files
lib/secret.ex
defmodule Secret do
@moduledoc """
Sugar for SimpleSecrets to pack/unpack base don env var
"""
defp sender() do
Application.get_env(:secret, :signing_secret)
|> SimpleSecrets.init()
end
def pack(data) do
SimpleSecrets.pack(data, sender())
end
def pack!(data) do
{:ok, secret} = SimpleSecrets.pack(data, sender())
secret
end
def unpack(packet) do
try do
SimpleSecrets.unpack(packet, sender())
rescue
MatchError -> :error
ArgumentError -> :error
else
payload -> payload
end
end
def unpack!(packet) do
unpack(packet)
|> case do
{:ok, payload} -> payload
:error -> :error
end
end
def generate() do
:crypto.strong_rand_bytes(24)
|> Base.encode64()
|> String.replace("/", "_")
|> String.replace("+", "-")
end
end