File: message.rb

package info (click to toggle)
rails 2%3A7.2.2.1%2Bdfsg-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 43,352 kB
  • sloc: ruby: 349,799; javascript: 30,703; yacc: 46; sql: 43; sh: 29; makefile: 27
file content (33 lines) | stat: -rw-r--r-- 873 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# frozen_string_literal: true

module ActiveRecord
  module Encryption
    # A message defines the structure of the data we store in encrypted attributes. It contains:
    #
    # * An encrypted payload
    # * A list of unencrypted headers
    #
    # See Encryptor#encrypt
    class Message
      attr_accessor :payload, :headers

      def initialize(payload: nil, headers: {})
        validate_payload_type(payload)

        @payload = payload
        @headers = Properties.new(headers)
      end

      def ==(other_message)
        payload == other_message.payload && headers == other_message.headers
      end

      private
        def validate_payload_type(payload)
          unless payload.is_a?(String) || payload.nil?
            raise ActiveRecord::Encryption::Errors::ForbiddenClass, "Only string payloads allowed"
          end
        end
    end
  end
end