25 lines
597 B
Elixir
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
|