encryption 1.1.2 → 1.1.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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- encryption (1.1.0)
4
+ encryption (1.1.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -83,7 +83,7 @@ private_key.to_pem('passphrase')
83
83
 
84
84
  `Encryption::PublicKey` and `Encryption::PrivateKey`
85
85
  ----------------------------------------------------
86
- Both classes have the same syntax
86
+ Both classes have the same methods
87
87
 
88
88
  ```ruby
89
89
  # Import an existing key
@@ -92,13 +92,12 @@ Encryption::PublicKey.new(string[, password]) # From string
92
92
 
93
93
  # Encrypt / Decrypt data
94
94
  public_key = Encryption::PublicKey.new("existing key")
95
- public_key.encrypt("Hello!")
96
- public_key.encrypt("H3LL0¡")
95
+ public_key.encrypt("2001: A Space Odyssey")
96
+ public_key.decrypt("H3LL0¡")
97
97
 
98
98
  # Note that you can use both public and private keys to encrypt and decrypt data
99
99
  ```
100
100
 
101
-
102
101
  Helpers
103
102
  -------
104
103
  String helper
@@ -113,13 +112,19 @@ Helpers
113
112
  "h3LL0".decrypt!
114
113
 
115
114
  # With custom settings (and custom encryptor instance)
116
- "Hello".encrypt({ key: 'encryption key', iv: 'initialization vector', cipher: 'encryption algorithm' })
115
+ "Contact".encrypt({ key: 'encryption key', iv: 'initialization vector', cipher: 'encryption algorithm' })
116
+
117
+ # Or with a custom encryptor
118
+ encryptor = Encryption::Symmetric.new
119
+ encryptor.key = 'random string'
120
+ "Interstate 60".encrypt(encryptor: encryptor)
117
121
  ```
118
122
 
119
123
  License
120
124
  -------
121
- This gem is distributed under the MIT License.
125
+ This gem is distributed under The MIT License.
122
126
 
123
127
  Author
124
128
  ------
125
- Itay Grudev - ![Itay Grudev](http://safemail.justlikeed.net/e/a5307c0c2dd405f756cab9f4c76cd63a.png)
129
+ Itay Grudev
130
+   ![Itay Grudev](http://safemail.justlikeed.net/e/a5307c0c2dd405f756cab9f4c76cd63a.png)
data/encryption.gemspec CHANGED
@@ -2,7 +2,7 @@ require 'date'
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'encryption'
5
- s.version = '1.1.2'
5
+ s.version = '1.1.3'
6
6
  s.date = Date.today.to_s
7
7
  s.summary = 'A simple wrapper for the OpenSSL Cipher library'
8
8
  s.description = 'Encryption provides a simple interface for symmetric / asymmetric encryption with the OpenSSL Cipher library'
@@ -21,6 +21,7 @@ module Encryption
21
21
 
22
22
  def encryptor(options)
23
23
  return Encryption if options.empty?
24
+ return options[:encryptor] if ! options[:encryptor].nil?
24
25
 
25
26
  encrypt = Encryption::Symmetric.new
26
27
 
@@ -20,35 +20,26 @@ module Encryption
20
20
  end
21
21
 
22
22
  def encrypt(data)
23
- cipher_init
23
+ cipher_init(:cipher, :encrypt)
24
24
  @cipher.update(data) + @cipher.final
25
25
  end
26
26
 
27
27
  def decrypt(data)
28
- decipher_init
28
+ cipher_init(:decipher, :decrypt)
29
29
  @decipher.update(data) + @decipher.final
30
30
  end
31
31
 
32
32
  private
33
-
34
- def cipher_init
35
- if @cipher.nil?
36
- @cipher = OpenSSL::Cipher.new(@configuration.cipher)
37
- @cipher.encrypt
38
- end
39
33
 
40
- @cipher.key = @configuration.key
41
- @cipher.iv = @configuration.iv
42
- end
43
-
44
- def decipher_init
45
- if @decipher.nil?
46
- @decipher = OpenSSL::Cipher.new(@configuration.cipher)
47
- @decipher.decrypt
34
+ def cipher_init(name, mode)
35
+ obj = instance_variable_get((name = '@' + name.to_s))
36
+ if obj.nil?
37
+ obj = instance_variable_set(name, OpenSSL::Cipher.new(@configuration.cipher))
38
+ obj.send mode
48
39
  end
49
-
50
- @decipher.key = @configuration.key
51
- @decipher.iv = @configuration.iv
40
+
41
+ obj.key = @configuration.key
42
+ obj.iv = @configuration.iv
52
43
  end
53
44
 
54
45
  end
@@ -40,4 +40,24 @@ describe String do
40
40
  end
41
41
  end
42
42
 
43
+ describe "with custom encryptor" do
44
+ before(:each) do
45
+ @string = String.random
46
+ encryptor = Encryption::Symmetric.new
47
+ encryptor.key = String.random
48
+ encryptor.iv = String.random
49
+ @options = {
50
+ encryptor: encryptor
51
+ }
52
+ end
53
+
54
+ it 'should generate encryption different then the original string' do
55
+ @string.encrypt(@options).should_not == @string
56
+ end
57
+
58
+ it 'should decrypt, encrypted values and match the original string' do
59
+ @string.encrypt(@options).decrypt(@options).should == @string
60
+ end
61
+ end
62
+
43
63
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: encryption
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Itay Grudev
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-03-30 00:00:00.000000000 Z
12
+ date: 2013-03-31 00:00:00.000000000 Z
12
13
  dependencies: []
13
14
  description: Encryption provides a simple interface for symmetric / asymmetric encryption
14
15
  with the OpenSSL Cipher library
@@ -53,25 +54,26 @@ files:
53
54
  homepage: https://github.com/Itehnological/encryption
54
55
  licenses:
55
56
  - MIT
56
- metadata: {}
57
57
  post_install_message:
58
58
  rdoc_options: []
59
59
  require_paths:
60
60
  - lib
61
61
  required_ruby_version: !ruby/object:Gem::Requirement
62
+ none: false
62
63
  requirements:
63
64
  - - ! '>='
64
65
  - !ruby/object:Gem::Version
65
66
  version: '0'
66
67
  required_rubygems_version: !ruby/object:Gem::Requirement
68
+ none: false
67
69
  requirements:
68
70
  - - ! '>='
69
71
  - !ruby/object:Gem::Version
70
72
  version: '0'
71
73
  requirements: []
72
74
  rubyforge_project:
73
- rubygems_version: 2.0.3
75
+ rubygems_version: 1.8.25
74
76
  signing_key:
75
- specification_version: 4
77
+ specification_version: 3
76
78
  summary: A simple wrapper for the OpenSSL Cipher library
77
79
  test_files: []
checksums.yaml DELETED
@@ -1,15 +0,0 @@
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=