floof/lib/floof/pubkey_mgr.ex
2022-11-24 20:01:34 +01:00

25 lines
597 B
Elixir

defmodule Floof.PubkeyMgr do
@callback get_pubkey(any(), [{:RelativeDistinguishedName, any(), any()}]) ::
{:ok, :ed25519, binary()} | :error
end
defmodule Floof.PubkeyMgr.FileDB do
@behaviour Floof.PubkeyMgr
def get_pubkey(config, source) do
keydb = config.keydb
if keydb == "" do
:error
else
{:ok, encname} = :FloofProtocol.encode(:RDNSequence, source)
keypath = keydb <> "/" <> Base.url_encode64(encname)
case File.read(keypath) do
{:ok, data} -> {:ok, :ed25519, data}
{:error, _} -> :error
end
end
end
end