diff options
author | kaniini <ariadne@dereferenced.org> | 2019-07-17 19:44:14 +0000 |
---|---|---|
committer | kaniini <ariadne@dereferenced.org> | 2019-07-17 19:44:14 +0000 |
commit | 60b54ee64a9130dd4a3245b90ab49943a9e881c6 (patch) | |
tree | b7c9908171c223b977c27b0092f8ee4037f26c0c /lib | |
parent | 348307ec19a7f6bea1680fda8d726a6bd06f7e99 (diff) | |
parent | f84fb340b7358df195734f2db199e76a819e45bf (diff) | |
download | pleroma-60b54ee64a9130dd4a3245b90ab49943a9e881c6.tar.gz |
Merge branch 'feature/http-signatures-keyid' into 'develop'
http signatures: derive actor from key IDs
See merge request pleroma/pleroma!1442
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/signature.ex | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/pleroma/signature.ex b/lib/pleroma/signature.ex index 1a4d54c62..a45c70a9d 100644 --- a/lib/pleroma/signature.ex +++ b/lib/pleroma/signature.ex @@ -8,10 +8,16 @@ defmodule Pleroma.Signature do alias Pleroma.Keys alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub - alias Pleroma.Web.ActivityPub.Utils + + defp key_id_to_actor_id(key_id) do + URI.parse(key_id) + |> Map.put(:fragment, nil) + |> URI.to_string() + end def fetch_public_key(conn) do - with actor_id <- Utils.get_ap_id(conn.params["actor"]), + with %{"keyId" => kid} <- HTTPSignatures.signature_for_conn(conn), + actor_id <- key_id_to_actor_id(kid), {:ok, public_key} <- User.get_public_key_for_ap_id(actor_id) do {:ok, public_key} else @@ -21,7 +27,8 @@ defmodule Pleroma.Signature do end def refetch_public_key(conn) do - with actor_id <- Utils.get_ap_id(conn.params["actor"]), + with %{"keyId" => kid} <- HTTPSignatures.signature_for_conn(conn), + actor_id <- key_id_to_actor_id(kid), {:ok, _user} <- ActivityPub.make_user_from_ap_id(actor_id), {:ok, public_key} <- User.get_public_key_for_ap_id(actor_id) do {:ok, public_key} |