aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorkaniini <ariadne@dereferenced.org>2019-07-17 19:44:14 +0000
committerkaniini <ariadne@dereferenced.org>2019-07-17 19:44:14 +0000
commit60b54ee64a9130dd4a3245b90ab49943a9e881c6 (patch)
treeb7c9908171c223b977c27b0092f8ee4037f26c0c /lib
parent348307ec19a7f6bea1680fda8d726a6bd06f7e99 (diff)
parentf84fb340b7358df195734f2db199e76a819e45bf (diff)
downloadpleroma-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.ex13
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}