lib/lockbox/utils.rb in lockbox-0.1.1 vs lib/lockbox/utils.rb in lockbox-0.2.0
- old
+ new
@@ -1,20 +1,31 @@
class Lockbox
class Utils
- def self.build_box(context, options)
- options = options.dup
+ def self.build_box(context, options, table, attribute)
+ options = options.except(:attribute, :encrypted_attribute, :migrating, :attached)
options.each do |k, v|
if v.is_a?(Proc)
options[k] = context.instance_exec(&v) if v.respond_to?(:call)
elsif v.is_a?(Symbol)
options[k] = context.send(v)
end
end
+ unless options[:key] || options[:encryption_key] || options[:decryption_key]
+ options[:key] = Lockbox.attribute_key(table: table, attribute: attribute, master_key: options.delete(:master_key))
+ end
+
Lockbox.new(options)
end
def self.encrypted_options(record, name)
- record.class.respond_to?(:encrypted_attachments) && record.class.encrypted_attachments[name.to_sym]
+ record.class.respond_to?(:lockbox_attachments) && record.class.lockbox_attachments[name.to_sym]
+ end
+
+ def self.decode_key(key)
+ if key.encoding != Encoding::BINARY && key =~ /\A[0-9a-f]{64,128}\z/i
+ key = [key].pack("H*")
+ end
+ key
end
end
end