Class: ROM::EncryptedAttribute::Payload

Inherits:
Dry::Struct
  • Object
show all
Defined in:
lib/rom/encrypted_attribute/payload.rb

Defined Under Namespace

Classes: Types

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.decode(database_value) ⇒ Object



17
18
19
20
21
22
23
24
# File 'lib/rom/encrypted_attribute/payload.rb', line 17

def self.decode(database_value)
  payload = JSON.parse(database_value)
  new(
    message: decode64(payload["p"]),
    initialization_vector: decode64(payload.dig("h", "iv")),
    auth_tag: decode64(payload.dig("h", "at"))
  )
end

.decode64(value) ⇒ Object



26
27
28
# File 'lib/rom/encrypted_attribute/payload.rb', line 26

def self.decode64(value)
  Base64.strict_decode64(value)
end

Instance Method Details

#encodeObject



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/rom/encrypted_attribute/payload.rb', line 30

def encode
  payload =
    {
      "p" => encode64(message),
      "h" => {
        "iv" => encode64(initialization_vector),
        "at" => encode64(auth_tag)
      }
    }

  JSON.dump(payload)
end