lockbox 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/lockbox.rb +3 -1
- data/lib/lockbox/encryptor.rb +3 -2
- data/lib/lockbox/model.rb +36 -31
- data/lib/lockbox/utils.rb +1 -1
- data/lib/lockbox/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 775a12c813fb58a8e3a7f799d85af74d8a461b8cb6578beb672919dd1a4030f2
|
4
|
+
data.tar.gz: 41ab60ea29776ade74d0300ce4f933a0dc10e8f07c20bf48c2e604cab0aa4c13
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1208cd3e38d59425f09db7d2830b7f69809d6ae601b2b59d232001325d1721fad3087683eb44690d8ad672cd2c9c8adc22cae283ed1f56c31d906d3ed4bcaee2
|
7
|
+
data.tar.gz: 02e1faac0de9a9d8fcf168e01474792b5c9275fab7006f7e6fd4668dcae22a0b5e716bd983324104b66b4dd4ef55aede488f341f04bd7039a085ffb798f0b35d
|
data/CHANGELOG.md
CHANGED
data/lib/lockbox.rb
CHANGED
@@ -20,10 +20,13 @@ require "lockbox/railtie" if defined?(Rails)
|
|
20
20
|
if defined?(ActiveSupport)
|
21
21
|
ActiveSupport.on_load(:active_record) do
|
22
22
|
extend Lockbox::Model
|
23
|
+
extend Lockbox::Model::Attached
|
23
24
|
end
|
24
25
|
|
25
26
|
ActiveSupport.on_load(:mongoid) do
|
26
27
|
Mongoid::Document::ClassMethods.include(Lockbox::Model)
|
28
|
+
# TODO remove in 0.4.0
|
29
|
+
Mongoid::Document::ClassMethods.include(Lockbox::Model::Attached)
|
27
30
|
end
|
28
31
|
end
|
29
32
|
|
@@ -79,7 +82,6 @@ module Lockbox
|
|
79
82
|
str.unpack("H*").first
|
80
83
|
end
|
81
84
|
|
82
|
-
# legacy
|
83
85
|
def self.new(**options)
|
84
86
|
Encryptor.new(**options)
|
85
87
|
end
|
data/lib/lockbox/encryptor.rb
CHANGED
@@ -5,8 +5,8 @@ module Lockbox
|
|
5
5
|
previous_versions = options.delete(:previous_versions)
|
6
6
|
|
7
7
|
@boxes =
|
8
|
-
[Box.new(options)] +
|
9
|
-
Array(previous_versions).map { |v| Box.new(
|
8
|
+
[Box.new(**options)] +
|
9
|
+
Array(previous_versions).map { |v| Box.new(key: options[:key], **v) }
|
10
10
|
end
|
11
11
|
|
12
12
|
def encrypt(message, **options)
|
@@ -74,6 +74,7 @@ module Lockbox
|
|
74
74
|
File.basename(source.path)
|
75
75
|
end
|
76
76
|
target.content_type = source.content_type if source.respond_to?(:content_type)
|
77
|
+
target.set_encoding(source.external_encoding) if source.respond_to?(:external_encoding)
|
77
78
|
end
|
78
79
|
|
79
80
|
# legacy for attr_encrypted
|
data/lib/lockbox/model.rb
CHANGED
@@ -1,36 +1,5 @@
|
|
1
1
|
module Lockbox
|
2
2
|
module Model
|
3
|
-
def attached_encrypted(attribute, **options)
|
4
|
-
warn "[lockbox] DEPRECATION WARNING: Use encrypts_attached instead"
|
5
|
-
encrypts_attached(attribute, **options)
|
6
|
-
end
|
7
|
-
|
8
|
-
def encrypts_attached(*attributes, **options)
|
9
|
-
attributes.each do |name|
|
10
|
-
name = name.to_sym
|
11
|
-
|
12
|
-
class_eval do
|
13
|
-
@lockbox_attachments ||= {}
|
14
|
-
|
15
|
-
if @lockbox_attachments.empty?
|
16
|
-
def self.lockbox_attachments
|
17
|
-
parent_attachments =
|
18
|
-
if superclass.respond_to?(:lockbox_attachments)
|
19
|
-
superclass.lockbox_attachments
|
20
|
-
else
|
21
|
-
{}
|
22
|
-
end
|
23
|
-
|
24
|
-
parent_attachments.merge(@lockbox_attachments || {})
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
raise "Duplicate encrypted attachment: #{name}" if lockbox_attachments[name]
|
29
|
-
@lockbox_attachments[name] = options
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
3
|
def encrypts(*attributes, **options)
|
35
4
|
# support objects
|
36
5
|
# case options[:type]
|
@@ -271,6 +240,7 @@ module Lockbox
|
|
271
240
|
table = activerecord ? table_name : collection_name.to_s
|
272
241
|
|
273
242
|
unless message.nil?
|
243
|
+
# TODO use attribute type class in 0.4.0
|
274
244
|
case options[:type]
|
275
245
|
when :boolean
|
276
246
|
message = ActiveRecord::Type::Boolean.new.serialize(message)
|
@@ -327,6 +297,7 @@ module Lockbox
|
|
327
297
|
end
|
328
298
|
|
329
299
|
unless message.nil?
|
300
|
+
# TODO use attribute type class in 0.4.0
|
330
301
|
case options[:type]
|
331
302
|
when :boolean
|
332
303
|
message = message == "t"
|
@@ -363,5 +334,39 @@ module Lockbox
|
|
363
334
|
end
|
364
335
|
end
|
365
336
|
end
|
337
|
+
|
338
|
+
module Attached
|
339
|
+
def encrypts_attached(*attributes, **options)
|
340
|
+
attributes.each do |name|
|
341
|
+
name = name.to_sym
|
342
|
+
|
343
|
+
class_eval do
|
344
|
+
@lockbox_attachments ||= {}
|
345
|
+
|
346
|
+
if @lockbox_attachments.empty?
|
347
|
+
def self.lockbox_attachments
|
348
|
+
parent_attachments =
|
349
|
+
if superclass.respond_to?(:lockbox_attachments)
|
350
|
+
superclass.lockbox_attachments
|
351
|
+
else
|
352
|
+
{}
|
353
|
+
end
|
354
|
+
|
355
|
+
parent_attachments.merge(@lockbox_attachments || {})
|
356
|
+
end
|
357
|
+
end
|
358
|
+
|
359
|
+
raise "Duplicate encrypted attachment: #{name}" if lockbox_attachments[name]
|
360
|
+
@lockbox_attachments[name] = options
|
361
|
+
end
|
362
|
+
end
|
363
|
+
end
|
364
|
+
|
365
|
+
# TODO remove in future version
|
366
|
+
def attached_encrypted(attribute, **options)
|
367
|
+
warn "[lockbox] DEPRECATION WARNING: Use encrypts_attached instead"
|
368
|
+
encrypts_attached(attribute, **options)
|
369
|
+
end
|
370
|
+
end
|
366
371
|
end
|
367
372
|
end
|
data/lib/lockbox/utils.rb
CHANGED
data/lib/lockbox/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lockbox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-12-
|
11
|
+
date: 2019-12-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -220,7 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
220
220
|
- !ruby/object:Gem::Version
|
221
221
|
version: '0'
|
222
222
|
requirements: []
|
223
|
-
rubygems_version: 3.
|
223
|
+
rubygems_version: 3.1.2
|
224
224
|
signing_key:
|
225
225
|
specification_version: 4
|
226
226
|
summary: Modern encryption for Rails
|