signature: distinguish error sources and log fetch issues
This commit is contained in:
parent
51642a90c5
commit
a7b4e4bfd9
1 changed files with 16 additions and 6 deletions
|
@ -10,23 +10,33 @@ defmodule Pleroma.Signature do
|
||||||
require Logger
|
require Logger
|
||||||
|
|
||||||
def fetch_public_key(conn) do
|
def fetch_public_key(conn) do
|
||||||
with %{"keyId" => kid} <- HTTPSignatures.signature_for_conn(conn),
|
with {_, %{"keyId" => kid}} <- {:keyid, HTTPSignatures.signature_for_conn(conn)},
|
||||||
{:ok, %SigningKey{} = sk} <- SigningKey.get_or_fetch_by_key_id(kid),
|
{_, {:ok, %SigningKey{} = sk}, _} <-
|
||||||
{:ok, decoded_key} <- SigningKey.public_key_decoded(sk) do
|
{:fetch, SigningKey.get_or_fetch_by_key_id(kid), kid},
|
||||||
|
{_, {:ok, decoded_key}} <- {:decode, SigningKey.public_key_decoded(sk)} do
|
||||||
{:ok, decoded_key}
|
{:ok, decoded_key}
|
||||||
else
|
else
|
||||||
|
{:fetch, error, kid} ->
|
||||||
|
Logger.error("Failed to acquire key from signature: #{kid} #{inspect(error)}")
|
||||||
|
{:error, {:fetch, error}}
|
||||||
|
|
||||||
e ->
|
e ->
|
||||||
{:error, e}
|
{:error, e}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def refetch_public_key(conn) do
|
def refetch_public_key(conn) do
|
||||||
with %{"keyId" => kid} <- HTTPSignatures.signature_for_conn(conn),
|
with {_, %{"keyId" => kid}} <- {:keyid, HTTPSignatures.signature_for_conn(conn)},
|
||||||
# TODO: force a refetch of stale keys (perhaps with a backoff time based on updated_at)
|
# TODO: force a refetch of stale keys (perhaps with a backoff time based on updated_at)
|
||||||
{:ok, %SigningKey{} = sk} <- SigningKey.get_or_fetch_by_key_id(kid),
|
{_, {:ok, %SigningKey{} = sk}, _} <-
|
||||||
{:ok, decoded_key} <- SigningKey.public_key_decoded(sk) do
|
{:fetch, SigningKey.get_or_fetch_by_key_id(kid), kid},
|
||||||
|
{_, {:ok, decoded_key}} <- {:decode, SigningKey.public_key_decoded(sk)} do
|
||||||
{:ok, decoded_key}
|
{:ok, decoded_key}
|
||||||
else
|
else
|
||||||
|
{:fetch, error, kid} ->
|
||||||
|
Logger.error("Failed to refresh stale key from signature: #{kid} #{inspect(error)}")
|
||||||
|
{:error, {:fetch, error}}
|
||||||
|
|
||||||
e ->
|
e ->
|
||||||
{:error, e}
|
{:error, e}
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue