Merge branch 'fix/html-title-load' into 'develop'
[akkoma] / lib / pleroma / signature.ex
index 7006eb2c05ec6db2d16eac147ea69e67f2636597..e388993b70a819a5773fffc166c89d444d4454a6 100644 (file)
@@ -5,6 +5,7 @@
 defmodule Pleroma.Signature do
   @behaviour HTTPSignatures.Adapter
 
+  alias Pleroma.EctoType.ActivityPub.ObjectValidators
   alias Pleroma.Keys
   alias Pleroma.User
   alias Pleroma.Web.ActivityPub.ActivityPub
@@ -21,14 +22,16 @@ defmodule Pleroma.Signature do
         uri
       end
 
-    case uri do
-      %URI{scheme: scheme} when scheme in ["https", "http"] ->
-        {:ok, URI.to_string(uri)}
+    maybe_ap_id = URI.to_string(uri)
+
+    case ObjectValidators.ObjectID.cast(maybe_ap_id) do
+      {:ok, ap_id} ->
+        {:ok, ap_id}
 
       _ ->
-        case Pleroma.Web.WebFinger.finger(URI.to_string(uri)) do
+        case Pleroma.Web.WebFinger.finger(maybe_ap_id) do
           %{"ap_id" => ap_id} -> {:ok, ap_id}
-          _ -> {:error, URI.to_string(uri)}
+          _ -> {:error, maybe_ap_id}
         end
     end
   end
@@ -36,7 +39,7 @@ defmodule Pleroma.Signature do
   def fetch_public_key(conn) do
     with %{"keyId" => kid} <- HTTPSignatures.signature_for_conn(conn),
          {:ok, actor_id} <- key_id_to_actor_id(kid),
-         {:ok, public_key} <- User.get_public_key_for_ap_id(actor_id) do
+         {:ok, public_key} <- User.get_public_key_for_ap_id(actor_id, force_http: true) do
       {:ok, public_key}
     else
       e ->
@@ -47,8 +50,8 @@ defmodule Pleroma.Signature do
   def refetch_public_key(conn) do
     with %{"keyId" => kid} <- HTTPSignatures.signature_for_conn(conn),
          {:ok, 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, _user} <- ActivityPub.make_user_from_ap_id(actor_id, force_http: true),
+         {:ok, public_key} <- User.get_public_key_for_ap_id(actor_id, force_http: true) do
       {:ok, public_key}
     else
       e ->