diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2017-08-21 22:57:34 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-21 22:57:34 +0200 |
commit | 72bb3e03fdf4d8c886d41f3459000b336a3a362b (patch) | |
tree | ef5e3f97195bf55d04b49ac6cdf04b6394d8f686 /app/controllers | |
parent | f391a4673adc6d79bb3a46b493d599a4bf6d558f (diff) |
Support more variations of ActivityPub keyId in signature (#4630)
- Tries to avoid performing HTTP request if the keyId is an actor URI - Likewise if the URI is a fragment URI on top of actor URI - Resolves public key, returns owner if the owner links back to the key
Diffstat (limited to 'app/controllers')
-rw-r--r-- | app/controllers/concerns/signature_verification.rb | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb index aeb8da879..4211283ed 100644 --- a/app/controllers/concerns/signature_verification.rb +++ b/app/controllers/concerns/signature_verification.rb @@ -98,7 +98,9 @@ module SignatureVerification if key_id.start_with?('acct:') ResolveRemoteAccountService.new.call(key_id.gsub(/\Aacct:/, '')) elsif !ActivityPub::TagManager.instance.local_uri?(key_id) - ActivityPub::FetchRemoteAccountService.new.call(key_id) + account = ActivityPub::TagManager.instance.uri_to_resource(key_id, Account) + account ||= ActivityPub::FetchRemoteKeyService.new.call(key_id) + account end end end |