Sha256: b423039c19f31e075ac3fda738cbcf6b4b42f4bf2f3a1f41a39e714724ce679d

Contents?: true

Size: 1.03 KB

Versions: 2

Compression:

Stored size: 1.03 KB

Contents

module AttrKeyring
  require "active_record"
  require "openssl"
  require "digest/sha1"

  require "attr_keyring/version"
  require "attr_keyring/active_record"
  require "attr_keyring/keyring"
  require "attr_keyring/key"
  require "attr_keyring/encryptor/aes"
  require "attr_keyring/encryptor/aes_128_cbc"
  require "attr_keyring/encryptor/aes_256_cbc"

  UnknownKey = Class.new(StandardError)
  InvalidSecret = Class.new(StandardError)

  def self.included(target)
    target.class_eval do
      extend AttrKeyring::ActiveRecord::ClassMethods
      include AttrKeyring::ActiveRecord::InstanceMethods

      class << self
        attr_accessor :keyring_attrs
        attr_accessor :keyring

        def inherited(subclass)
          super

          subclass.keyring_attrs = {}
          subclass.keyring = Keyring.new({})
        end
      end

      cattr_accessor :keyring_column_name, default: "keyring_id"
      self.keyring_attrs = {}
      self.keyring = Keyring.new({})

      before_save :migrate_to_latest_encryption_key
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
attr_keyring-0.3.1 lib/attr_keyring.rb
attr_keyring-0.3.0 lib/attr_keyring.rb