easy_encryption 0.0.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ac2fbe9a8457a71f2955129f7340e3626e14671f
4
- data.tar.gz: 43ff4121b620f2c7aa0edc1d29ce1b5cdf7dd8f9
3
+ metadata.gz: 46800c74fe61e6860297f1b472052ce3e59d6674
4
+ data.tar.gz: b0f0b5ae1852a99303661812061d66b150c1a547
5
5
  SHA512:
6
- metadata.gz: d041642df1d41ac570a38a4b368c76bcb8687638f59d92f3831ac56a7d3e8bd1469ef3ef44ffe3a578850015e774807535a44d670c26b1591a50d8d39b1076d9
7
- data.tar.gz: 41c9111ed4f97a9476e55d0ba28b629a6ae583cff5706957b8d337059f477a827d81d8e78346d5f7b8ba8e03b2cc8bc3040c2a4ba666e1dc1451bdb0d8b9e554
6
+ metadata.gz: f1fb294c61bf6f67cf55e1681f81319d72859408167ce17fba76006fe87bc71f8c2477de23a4876a15e64c3176f56dc8c96ad6b69da521aa976e41dfe3b6a4ca
7
+ data.tar.gz: 7c294485ea9181fcfffbf927f691be30e43509b4e824197fb75587b6e8e1c85b2838516f2c145797a2dd6b5db07bddb4a85759c8d08dbd3a658ecb356a93cc30
data/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # EasyEncryption
2
2
 
