encryption 1.1.0 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.travis.yml +1 -3
- data/README.md +28 -15
- data/encryption.gemspec +2 -2
- data/lib/encryption.rb +2 -0
- data/lib/helpers.rb +1 -0
- data/lib/helpers/string.rb +35 -0
- data/spec/encryption/symmetric_global_spec.rb +2 -2
- data/spec/encryption/symmetric_instance_spec.rb +3 -2
- data/spec/helpers/string_spec.rb +43 -0
- metadata +7 -7
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YTBkNmY0MjNlNGVlZjI2NzNlOGM3NDBjM2UxYzlmYTJiMDI0MTcxYQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MGY0ZjExNjA3NGI2Yzk1ZGQ0NzM5YmQyZDM4ZmUxMDNjMmQwODYzMA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
OWEyYWE2NzU0ZWQ2YmZkZmJhMmY4Yjc3ZGFlZWZiZTlhYTAxNDcwODQ5OTMx
|
10
|
+
Mjg1YjE5Njg2MmE2NWE0NmQ4NjExYWQ0MWQ0ZTY1ZTQ3NTM0ODZkNTZjOWVm
|
11
|
+
MmFmYzJhMGExOGYyMWJhMWFlODAzYzE5OWQ0ZDA3ZDExMDZkMjc=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZDY1MjhkMTk1YWQ4YzQ1OTY3OTI5YTdiZmU5NTRmODE0MGVjZDQ3YWMyZTk5
|
14
|
+
ZjdhZjAxYzFhYThmN2I4Njc4ODliN2U3YzRmMGM5YTljYzk4Yzk3MDUyZDBi
|
15
|
+
NDY2ZGQ4ZmZmYzIwOGM2MGQ1MzBkOWNiNGNmMmY1N2E3YTEzOTk=
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -43,13 +43,13 @@ encryptor.decrypt(encrypted_str) == data # true
|
|
43
43
|
|
44
44
|
Configuration
|
45
45
|
-------------
|
46
|
-
For symmetric encryption / decryption you need to set an encryption key. The rest of the settings are optional. Here is a list of all of them:
|
47
|
-
`Encryption.key` - Your encryption key
|
48
|
-
`Encryption.iv # Optional` - Encryption initialization vector. Defaults to the charecter `"\0"`
|
49
|
-
`Encryption.cipher # Optional` - Your encryption algorithm. Defaults to `aes-256-cbc`
|
46
|
+
For symmetric encryption / decryption you need to set an encryption key. The rest of the settings are optional. Here is a list of all of them:
|
47
|
+
`Encryption.key` - Your encryption key
|
48
|
+
`Encryption.iv # Optional` - Encryption initialization vector. Defaults to the charecter `"\0"` _(Optional)_
|
49
|
+
`Encryption.cipher # Optional` - Your encryption algorithm. Defaults to `aes-256-cbc` _(Optional)_
|
50
50
|
Run `openssl list-cipher-commands` in the terminal to list all installed ciphers or call `OpenSSL::Cipher.ciphers` in _Ruby_, which will return an array, containing all available algorithms.
|
51
51
|
|
52
|
-
You can optionally configure both a global instance and a custom instance with a
|
52
|
+
You can optionally configure both a global instance and a custom instance with a _block_:
|
53
53
|
```ruby
|
54
54
|
Encryption.config do |config|
|
55
55
|
config.key = "don't look at me!"
|
@@ -98,15 +98,28 @@ public_key.encrypt("H3LL0¡")
|
|
98
98
|
# Note that you can use both public and private keys to encrypt and decrypt data
|
99
99
|
```
|
100
100
|
|
101
|
-
<!---
|
102
|
-
Helpers
|
103
|
-
-------
|
104
|
-
String helpers
|
105
|
-
--------------
|
106
101
|
|
107
|
-
|
108
|
-
|
102
|
+
Helpers
|
103
|
+
-------
|
104
|
+
String helper
|
105
|
+
-------------
|
106
|
+
The gem adds the `encrypt` and `decrypt` methods to the `String` class.
|
107
|
+
You can use them as follows:
|
108
|
+
```ruby
|
109
|
+
# With the global Encryption instance
|
110
|
+
"Hello".encrypt
|
111
|
+
"Hello".encrypt!
|
112
|
+
"h3LL0".decrypt
|
113
|
+
"h3LL0".decrypt!
|
114
|
+
|
115
|
+
# With custom settings (and custom encryptor instance)
|
116
|
+
"Hello".encrypt({ key: 'encryption key', iv: 'initialization vector', cipher: 'encryption algorithm' })
|
117
|
+
```
|
118
|
+
|
119
|
+
License
|
120
|
+
-------
|
121
|
+
This gem is distributed under the MIT License.
|
109
122
|
|
110
|
-
|
111
|
-
|
112
|
-
|
123
|
+
Author
|
124
|
+
------
|
125
|
+
Itay Grudev - ![Itay Grudev](http://safemail.justlikeed.net/e/a5307c0c2dd405f756cab9f4c76cd63a.png)
|
data/encryption.gemspec
CHANGED
@@ -2,10 +2,10 @@ require 'date'
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'encryption'
|
5
|
-
s.version = '1.1.
|
5
|
+
s.version = '1.1.2'
|
6
6
|
s.date = Date.today.to_s
|
7
7
|
s.summary = 'A simple wrapper for the OpenSSL Cipher library'
|
8
|
-
s.description = 'Encryption provides a simple interface for symmetric / asymmetric encryption
|
8
|
+
s.description = 'Encryption provides a simple interface for symmetric / asymmetric encryption with the OpenSSL Cipher library'
|
9
9
|
s.authors = ['Itay Grudev']
|
10
10
|
s.email = ['itay.grudev@gmail.com']
|
11
11
|
s.homepage = 'https://github.com/Itehnological/encryption'
|
data/lib/encryption.rb
CHANGED
data/lib/helpers.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
require_relative 'helpers/string.rb'
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Encryption
|
2
|
+
module String
|
3
|
+
|
4
|
+
def encrypt(options = {})
|
5
|
+
encryptor(options).encrypt self
|
6
|
+
end
|
7
|
+
|
8
|
+
def decrypt(options = {})
|
9
|
+
encryptor(options).decrypt self
|
10
|
+
end
|
11
|
+
|
12
|
+
def encrypt!(options = {})
|
13
|
+
replace encrypt(options)
|
14
|
+
end
|
15
|
+
|
16
|
+
def decrypt!(options = {})
|
17
|
+
replace decrypt(options)
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def encryptor(options)
|
23
|
+
return Encryption if options.empty?
|
24
|
+
|
25
|
+
encrypt = Encryption::Symmetric.new
|
26
|
+
|
27
|
+
options.each do |key, value|
|
28
|
+
encrypt.send(key.to_s + '=', value)
|
29
|
+
end
|
30
|
+
|
31
|
+
encrypt
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
@@ -19,8 +19,8 @@ describe Encryption do
|
|
19
19
|
Encryption.cipher.should == cipher
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
next if
|
22
|
+
%x(openssl list-cipher-commands).split.each do |cipher|
|
23
|
+
next if ['base64', 'zlib'].include? cipher
|
24
24
|
|
25
25
|
describe 'with cipher ' + cipher do
|
26
26
|
before(:each) do
|
@@ -21,8 +21,9 @@ describe Encryption::Symmetric do
|
|
21
21
|
encryptor.cipher.should == cipher
|
22
22
|
end
|
23
23
|
|
24
|
-
|
25
|
-
next if
|
24
|
+
%x(openssl list-cipher-commands).split.each do |cipher|
|
25
|
+
next if ['base64', 'zlib'].include? cipher
|
26
|
+
|
26
27
|
describe 'with cipher ' + cipher do
|
27
28
|
|
28
29
|
before(:each) do
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe String do
|
4
|
+
|
5
|
+
it { should respond_to :encrypt }
|
6
|
+
it { should respond_to :decrypt }
|
7
|
+
it { should respond_to :encrypt! }
|
8
|
+
it { should respond_to :decrypt! }
|
9
|
+
|
10
|
+
describe "with global Encryption instance" do
|
11
|
+
before(:each) do
|
12
|
+
@string = String.random
|
13
|
+
Encryption.key = String.random
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should generate encryption different then the original string' do
|
17
|
+
@string.encrypt.should_not == @string
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should decrypt, encrypted values and match the original string' do
|
21
|
+
@string.encrypt.decrypt.should == @string
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "with custom options" do
|
26
|
+
before(:each) do
|
27
|
+
@string = String.random
|
28
|
+
@options = {
|
29
|
+
:key => String.random,
|
30
|
+
:iv => String.random
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should generate encryption different then the original string' do
|
35
|
+
@string.encrypt(@options).should_not == @string
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should decrypt, encrypted values and match the original string' do
|
39
|
+
@string.encrypt(@options).decrypt(@options).should == @string
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: encryption
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Itay Grudev
|
@@ -12,7 +11,7 @@ cert_chain: []
|
|
12
11
|
date: 2013-03-30 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description: Encryption provides a simple interface for symmetric / asymmetric encryption
|
15
|
-
|
14
|
+
with the OpenSSL Cipher library
|
16
15
|
email:
|
17
16
|
- itay.grudev@gmail.com
|
18
17
|
executables: []
|
@@ -32,6 +31,7 @@ files:
|
|
32
31
|
- lib/configuration/symmetric.rb
|
33
32
|
- lib/encryption.rb
|
34
33
|
- lib/helpers.rb
|
34
|
+
- lib/helpers/string.rb
|
35
35
|
- lib/modules.rb
|
36
36
|
- lib/modules/asymmetric.rb
|
37
37
|
- lib/modules/asymmetric/keypair.rb
|
@@ -48,30 +48,30 @@ files:
|
|
48
48
|
- spec/encryption/asymmetric/public_key_spec.rb
|
49
49
|
- spec/encryption/symmetric_global_spec.rb
|
50
50
|
- spec/encryption/symmetric_instance_spec.rb
|
51
|
+
- spec/helpers/string_spec.rb
|
51
52
|
- spec/spec_helper.rb
|
52
53
|
homepage: https://github.com/Itehnological/encryption
|
53
54
|
licenses:
|
54
55
|
- MIT
|
56
|
+
metadata: {}
|
55
57
|
post_install_message:
|
56
58
|
rdoc_options: []
|
57
59
|
require_paths:
|
58
60
|
- lib
|
59
61
|
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
-
none: false
|
61
62
|
requirements:
|
62
63
|
- - ! '>='
|
63
64
|
- !ruby/object:Gem::Version
|
64
65
|
version: '0'
|
65
66
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
67
|
requirements:
|
68
68
|
- - ! '>='
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: '0'
|
71
71
|
requirements: []
|
72
72
|
rubyforge_project:
|
73
|
-
rubygems_version:
|
73
|
+
rubygems_version: 2.0.3
|
74
74
|
signing_key:
|
75
|
-
specification_version:
|
75
|
+
specification_version: 4
|
76
76
|
summary: A simple wrapper for the OpenSSL Cipher library
|
77
77
|
test_files: []
|