Sha256: ae36d57330d9f62b51c3da57942ac312ca8b0ce2cb0dd91272eb1ba3453c930f

Contents?: true

Size: 873 Bytes

Versions: 59

Compression:

Stored size: 873 Bytes

Contents

# 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

Version data entries

59 entries across 58 versions & 6 rubygems

Version Path
activerecord-8.0.0 lib/active_record/encryption/message.rb
activerecord-7.2.2 lib/active_record/encryption/message.rb
activerecord-7.1.5 lib/active_record/encryption/message.rb
activerecord-8.0.0.rc2 lib/active_record/encryption/message.rb
activerecord-7.2.1.2 lib/active_record/encryption/message.rb
activerecord-7.1.4.2 lib/active_record/encryption/message.rb
activerecord-7.0.8.6 lib/active_record/encryption/message.rb
activerecord-8.0.0.rc1 lib/active_record/encryption/message.rb
activerecord-7.2.1.1 lib/active_record/encryption/message.rb
activerecord-7.1.4.1 lib/active_record/encryption/message.rb
activerecord-7.0.8.5 lib/active_record/encryption/message.rb
activerecord-8.0.0.beta1 lib/active_record/encryption/message.rb
omg-activerecord-8.0.0.alpha9 lib/active_record/encryption/message.rb
omg-activerecord-8.0.0.alpha8 lib/active_record/encryption/message.rb
omg-activerecord-8.0.0.alpha7 lib/active_record/encryption/message.rb
omg-activerecord-8.0.0.alpha4 lib/active_record/encryption/message.rb
omg-activerecord-8.0.0.alpha3 lib/active_record/encryption/message.rb
omg-activerecord-8.0.0.alpha2 lib/active_record/encryption/message.rb
omg-activerecord-8.0.0.alpha1 lib/active_record/encryption/message.rb
activerecord-7.1.4 lib/active_record/encryption/message.rb