Refactor ActivityPub handling to prepare for non-Account actors (#19212)
* Move ActivityPub::FetchRemoteAccountService to ActivityPub::FetchRemoteActorService ActivityPub::FetchRemoteAccountService is kept as a wrapper for when the actor is specifically required to be an Account * Refactor SignatureVerification to allow non-Account actors * fixup! Move ActivityPub::FetchRemoteAccountService to ActivityPub::FetchRemoteActorService * Refactor ActivityPub::FetchRemoteKeyService to potentially return non-Account actors * Refactor inbound ActivityPub payload processing to accept non-Account actors * Refactor inbound ActivityPub processing to accept activities relayed through non-Account * Refactor how Account key URIs are built * Refactor Request and drop unused key_id_format parameter * Rename ActivityPub::Dereferencer `signature_account` to `signature_actor`
This commit is contained in:
		@@ -9,7 +9,7 @@ class ActivityPub::LinkedDataSignature
 | 
			
		||||
    @json = json.with_indifferent_access
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def verify_account!
 | 
			
		||||
  def verify_actor!
 | 
			
		||||
    return unless @json['signature'].is_a?(Hash)
 | 
			
		||||
 | 
			
		||||
    type        = @json['signature']['type']
 | 
			
		||||
@@ -18,7 +18,7 @@ class ActivityPub::LinkedDataSignature
 | 
			
		||||
 | 
			
		||||
    return unless type == 'RsaSignature2017'
 | 
			
		||||
 | 
			
		||||
    creator   = ActivityPub::TagManager.instance.uri_to_resource(creator_uri, Account)
 | 
			
		||||
    creator   = ActivityPub::TagManager.instance.uri_to_actor(creator_uri)
 | 
			
		||||
    creator ||= ActivityPub::FetchRemoteKeyService.new.call(creator_uri, id: false)
 | 
			
		||||
 | 
			
		||||
    return if creator.nil?
 | 
			
		||||
@@ -35,7 +35,7 @@ class ActivityPub::LinkedDataSignature
 | 
			
		||||
  def sign!(creator, sign_with: nil)
 | 
			
		||||
    options = {
 | 
			
		||||
      'type'    => 'RsaSignature2017',
 | 
			
		||||
      'creator' => [ActivityPub::TagManager.instance.uri_for(creator), '#main-key'].join,
 | 
			
		||||
      'creator' => ActivityPub::TagManager.instance.key_uri_for(creator),
 | 
			
		||||
      'created' => Time.now.utc.iso8601,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user