about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2017-07-17 02:37:27 +0200
committerGitHub <noreply@github.com>2017-07-17 02:37:27 +0200
commita47c2e88909b87392f041a75d43624f14470fd71 (patch)
treeac72665258cdb391d64fa68b13da5c9161b7d130
parenta3202fd51e240050a12ddf1170e3e6e2b1532bbf (diff)
Add public key declaration to actors (#4215)
-rw-r--r--app/serializers/activitypub/actor_serializer.rb6
-rw-r--r--app/serializers/activitypub/public_key_serializer.rb17
2 files changed, 23 insertions, 0 deletions
diff --git a/app/serializers/activitypub/actor_serializer.rb b/app/serializers/activitypub/actor_serializer.rb
index 56806152e..f5e626d73 100644
--- a/app/serializers/activitypub/actor_serializer.rb
+++ b/app/serializers/activitypub/actor_serializer.rb
@@ -7,6 +7,8 @@ class ActivityPub::ActorSerializer < ActiveModel::Serializer
              :inbox, :outbox, :preferred_username,
              :name, :summary, :icon, :image
 
+  has_one :public_key, serializer: ActivityPub::PublicKeySerializer
+
   def id
     account_url(object)
   end
@@ -50,4 +52,8 @@ class ActivityPub::ActorSerializer < ActiveModel::Serializer
   def image
     full_asset_url(object.header.url(:original))
   end
+
+  def public_key
+    object
+  end
 end
diff --git a/app/serializers/activitypub/public_key_serializer.rb b/app/serializers/activitypub/public_key_serializer.rb
new file mode 100644
index 000000000..38e9e93ba
--- /dev/null
+++ b/app/serializers/activitypub/public_key_serializer.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class ActivityPub::PublicKeySerializer < ActiveModel::Serializer
+  attributes :id, :owner, :public_key_pem
+
+  def id
+    [ActivityPub::TagManager.instance.uri_for(object), '#main-key'].join
+  end
+
+  def owner
+    ActivityPub::TagManager.instance.uri_for(object)
+  end
+
+  def public_key_pem
+    object.public_key
+  end
+end