strongbox 0.7.2 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -13
- data/.ruby-version +1 -0
- data/.travis.yml +11 -5
- data/CHANGELOG.md +63 -0
- data/README.md +1 -1
- data/gemfiles/3.2.gemfile +2 -3
- data/gemfiles/4.2.gemfile +5 -0
- data/gemfiles/5.1.gemfile +5 -0
- data/lib/strongbox.rb +2 -1
- data/lib/strongbox/cipher.rb +7 -0
- data/lib/strongbox/lock.rb +4 -4
- data/test/method_key_test.rb +1 -1
- data/test/missing_attributes_test.rb +5 -1
- data/test/test_helper.rb +1 -1
- metadata +29 -26
- data/gemfiles/2.3.gemfile +0 -6
- data/gemfiles/3.0.gemfile +0 -6
- data/gemfiles/3.1.gemfile +0 -6
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
OTJkNGY2YTEyNjI5ZTVlMDE3NDY4ZDlhN2NhMGRjMTg4NjAxYTY5NA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1571ce9f278af93d9d7353192e33b7e651149c5a
|
4
|
+
data.tar.gz: 5f99be65d0d775389c09e7de1a19d139cf14353d
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
OWU1ODhiNDhmZDg4NzliMGZmNjZiNmUwYmE2YmQwMjk0ODE0MDczMWJjNTFl
|
11
|
-
YzQ4MzdmZWQ5ZDc0Y2RkZWNkNzkxMDNhNzQ4M2YzYzZjNzEzYmE=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
Mjg5Y2I3NDViYWFkM2ZmMzgxNDBlMjc3NzAxZWZmZTY3ZWUwZTc3MDQyMjg2
|
14
|
-
MGRmNzU1YzgzNmRlYmRiODg5YTAzNTVjOGI0M2ZjZTg2ZDE5YjA3MTJmMGE3
|
15
|
-
ZjFhYWFmY2NmOWY3NDZmOTE5YjI3NTNkMjU0Mzk2OGNiMjI5YWI=
|
6
|
+
metadata.gz: 9e1289c09e1f4c91cea61b9602558f89becfab9653ea278658936a6fc32af90ddedc7156263b13d1a091bdac57981460c6fe519556f58399faf5f79a6e119f11
|
7
|
+
data.tar.gz: 970cebde69c51b93cb76fccaa71d7d9c946a4f964a9e016994e191c45b809c48f8f313176d428722feeddd137a831b03643c5f3237c0b441bc31816aa5af42c0
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.4.3
|
data/.travis.yml
CHANGED
@@ -1,10 +1,16 @@
|
|
1
1
|
rvm:
|
2
|
-
- 1.9.2
|
3
2
|
- 1.9.3
|
4
|
-
-
|
3
|
+
- 2.2.9
|
4
|
+
- 2.4.3
|
5
5
|
|
6
6
|
gemfile:
|
7
|
-
- gemfiles/2.3.gemfile
|
8
|
-
- gemfiles/3.0.gemfile
|
9
|
-
- gemfiles/3.1.gemfile
|
10
7
|
- gemfiles/3.2.gemfile
|
8
|
+
- gemfiles/4.2.gemfile
|
9
|
+
- gemfiles/5.1.gemfile
|
10
|
+
|
11
|
+
matrix:
|
12
|
+
exclude:
|
13
|
+
- rvm: 1.9.3
|
14
|
+
gemfile: gemfiles/5.1.gemfile
|
15
|
+
- rvm: 2.4.3
|
16
|
+
gemfile: gemfiles/3.2.gemfile
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
# Change Log
|
2
|
+
|
3
|
+
## [v0.7.2](https://github.com/spikex/strongbox/tree/v0.7.2) (2015-03-01)
|
4
|
+
|
5
|
+
**Closed issues:**
|
6
|
+
|
7
|
+
- string contains null byte [\#44](https://github.com/spikex/strongbox/issues/44)
|
8
|
+
|
9
|
+
- Validation before encryption? [\#41](https://github.com/spikex/strongbox/issues/41)
|
10
|
+
|
11
|
+
- How to avoid storing private key by re-generating it [\#39](https://github.com/spikex/strongbox/issues/39)
|
12
|
+
|
13
|
+
- Format validations failing [\#35](https://github.com/spikex/strongbox/issues/35)
|
14
|
+
|
15
|
+
- Using strongbox with NSS [\#34](https://github.com/spikex/strongbox/issues/34)
|
16
|
+
|
17
|
+
- Travis-CI [\#32](https://github.com/spikex/strongbox/issues/32)
|
18
|
+
|
19
|
+
- Allow empty encryption field [\#25](https://github.com/spikex/strongbox/issues/25)
|
20
|
+
|
21
|
+
- "stack level too deep" With Database Migration [\#22](https://github.com/spikex/strongbox/issues/22)
|
22
|
+
|
23
|
+
- dynamic :public\_key and :private\_key [\#20](https://github.com/spikex/strongbox/issues/20)
|
24
|
+
|
25
|
+
- Cannot visit Strongbox::Lock - error [\#18](https://github.com/spikex/strongbox/issues/18)
|
26
|
+
|
27
|
+
- 0.4.7 breaks rails 2.x [\#16](https://github.com/spikex/strongbox/issues/16)
|
28
|
+
|
29
|
+
- Deprecation Warning under Rails 3.1.0.rc4 [\#15](https://github.com/spikex/strongbox/issues/15)
|
30
|
+
|
31
|
+
- RSAError: data greater than mod len [\#14](https://github.com/spikex/strongbox/issues/14)
|
32
|
+
|
33
|
+
- to\_xml or to\_json support [\#11](https://github.com/spikex/strongbox/issues/11)
|
34
|
+
|
35
|
+
- No gemspec? [\#10](https://github.com/spikex/strongbox/issues/10)
|
36
|
+
|
37
|
+
**Merged pull requests:**
|
38
|
+
|
39
|
+
- Make validations well-behaved with :deferred\_encryption [\#45](https://github.com/spikex/strongbox/pull/45) ([jakub-](https://github.com/jakub-))
|
40
|
+
|
41
|
+
- Document deferred\_encryption option [\#43](https://github.com/spikex/strongbox/pull/43) ([hernan124](https://github.com/hernan124))
|
42
|
+
|
43
|
+
- Include nil encryption explanation in readme [\#33](https://github.com/spikex/strongbox/pull/33) ([nelsonblaha](https://github.com/nelsonblaha))
|
44
|
+
|
45
|
+
- Actually assert in validation helper functions and minor clean up of tests [\#31](https://github.com/spikex/strongbox/pull/31) ([Nitrodist](https://github.com/Nitrodist))
|
46
|
+
|
47
|
+
- Lock down versions to some version of a workable gemspec and fix rdoc [\#30](https://github.com/spikex/strongbox/pull/30) ([Nitrodist](https://github.com/Nitrodist))
|
48
|
+
|
49
|
+
- Update Readme.textile [\#28](https://github.com/spikex/strongbox/pull/28) ([nelsonblaha](https://github.com/nelsonblaha))
|
50
|
+
|
51
|
+
- Handle Keys When They Are a Pathname [\#26](https://github.com/spikex/strongbox/pull/26) ([jherdman](https://github.com/jherdman))
|
52
|
+
|
53
|
+
- Encryption in before save hook. [\#24](https://github.com/spikex/strongbox/pull/24) ([hron](https://github.com/hron))
|
54
|
+
|
55
|
+
- Fix a typo. [\#21](https://github.com/spikex/strongbox/pull/21) ([jmazzi](https://github.com/jmazzi))
|
56
|
+
|
57
|
+
- encrypt\_with\_public\_key can now handle multiply columns [\#19](https://github.com/spikex/strongbox/pull/19) ([oleander](https://github.com/oleander))
|
58
|
+
|
59
|
+
- Feature: optionally allow disabling of Lock#ensure\_required\_columns [\#9](https://github.com/spikex/strongbox/pull/9) ([whittle](https://github.com/whittle))
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
data/README.md
CHANGED
@@ -212,7 +212,7 @@ only the public key.
|
|
212
212
|
```ruby
|
213
213
|
require 'openssl'
|
214
214
|
rsa_key = OpenSSL::PKey::RSA.new(2048)
|
215
|
-
cipher = OpenSSL::Cipher
|
215
|
+
cipher = OpenSSL::Cipher.new('des3')
|
216
216
|
private_key = rsa_key.to_pem(cipher,'password')
|
217
217
|
public_key = rsa_key.public_key.to_pem
|
218
218
|
key_pair = private_key + public_key
|
data/gemfiles/3.2.gemfile
CHANGED
data/lib/strongbox.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
require 'openssl'
|
2
2
|
require 'base64'
|
3
3
|
|
4
|
+
require 'strongbox/cipher'
|
4
5
|
require 'strongbox/lock'
|
5
6
|
|
6
7
|
module Strongbox
|
7
8
|
|
8
|
-
VERSION = "0.7.
|
9
|
+
VERSION = "0.7.3"
|
9
10
|
|
10
11
|
RSA_PKCS1_PADDING = OpenSSL::PKey::RSA::PKCS1_PADDING
|
11
12
|
RSA_SSLV23_PADDING = OpenSSL::PKey::RSA::SSLV23_PADDING
|
data/lib/strongbox/lock.rb
CHANGED
@@ -48,7 +48,7 @@ module Strongbox
|
|
48
48
|
# the private key if the file is a key pair
|
49
49
|
public_key = get_rsa_key(@public_key,"")
|
50
50
|
if @symmetric == :always
|
51
|
-
cipher =
|
51
|
+
cipher = Cipher.new(@symmetric_cipher)
|
52
52
|
cipher.encrypt
|
53
53
|
cipher.key = random_key = cipher.random_key
|
54
54
|
cipher.iv = random_iv = cipher.random_iv
|
@@ -100,7 +100,7 @@ module Strongbox
|
|
100
100
|
random_key = Base64.decode64(random_key)
|
101
101
|
random_iv = Base64.decode64(random_iv)
|
102
102
|
end
|
103
|
-
cipher =
|
103
|
+
cipher = Cipher.new(@symmetric_cipher)
|
104
104
|
cipher.decrypt
|
105
105
|
cipher.key = private_key.private_decrypt(random_key,@padding)
|
106
106
|
cipher.iv = private_key.private_decrypt(random_iv,@padding)
|
@@ -124,11 +124,11 @@ module Strongbox
|
|
124
124
|
|
125
125
|
# Needed for validations
|
126
126
|
def blank?
|
127
|
-
@raw_content.blank?
|
127
|
+
@raw_content.blank? && @instance[@name].blank?
|
128
128
|
end
|
129
129
|
|
130
130
|
def nil?
|
131
|
-
@raw_content.nil?
|
131
|
+
@raw_content.nil? && @instance[@name].nil?
|
132
132
|
end
|
133
133
|
|
134
134
|
def size
|
data/test/method_key_test.rb
CHANGED
@@ -39,7 +39,7 @@ class MethodKeyTest < Test::Unit::TestCase
|
|
39
39
|
setup do
|
40
40
|
@password = 'boost facile'
|
41
41
|
rsa_key = OpenSSL::PKey::RSA.new(2048)
|
42
|
-
cipher =
|
42
|
+
cipher = Strongbox::Cipher.new('des3')
|
43
43
|
rebuild_model :public_key => :public_key_attribute,
|
44
44
|
:private_key => :private_key_attribute
|
45
45
|
Dummy.class_eval do
|
@@ -59,8 +59,12 @@ class MissingAttribuesTest < Test::Unit::TestCase
|
|
59
59
|
end
|
60
60
|
|
61
61
|
should 'not raise' do
|
62
|
-
assert_nothing_raised do
|
62
|
+
assert_nothing_raised Strongbox::StrongboxError do
|
63
63
|
Dummy.class_eval do
|
64
|
+
def []=(_attr_name, _value)
|
65
|
+
# Stub to prevent ActiveModel::MissingAttributeError error
|
66
|
+
end
|
67
|
+
|
64
68
|
encrypt_with_public_key(:secret,
|
65
69
|
:key_pair => File.join(FIXTURES_DIR,'keypair.pem'),
|
66
70
|
:ensure_required_columns => false)
|
data/test/test_helper.rb
CHANGED
@@ -65,7 +65,7 @@ def generate_key_pair(password = nil,size = 2048)
|
|
65
65
|
rsa_key = OpenSSL::PKey::RSA.new(size)
|
66
66
|
# If no password is provided, don't encrypt the key
|
67
67
|
return rsa_key if password.blank?
|
68
|
-
cipher =
|
68
|
+
cipher = Strongbox::Cipher.new('des3')
|
69
69
|
key_pair = rsa_key.to_pem(cipher,password)
|
70
70
|
key_pair << rsa_key.public_key.to_pem
|
71
71
|
return key_pair
|
metadata
CHANGED
@@ -1,121 +1,124 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: strongbox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Spike Ilacqua
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: thoughtbot-shoulda
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 2.9.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 2.9.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: sqlite3
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 1.3.7
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 1.3.7
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 10.0.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 10.0.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rdoc
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 2.4.0
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 2.4.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: test-unit
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: 3.0.9
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 3.0.9
|
97
|
-
description:
|
98
|
-
|
99
|
-
|
100
|
-
|
97
|
+
description: |2
|
98
|
+
Strongbox provides Public Key Encryption for ActiveRecord. By using a
|
99
|
+
public key sensitive information can be encrypted and stored automatically.
|
100
|
+
Once stored a password is required to access the information. dependencies
|
101
|
+
are specified in standard Ruby syntax.
|
101
102
|
email: spike@stuff-things.net
|
102
103
|
executables: []
|
103
104
|
extensions: []
|
104
105
|
extra_rdoc_files: []
|
105
106
|
files:
|
106
|
-
- .gitignore
|
107
|
-
- .
|
107
|
+
- ".gitignore"
|
108
|
+
- ".ruby-version"
|
109
|
+
- ".travis.yml"
|
110
|
+
- CHANGELOG.md
|
108
111
|
- Gemfile
|
109
112
|
- LICENSE
|
110
113
|
- README.md
|
111
114
|
- Rakefile
|
112
115
|
- gemfiles/.gitignore
|
113
|
-
- gemfiles/2.3.gemfile
|
114
|
-
- gemfiles/3.0.gemfile
|
115
|
-
- gemfiles/3.1.gemfile
|
116
116
|
- gemfiles/3.2.gemfile
|
117
|
+
- gemfiles/4.2.gemfile
|
118
|
+
- gemfiles/5.1.gemfile
|
117
119
|
- init.rb
|
118
120
|
- lib/strongbox.rb
|
121
|
+
- lib/strongbox/cipher.rb
|
119
122
|
- lib/strongbox/lock.rb
|
120
123
|
- rails/init.rb
|
121
124
|
- strongbox.gemspec
|
@@ -138,17 +141,17 @@ require_paths:
|
|
138
141
|
- lib
|
139
142
|
required_ruby_version: !ruby/object:Gem::Requirement
|
140
143
|
requirements:
|
141
|
-
- -
|
144
|
+
- - ">="
|
142
145
|
- !ruby/object:Gem::Version
|
143
146
|
version: '0'
|
144
147
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
148
|
requirements:
|
146
|
-
- -
|
149
|
+
- - ">="
|
147
150
|
- !ruby/object:Gem::Version
|
148
151
|
version: '0'
|
149
152
|
requirements: []
|
150
153
|
rubyforge_project:
|
151
|
-
rubygems_version: 2.
|
154
|
+
rubygems_version: 2.6.11
|
152
155
|
signing_key:
|
153
156
|
specification_version: 4
|
154
157
|
summary: Secures ActiveRecord fields with public key encryption.
|
data/gemfiles/2.3.gemfile
DELETED
data/gemfiles/3.0.gemfile
DELETED