62 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| class ActivityPub::EncryptedMessageSerializer < ActivityPub::Serializer
 | |
|   context :security
 | |
| 
 | |
|   context_extensions :olm
 | |
| 
 | |
|   class DeviceSerializer < ActivityPub::Serializer
 | |
|     attributes :type, :device_id
 | |
| 
 | |
|     def type
 | |
|       'Device'
 | |
|     end
 | |
| 
 | |
|     def device_id
 | |
|       object
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   class DigestSerializer < ActivityPub::Serializer
 | |
|     attributes :type, :digest_algorithm, :digest_value
 | |
| 
 | |
|     def type
 | |
|       'Digest'
 | |
|     end
 | |
| 
 | |
|     def digest_algorithm
 | |
|       'http://www.w3.org/2000/09/xmldsig#hmac-sha256'
 | |
|     end
 | |
| 
 | |
|     def digest_value
 | |
|       object
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   attributes :type, :message_type, :cipher_text, :message_franking
 | |
| 
 | |
|   has_one :attributed_to, serializer: DeviceSerializer
 | |
|   has_one :to, serializer: DeviceSerializer
 | |
|   has_one :digest, serializer: DigestSerializer
 | |
| 
 | |
|   def type
 | |
|     'EncryptedMessage'
 | |
|   end
 | |
| 
 | |
|   def attributed_to
 | |
|     object.source_device.device_id
 | |
|   end
 | |
| 
 | |
|   def to
 | |
|     object.target_device_id
 | |
|   end
 | |
| 
 | |
|   def message_type
 | |
|     object.type
 | |
|   end
 | |
| 
 | |
|   def cipher_text
 | |
|     object.body
 | |
|   end
 | |
| end
 |