summaryrefslogtreecommitdiffstats
path: root/app/helpers/jsonld_helper.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2017-08-26 13:47:38 +0200
committerGitHub <noreply@github.com>2017-08-26 13:47:38 +0200
commit00840f4f2edb8d1d46638ccbc90a1f4462d0867a (patch)
treec4f6c9a4967df5d5f23094ddefed88c621d6c3ff /app/helpers/jsonld_helper.rb
parent1cebfed23e03b9d31796cdc139acde1b6dccd9f3 (diff)
Add handling of Linked Data Signatures in payloads (#4687)
* Add handling of Linked Data Signatures in payloads * Add a way to sign JSON, fix canonicalization of signature options * Fix signatureValue encoding, send out signed JSON when distributing * Add missing security context
Diffstat (limited to 'app/helpers/jsonld_helper.rb')
-rw-r--r--app/helpers/jsonld_helper.rb13
1 files changed, 13 insertions, 0 deletions
diff --git a/app/helpers/jsonld_helper.rb b/app/helpers/jsonld_helper.rb
index 8355eb05567..09446c8be28 100644
--- a/app/helpers/jsonld_helper.rb
+++ b/app/helpers/jsonld_helper.rb
@@ -17,6 +17,11 @@ module JsonLdHelper
!json.nil? && equals_or_includes?(json['@context'], ActivityPub::TagManager::CONTEXT)
end
+ def canonicalize(json)
+ graph = RDF::Graph.new << JSON::LD::API.toRdf(json)
+ graph.dump(:normalize)
+ end
+
def fetch_resource(uri)
response = build_request(uri).perform
return if response.code != 200
@@ -29,6 +34,14 @@ module JsonLdHelper
nil
end
+ def merge_context(context, new_context)
+ if context.is_a?(Array)
+ context << new_context
+ else
+ [context, new_context]
+ end
+ end
+
private
def build_request(uri)