3
- Easy Encryption provides a simple means for encrypting and decrypting strings. Uses the Gibberish gem (https://github.com/mdp/gibberish) under the hood to do the actual encryption work.
3
+ Easy Encryption provides a simple means for encrypting and decrypting strings. It utilizes the RbNaCl gem's simple box under the hood to do the actual encryption work (https://github.com/cryptosphere/rbnacl).
4
+
5
+ ## Important
6
+
7
+ libsodium is required for the EasyEncryption gem to function. To install libsodium please refer to https://github.com/jedisct1/libsodium.
4
8
 
5
9
  ## Installation
6
10
 
@@ -16,20 +20,18 @@ Or install it yourself as:
16
20
 
17
21
  $ gem install easy_encryption
18
22
 
19
- Finally, call setup on EasyEncryption passing your cipher key:
23
+ Finally, call setup on EasyEncryption with a password:
20
24
  ```ruby
21
- EasyEncryption.setup 'secret'
25
+ EasyEncryption.setup('secret')
22
26
  ```
23
27
 
24
- In a Rails app you will need to set the default cipher key inside of your app's ::Application.configure block:
28
+ In a Rails app you will need to set the default password inside of your app's ::Application.configure block:
25
29
  ```ruby
26
30
  config.after_initialize do
27
- EasyEncryption.setup 'secret'
31
+ EasyEncryption.setup('secret')
28
32
  end
29
33
  ```
30
34
 
31
- To enable the gem for your Rails tests, set the default cipher key inside of `test_helper.rb` as in the first example.
32
-
33
35
  ## Usage
34
36
 
35
37
  EasyEncryption provides two additional methods that can be called on any string.
@@ -43,27 +45,3 @@ encrypted_data = 'foo'.encrypt
43
45
  ```ruby
44
46
  decrypted_data = encrypted_data.decrypt
45
47
  ```
46
-
47
- For special cases where a different cipher key needs to be used, it can be passed directly:
48
- ```ruby
49
- encrypted_data = 'foo'.encrypt 'secret'
50
- decrypted_data = 'encrypted data'.decrypt 'secret'
51
- ```
52
-
53
- Alternatively:
54
- ```ruby
55
- string = 'foo'
56
- string.cipher_key = 'secret'
57
- encrypted_data = string.encrypt
58
-
59
- encrypted_data.cipher_key = 'secret'
60
- decrypted_data = encrypted_data.decrypt
61
- ```
62
-
63
- ## Contributing
64
-
65
- 1. Fork it
66
- 2. Create your feature branch (`git checkout -b my-new-feature`)
67
- 3. Commit your changes (`git commit -am 'Add some feature'`)
68
- 4. Push to the branch (`git push origin my-new-feature`)
69
- 5. Create new Pull Request
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Adam Ervans"]
10
10
  spec.email = ["aervans@gmail.com"]
11
11
  spec.description = %q{Check the github page for a detailed description}
12
- spec.summary = %q{Adds easy to use encrypt and decrypt methods to strings.}
13
- spec.homepage = "https://github.com/arthrex/easy-encryption"
12
+ spec.summary = %q{Adds easy to use encrypt and decrypt methods to string instances.}
13
+ spec.homepage = "https://github.com/aervans/easyencryption"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
@@ -19,8 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
23
- spec.add_development_dependency "rspec"
24
- spec.add_development_dependency "pry"
25
- spec.add_dependency "gibberish"
22
+ spec.add_development_dependency "rake", "~> 10.1.0"
23
+ spec.add_development_dependency "rspec", "~> 2.14.1"
24
+ spec.add_dependency "rbnacl", "~> 3.0.0"
26
25
  end
@@ -1,43 +1,16 @@
1
1
  require "easy_encryption/version"
2
2
  require "easy_encryption/instance_methods"
3
3
  require "easy_encryption/class_methods"
4
- require "gibberish"
4
+ require "rbnacl"
5
5
 
6
6
  module EasyEncryption
7
7
 
8
- # sets up EasyEncryption
9
- def self.setup(cipher_key)
10
- @cipher_key = cipher_key
8
+ # sets up EasyEncryption.
9
+ #
10
+ # EasyEncryption.setup('secret')
11
+ def self.setup(key)
11
12
  String.send :include, InstanceMethods
12
13
  String.send :extend, ClassMethods
13
- true
14
- end
15
-
16
- # getter for the default cipher key
17
- def self.cipher_key
18
- @cipher_key
19
- end
20
-
21
- # setter to change the default cipher key
22
- def self.cipher_key=(cipher_key)
23
- @cipher_key = cipher_key
24
- end
25
-
26
- # lambda for creating Gibberish ciphers
27
- CREATE_CIPHER = lambda do |cipher_key|
28
-
29
- if cipher_key == @last_cipher_key
30
- # no cipher has been created or cipher_key is the same
31
- @cipher = Gibberish::AES.new cipher_key
32
- else
33
- # cipher_key was changed
34
- @cipher = Gibberish::AES.new cipher_key
35
- end
36
-
37
- # remember the cipher key to determine if a new cipher
38
- # needs to be created on the next call
39
- @last_cipher_key = cipher_key
40
- # return the cipher
41
- @cipher
14
+ String.create_simple_box key
42
15
  end
43
16
  end
@@ -2,10 +2,13 @@ module EasyEncryption
2
2
 
3
3
  module ClassMethods
4
4
 
5
- # returns a Gibberish cipher
6
- def cipher
7
- # create/use a cipher in the context of the String singleton
8
- instance_exec EasyEncryption.cipher_key, &EasyEncryption::CREATE_CIPHER
5
+ attr_reader :simple_box
6
+
7
+ # creates a simple_box using the passed key
8
+ #
9
+ # created_simple_box('secret')
10
+ def create_simple_box(key)
11
+ @simple_box ||= RbNaCl::SimpleBox.from_secret_key(RbNaCl::Hash.sha256(key))
9
12
  end
10
13
  end
11
14
  end
@@ -2,35 +2,19 @@ module EasyEncryption
2
2
 
3
3
  module InstanceMethods
4
4
 
5
- # encrypts a string. ex: "string".encrypt
6
- def encrypt(cipher_key=nil)
7
- @cipher_key = cipher_key if cipher_key
8
- cipher.encrypt self
5
+ # encrypts a string
6
+ def encrypt
7
+ simple_box.encrypt self
9
8
  end
10
9
 
11
- # decrypts a string. ex: "string".decrypt
12
- def decrypt(cipher_key=nil)
13
- @cipher_key = cipher_key if cipher_key
14
- cipher.decrypt self
10
+ # decrypts a string
11
+ def decrypt
12
+ simple_box.decrypt self
15
13
  end
16
14
 
17
- # setter to change the cipher key on an instance of String
18
- def cipher_key=(cipher_key)
19
- @cipher_key = cipher_key
20
- end
21
-
22
- private
23
-
24
- # returns a Gibberish cipher
25
- def cipher
26
-
27
- if @cipher_key
28
- # create/use a cipher in the context of a String instance
29
- instance_exec @cipher_key, &EasyEncryption::CREATE_CIPHER
30
- else
31
- # use the singleton class's cipher
32
- self.class.cipher
33
- end
15
+ # references simple_box on the singleton class
16
+ def simple_box
17
+ self.class.simple_box
34
18
  end
35
19
  end
36
20
  end
@@ -1,3 +1,3 @@
1
1
  module EasyEncryption
2
- VERSION = "0.0.2"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -2,26 +2,14 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  describe EasyEncryption do
5
-
6
- before(:all) do
7
- EasyEncryption.setup 'default_password'
8
- end
9
5
 
10
- let(:default_password) { EasyEncryption.cipher_key }
6
+ let(:key) { 'test' }
11
7
 
12
8
  describe '.create_cipher' do
13
- after { remove_instance_variable :@cipher }
14
-
15
- it 'should create a cipher in the context of the caller' do
16
- instance_exec default_password, &EasyEncryption::CREATE_CIPHER
17
- @cipher.should be_an_instance_of(Gibberish::AES)
18
- end
19
- end
20
-
21
- describe '.cipher_key=' do
22
9
 
23
- it 'should set the cipher key' do
24
- expect(EasyEncryption.cipher_key=('password')).to eql('password')
10
+ it 'should create a simple box on String' do
11
+ EasyEncryption.setup key
12
+ String.simple_box.should be_an_instance_of(RbNaCl::SimpleBox)
25
13
  end
26
14
  end
27
15
  end
data/spec/spec_helper.rb CHANGED
@@ -1,2 +1 @@
1
1
  require 'easy_encryption'
2
- require 'pry'
data/spec/string_spec.rb CHANGED
@@ -4,70 +4,31 @@ require 'spec_helper'
4
4
  describe String do
5
5
 
6
6
  before(:all) do
7
- EasyEncryption.setup 'default_password'
7
+ EasyEncryption.setup 'test'
8
8
  end
9
9
 
10
- let(:default_password) { EasyEncryption.cipher_key }
11
- let(:password) { 'password' }
12
10
  let(:text) { 'foo' }
13
- let(:console_text) { `echo "foo"` }
11
+ let(:encrypted_text) {
12
+ simple_box = RbNaCl::SimpleBox.from_secret_key(RbNaCl::Hash.sha256('test'))
13
+ simple_box.encrypt text
14
+ }
14
15
 
15
16
  describe '#encrypt' do
16
17
 
17
- context 'with cipher key set on String' do
18
+ context 'with a string instance' do
18
19
 
19
- it 'encrypts a string' do
20
- encrypted = text.encrypt
21
- decrypted = `echo "#{encrypted}" | openssl enc -d -aes-256-cbc -a -k "#{default_password}"`
22
- decrypted.should eql(text)
23
- end
24
- end
25
-
26
- context 'with cipher key set on a String instance' do
27
-
28
- it 'encrypts a string' do
29
- text.cipher_key = password
30
- encrypted = text.encrypt
31
- decrypted = `echo "#{encrypted}" | openssl enc -d -aes-256-cbc -a -k "#{password}"`
32
- decrypted.should eql(text)
33
- end
34
- end
35
-
36
- context 'with cipher key passed to a String instance' do
37
-
38
- it 'encrypts a string' do
39
- encrypted = text.encrypt password
40
- decrypted = `echo "#{encrypted}" | openssl enc -d -aes-256-cbc -a -k "#{password}"`
41
- decrypted.should eql(text)
20
+ it 'encrypts a string instance' do
21
+ text.encrypt.encoding.should eql(Encoding::BINARY)
42
22
  end
43
23
  end
44
24
  end
45
25
 
46
26
  describe '#decrypt' do
47
27
 
48
- context 'with cipher key set on String' do
49
-
50
- it 'decrypts a string' do
51
- encrypted = `echo "foo" | openssl enc -aes-256-cbc -a -k "#{default_password}"`
52
- decrypted = encrypted.decrypt.chomp
53
- decrypted.should eql('foo')
54
- end
55
- end
56
-
57
- context 'with cipher key set on a String instance' do
58
-
59
- it 'decrypts a string' do
60
- encrypted = `echo "foo" | openssl enc -aes-256-cbc -a -k "#{password}"`
61
- encrypted.cipher_key = password
62
- encrypted.decrypt.should eql(console_text)
63
- end
64
- end
65
-
66
- context 'with cipher key passed to a String instance' do
28
+ context 'with a string instance' do
67
29
 
68
- it 'decrypts a string' do
69
- encrypted = `echo "foo" | openssl enc -aes-256-cbc -a -k "#{password}"`
70
- encrypted.decrypt(password).should eql(console_text)
30
+ it 'decrypts a string instance' do
31
+ encrypted_text.decrypt.should eql(text)
71
32
  end
72
33
  end
73
34
  end
metadata CHANGED
@@ -1,85 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_encryption
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Ervans
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-01 00:00:00.000000000 Z
11
+ date: 2014-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :development
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: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 10.1.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
- version: '0'
40
+ version: 10.1.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 2.14.1
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
- version: '0'
54
+ version: 2.14.1
55
55
  - !ruby/object:Gem::Dependency
56
- name: pry
56
+ name: rbnacl
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '>='
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: gibberish
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '>='
74
- - !ruby/object:Gem::Version
75
- version: '0'
61
+ version: 3.0.0
76
62
  type: :runtime
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - '>='
66
+ - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '0'
68
+ version: 3.0.0
83
69
  description: Check the github page for a detailed description
84
70
  email:
85
71
  - aervans@gmail.com
@@ -87,8 +73,8 @@ executables: []
87
73
  extensions: []
88
74
  extra_rdoc_files: []
89
75
  files:
90
- - .gitignore
91
- - .rspec
76
+ - ".gitignore"
77
+ - ".rspec"
92
78
  - Gemfile
93
79
  - LICENSE.txt
94
80
  - README.md
@@ -101,7 +87,7 @@ files:
101
87
  - spec/easy_encryption_spec.rb
102
88
  - spec/spec_helper.rb
103
89
  - spec/string_spec.rb
104
- homepage: https://github.com/arthrex/easy-encryption
90
+ homepage: https://github.com/aervans/easyencryption
105
91
  licenses:
106
92
  - MIT
107
93
  metadata: {}
@@ -111,20 +97,20 @@ require_paths:
111
97
  - lib
112
98
  required_ruby_version: !ruby/object:Gem::Requirement
113
99
  requirements:
114
- - - '>='
100
+ - - ">="
115
101
  - !ruby/object:Gem::Version
116
102
  version: '0'
117
103
  required_rubygems_version: !ruby/object:Gem::Requirement
118
104
  requirements:
119
- - - '>='
105
+ - - ">="
120
106
  - !ruby/object:Gem::Version
121
107
  version: '0'
122
108
  requirements: []
123
109
  rubyforge_project:
124
- rubygems_version: 2.0.2
110
+ rubygems_version: 2.2.0
125
111
  signing_key:
126
112
  specification_version: 4
127
- summary: Adds easy to use encrypt and decrypt methods to strings.
113
+ summary: Adds easy to use encrypt and decrypt methods to string instances.
128
114
  test_files:
129
115
  - spec/easy_encryption_spec.rb
130
116
  - spec/spec_helper.rb