wikk_aes_256 0.1.6 → 0.1.7

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.
Files changed (6) hide show
  1. checksums.yaml +5 -5
  2. data/History.txt +26 -0
  3. data/README.md +4 -4
  4. data/Rakefile +13 -15
  5. data/lib/wikk_aes_256.rb +127 -103
  6. metadata +9 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d15a628c0fd990371636a7d2e066768dc71a3fdd
4
- data.tar.gz: 3becb7b50ffe9eb2c1aa1d29a424e67bb44de4d9
2
+ SHA256:
3
+ metadata.gz: 8f641efe6dea090212b60597da2f3dbe5b3ac805fccc7183eaa7dca9f4156914
4
+ data.tar.gz: 481ca75fda9a56e0929315b71e84e958d8430dd9d007a3cba78c8c180aab9eb3
5
5
  SHA512:
6
- metadata.gz: e5c3b086b36a0124de016622518ad9d15ae20132bc27e7b9a04890d9d41350ff71618a92feae34fef8a956e53f6a0c8f98768237306c9da4473015e9b0071366
7
- data.tar.gz: 28cc7ba2ec932b8a2cbcab44fe00a8048a87bfc20202d8dd2b4218dcd89165f2730ed1af4eddd8266b64525b7db3b5ebf38c77c63b912be974ce4690c2a37210
6
+ metadata.gz: 677eb9a8e8e2d251f49cf31a15105993cc57a012b5fc2b50b2d16f94f862f839d3747623a050bda5f687c432abaf7c7dd789ce82a50ce8ab340abb11b76bec63
7
+ data.tar.gz: d97f2d804f79b700cc42957720291b43a040bdf9d9044c18455b1a1e4f0bab29ae9376ade09f4a2b6a830395d077884699acf9cd57bfd2e21b01a7253304313b
data/History.txt CHANGED
@@ -1,3 +1,29 @@
1
+ robertburrowes Sun Jun 5 18:18:15 2022 +1200
2
+ left out require stringio
3
+ robertburrowes Sun Oct 25 22:11:06 2020 +1300
4
+ Tidy up yard doc comments
5
+ robertburrowes Sun Oct 25 17:45:35 2020 +1300
6
+ Chdir to cd as Mac doesn't look to have chdir in sh
7
+ robertburrowes Sun Oct 25 13:51:16 2020 +1300
8
+ New hoe layout
9
+ robertburrowes Sun Oct 25 13:50:46 2020 +1300
10
+ formatting
11
+ robertburrowes Sun Oct 25 13:50:30 2020 +1300
12
+ now including this in repo
13
+ robertburrowes Sun Oct 25 13:50:02 2020 +1300
14
+ Move dev shell scripts into sbin
15
+ robertburrowes Tue Apr 14 21:21:06 2020 +1200
16
+ moved test data to its own dir
17
+ robertburrowes Tue Apr 14 14:32:08 2020 +1200
18
+ mv test data to test/data
19
+ robertburrowes Mon Apr 13 22:55:45 2020 +1200
20
+ Add __dir__ path to access testfile
21
+ robertburrowes Tue Apr 10 11:53:52 2018 +1200
22
+ Inc Version
23
+ robertburrowes Tue Apr 10 11:53:43 2018 +1200
24
+ Inc version
25
+ robertburrowes Tue Apr 10 11:53:33 2018 +1200
26
+ Inc version
1
27
  robertburrowes Tue Apr 10 11:50:22 2018 +1200
2
28
  OpenSSL::Cipher::Cipher.new deprecated in favour of OpenSSL::Cipher.new
3
29
  robertburrowes Fri Jun 24 19:56:31 2016 +1200
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
- # wikk_aes
1
+ # wikk_aes_256
2
2
 
3
- * http://wikarekare.github.com/wikk_aes/
4
- * Source https://github.com/wikarekare/wikk_aes
5
- * Gem https://rubygems.org/gems/wikk_aes
3
+ * Docs :: https://wikarekare.github.io/wikk_aes_256/
4
+ * Source :: https://github.com/wikarekare/wikk_aes_256
5
+ * Gem :: https://rubygems.org/gems/wikk_aes_256
6
6
 
7
7
  ## DESCRIPTION:
8
8
 
data/Rakefile CHANGED
@@ -1,27 +1,25 @@
1
1
  # -*- ruby -*-
2
-
3
2
  require 'rubygems'
4
3
  require 'hoe'
5
4
  Hoe.plugin :yard
6
5
 
7
- Hoe.spec 'wikk_aes_256' do
8
- self.readme_file = "README.md"
9
- self.developer( "Rob Burrowes","r.burrowes@auckland.ac.nz")
6
+ Hoe.spec 'wikk_aes_256' do
7
+ self.readme_file = 'README.md'
8
+ self.developer( 'Rob Burrowes', 'r.burrowes@auckland.ac.nz')
10
9
  remote_rdoc_dir = '' # Release to root
11
-
10
+
12
11
  self.yard_title = 'wikk_aes_256'
13
- self.yard_options = ['--markup', 'markdown', '--protected']
12
+ self.yard_options = [ '--markup', 'markdown', '--protected' ]
14
13
  end
15
14
 
15
+ # Validate manfest.txt
16
+ # rake check_manifest
16
17
 
17
- #Validate manfest.txt
18
- #rake check_manifest
19
-
20
- #Local checking. Creates pkg/
21
- #rake gem
18
+ # Local checking. Creates pkg/
19
+ # rake gem
22
20
 
23
- #create doc/
24
- #rake docs
21
+ # create doc/
22
+ # rake docs
25
23
 
26
- #Copy up to rubygem.org
27
- #rake release VERSION=1.0.1
24
+ # Copy up to rubygem.org
25
+ # rake release VERSION=1.0.1
data/lib/wikk_aes_256.rb CHANGED
@@ -1,179 +1,203 @@
1
- module WIKK
2
- require "openssl"
3
- require 'digest/sha2'
4
- require 'base64'
1
+ require 'openssl'
2
+ require 'digest/sha2'
3
+ require 'base64'
4
+ require 'stringio'
5
5
 
6
- #Provides AES 256 Encryption, as well as generation of keys and initial vectors, which could be used in other places.
6
+ # Stay in our own namespace
7
+ module WIKK
8
+ # Provides AES 256 Encryption, as well as generation of keys and initial vectors, which could be used in other places.
9
+ #
7
10
  # @attr_reader [String] plain_text the decrypted text
8
11
  # @attr_reader [String] cipher_text the encrypted text
9
12
  class AES_256
10
- VERSION = "0.1.6"
11
- AES_256_CBC = "AES-256-CBC"
12
-
13
+ VERSION = '0.1.7'
14
+ AES_256_CBC = 'AES-256-CBC'
15
+
13
16
  attr_reader :plain_text, :cipher_text
14
-
15
- #Initialize
16
- # @param key_string [String] optional base64 key to be used in encryption or decryption.
17
+
18
+ # Initialize
19
+ #
20
+ # @param key_string [String] optional base64 key to be used in encryption or decryption.
17
21
  # if nil, then key and iv are generated automatically. Recover the key with key_to_s(), or key_iv_to_s()
18
- # @param iv_string [String ] optional base64 iv (initial vector) to be used in the encryption or decryption
22
+ # @param iv_string [String ] optional base64 iv (initial vector) to be used in the encryption or decryption
19
23
  # Overwritten by auto generated iv, if key_string is nil. Recover with iv_to_str() or key_iv_to_s().
20
24
  def initialize(key_string = nil, iv_string = nil)
21
- if key_string == nil
25
+ if key_string.nil?
22
26
  gen_key
23
27
  else
24
28
  str_to_key(key_string)
25
29
  end
26
30
 
27
- if iv_string == nil
31
+ if iv_string.nil?
28
32
  gen_iv
29
33
  else
30
34
  str_to_iv(iv_string)
31
35
  end
32
36
  end
33
-
34
- #Generates a new key using Digest SHA256 in @key.
35
- # @return [String] Binary string, @key
36
- def gen_key
37
+
38
+ # Generates a new key using Digest SHA256 in @key.
39
+ #
40
+ # @return [String] Binary string, @key
41
+ def gen_key
37
42
  digest = Digest::SHA256.new
38
- digest.update("symetric key")
43
+ digest.update('symetric key')
39
44
  return (@key = digest.digest)
40
45
  end
41
-
42
- # @return [String] base64 version of @key
46
+
47
+ # Convert key to a base64 string
48
+ #
49
+ # @return [String] base64 version of @key
43
50
  def key_to_s
44
- return [@key].pack('m').chomp
51
+ return [ @key ].pack('m').chomp
45
52
  end
46
53
 
47
- # @param [String] turns base64 version of key into AES_256_CBC Symetric Key.
54
+ # Convert a base64 string into a key
55
+ #
56
+ # @param [String] converts base64 version of key into AES_256_CBC Symetric Key.
57
+ # @return [String] Binary string, @key
48
58
  def str_to_key(base64_keystring)
49
- return( @key = base64_keystring.unpack('m')[0] )
59
+ return( @key = base64_keystring.unpack1('m') )
50
60
  end
51
61
 
52
- #Generate random AES_256_CBC initialization vector.
53
- # @return [String] Binary initialization vector @iv
62
+ # Generate random AES_256_CBC initialization vector.
63
+ #
64
+ # @return [String] Binary initialization vector @iv
54
65
  def gen_iv
55
66
  return (@iv = OpenSSL::Cipher.new(AES_256_CBC).random_iv)
56
- end
67
+ end
57
68
 
58
- # @return [String] return Base64 version of initialization vector @iv
69
+ # Convert initialization vector to base64 string
70
+ #
71
+ # @return [String] return Base64 version of initialization vector @iv
59
72
  def iv_to_s
60
- return([@iv].pack('m')).chomp
73
+ return [ @iv ].pack('m').chomp
61
74
  end
62
-
63
- # @param [String] turns base64 version of iv into AES_256_CBC initialization vector.
64
- # @return [Array] AES_256_CBC initialization vector @iv.
75
+
76
+ # Convert base64 string into an initialization vector
77
+ #
78
+ # @param [String] turns base64 version of iv into AES_256_CBC initialization vector.
79
+ # @return [Array] AES_256_CBC initialization vector @iv.
65
80
  def str_to_iv(base64_iv_string)
66
- return (@iv = base64_iv_string.unpack('m')[0])
81
+ return (@iv = base64_iv_string.unpack1('m'))
67
82
  end
68
83
 
69
- # @return [String] base64 version of @key
70
- # @return [String] return Base64 version of initialization vector @iv
84
+ # Convert key and the initialization vector into base64 strings
85
+ #
86
+ # @return [String,String] base64 version of @key;
87
+ # Base64 version of initialization vector @iv
71
88
  def key_iv_to_s
72
89
  return key_to_s, iv_to_s
73
90
  end
74
-
75
- #Encrypts source using AES 256 CBC, using @key and @iv
76
- # @param unencrypted_source [String|File]
77
- # @return [String] Binary string representing encrypted source
91
+
92
+ # Encrypts source using AES 256 CBC, using @key and @iv
93
+ #
94
+ # @param unencrypted_source [String|File]
95
+ # @return [String] Binary string representing encrypted source
78
96
  def encrypt(unencrypted_source)
79
- unencrypted_source = StringIO.new(unencrypted_source) if(unencrypted_source.class == String)
97
+ unencrypted_source = StringIO.new(unencrypted_source) if unencrypted_source.instance_of?(String)
80
98
  aes = OpenSSL::Cipher.new(AES_256_CBC)
81
99
  aes.encrypt
82
100
  aes.key = @key
83
101
  aes.iv = @iv
84
- @cipher_text = ""
102
+ @cipher_text = ''
85
103
  while (s = unencrypted_source.read(4096)) != nil do @cipher_text << aes.update(s); end
86
104
  @cipher_text << aes.final
87
105
  end
88
-
89
- #Converts encrypted source String, @cipher_text, into Base64 String
90
- # @param unencrypted_source [String|File] If present, then this source is encrypted, otherwise assumes already encrypted.
91
- # @return [String] Base64 string representing encrypted source
106
+
107
+ # Converts encrypted source String, @cipher_text, into Base64 String
108
+ #
109
+ # @param unencrypted_source [String|File] If present, then this source is encrypted, otherwise assumes already encrypted.
110
+ # @return [String] Base64 string representing encrypted source
92
111
  def cipher_to_s(unencrypted_source = nil)
93
- encrypt(unencrypted_source) if(unencrypted_source != nil)
94
- return [@cipher_text].pack('m').chomp
112
+ encrypt(unencrypted_source) if unencrypted_source != nil
113
+ return [ @cipher_text ].pack('m').chomp
95
114
  end
96
115
 
97
- #Decrypts source using AES 256 CBC, using @key and @iv
98
- # @param encrypted_source [String|File]
99
- # @param base64_source [Boolean] if true, then source is assumed to be base64 encoded.
100
- # @return [String] String representing the original unencypted source
116
+ # Decrypts source using AES 256 CBC, using @key and @iv
117
+ #
118
+ # @param encrypted_source [String|File]
119
+ # @param base64_source [Boolean] if true, then source is assumed to be base64 encoded.
120
+ # @return [String] String representing the original unencypted source
101
121
  def decrypt(encrypted_source, base64_source = false)
102
- encrypted_source = StringIO.new(encrypted_source) if(encrypted_source.class == String)
103
- read_count = base64_source ? 5464:4096
122
+ encrypted_source = StringIO.new(encrypted_source) if encrypted_source.instance_of?(String)
123
+ read_count = base64_source ? 5464 : 4096
104
124
  decode_cipher = OpenSSL::Cipher.new(AES_256_CBC)
105
125
  decode_cipher.decrypt
106
126
  decode_cipher.key = @key
107
127
  decode_cipher.iv = @iv
108
- @plain_text = ""
109
- while (et = encrypted_source.read(read_count)) != nil do
110
- @plain_text << (base64_source ? decode_cipher.update(et.unpack('m')[0]) : decode_cipher.update(et))
128
+ @plain_text = ''
129
+ while (et = encrypted_source.read(read_count)) != nil
130
+ @plain_text << (base64_source ? decode_cipher.update(et.unpack1('m')) : decode_cipher.update(et))
111
131
  end
112
132
  @plain_text << decode_cipher.final
113
133
  end
114
-
115
- #Generates a new key using Digest SHA256 in @key.
116
- # @return [String] Base64 encoded string, @key
117
- def self.gen_key_to_s
118
- digest = Digest::SHA256.new
119
- digest.update("symetric key")
120
- return ([digest.digest].pack('m')).chomp
121
- end
122
-
123
- #Generate random AES_256_CBC initialization vector.
124
- # @return [String] Base64 encoded initialization vector @iv
125
- def self.gen_iv_to_s
126
- return ([OpenSSL::Cipher.new(AES_256_CBC).random_iv].pack('m')).chomp
127
- end
128
-
129
- #Generates a new key using Digest SHA256 in @key, and random AES_256_CBC initialization vector in @iv
130
- # @return [String] Base64 encoded string, @key
131
- # @return [String] Base64 encoded initialization vector @iv
134
+
135
+ # Generates a new key using Digest SHA256 in @key.
136
+ #
137
+ # @return [String] Base64 encoded string, @key
138
+ def self.gen_key_to_s
139
+ digest = Digest::SHA256.new
140
+ digest.update('symetric key')
141
+ return [ digest.digest ].pack('m').chomp
142
+ end
143
+
144
+ # Generate random AES_256_CBC initialization vector.
145
+ #
146
+ # @return [String] Base64 encoded initialization vector @iv
147
+ def self.gen_iv_to_s
148
+ return [ OpenSSL::Cipher.new(AES_256_CBC).random_iv ].pack('m').chomp
149
+ end
150
+
151
+ # Generates a new key using Digest SHA256 in @key, and random AES_256_CBC initialization vector in @iv
152
+ #
153
+ # @return [String,String] Base64 encoded string, @key;
154
+ # Base64 encoded initialization vector @iv
132
155
  def self.gen_key_iv_to_s
133
- return self.gen_key_to_s, self.gen_iv_to_s
156
+ return self.gen_key_to_s, self.gen_iv_to_s
134
157
  end
135
-
136
- #Encrypts source using AES 256 CBC, using @key and @iv
137
- # @param unencrypted_source [String|File]
138
- # @param key_string [String] optional base64 key to be used in encryption or decryption.
158
+
159
+ # Encrypts source using AES 256 CBC, using @key and @iv
160
+ #
161
+ # @param unencrypted_source [String|File]
162
+ # @param key_string [String] optional base64 key to be used in encryption or decryption.
139
163
  # if nil, then key and iv are generated automatically. Recover the key with key_to_s(), or key_iv_to_s()
140
- # @param iv_string [String ] optional base64 iv (initial vector) to be used in the encryption or decryption
164
+ # @param iv_string [String ] optional base64 iv (initial vector) to be used in the encryption or decryption
141
165
  # Overwritten by auto generated iv, if key_string is nil. Recover with iv_to_str() or key_iv_to_s().
142
- # @return [String] Binary string representing encrypted source
143
- # @return [String] base64 key, @key, so later decryption can be done
144
- # @return [String] base64 initial vector, @iv, so later decryption can be done
166
+ # @return [String,String,String] Binary string representing encrypted source;
167
+ # base64 key, @key, so later decryption can be done;
168
+ # base64 initial vector, @iv, so later decryption can be done
145
169
  def self.encrypt(unencrypted_source, key_string = nil, iv_string = nil)
146
170
  aes = self.new(key_string, iv_string)
147
- return aes.encrypt(unencrypted_source), aes.key_to_s, aes.iv_to_s
171
+ return aes.encrypt(unencrypted_source), aes.key_to_s, aes.iv_to_s
148
172
  end
149
-
150
- #Converts encrypted source String, @cipher_text, into Base64 String
151
- # @param unencrypted_source [String|File] which must be present, as AES_256 class is created here.
152
- # @param key_string [String] optional base64 key to be used in encryption or decryption.
173
+
174
+ # Converts encrypted source String, @cipher_text, into Base64 String
175
+ #
176
+ # @param unencrypted_source [String|File] which must be present, as AES_256 class is created here.
177
+ # @param key_string [String] optional base64 key to be used in encryption or decryption.
153
178
  # if nil, then key and iv are generated automatically. Recover the key with key_to_s(), or key_iv_to_s()
154
- # @param iv_string [String ] optional base64 iv (initial vector) to be used in the encryption or decryption
179
+ # @param iv_string [String ] optional base64 iv (initial vector) to be used in the encryption or decryption
155
180
  # Overwritten by auto generated iv, if key_string is nil. Recover with iv_to_str() or key_iv_to_s().
156
- # @return [String] Base64 string representing encrypted source
157
- # @return [String] base64 key, @key, so later decryption can be done
158
- # @return [String] base64 initial vector, @iv, so later decryption can be done
181
+ # @return [String,String,String] Base64 string representing encrypted source;
182
+ # base64 key, @key, so later decryption can be done;
183
+ # base64 initial vector, @iv, so later decryption can be done
159
184
  def self.cipher_to_s(unencrypted_source, key_string = nil, iv_string = nil)
160
185
  aes = self.new(key_string, iv_string)
161
- return aes.cipher_to_s(unencrypted_source), aes.key_to_s, aes.iv_to_s
186
+ return aes.cipher_to_s(unencrypted_source), aes.key_to_s, aes.iv_to_s
162
187
  end
163
-
164
- #Creates an AES class and then Decrypts source using AES 256 CBC, using @key and @iv
165
- # @param encrypted_source [String|File]
166
- # @param base64_source [Boolean] if true, then source is assumed to be base64 encoded.
167
- # @param key_string [String] optional base64 key to be used in encryption or decryption.
188
+
189
+ # Creates an AES class and then Decrypts source using AES 256 CBC, using @key and @iv
190
+ #
191
+ # @param encrypted_source [String|File]
192
+ # @param base64_source [Boolean] if true, then source is assumed to be base64 encoded.
193
+ # @param key_string [String] optional base64 key to be used in encryption or decryption.
168
194
  # if nil, then key and iv are generated automatically. Recover the key with key_to_s(), or key_iv_to_s()
169
- # @param iv_string [String ] optional base64 iv (initial vector) to be used in the encryption or decryption
195
+ # @param iv_string [String ] optional base64 iv (initial vector) to be used in the encryption or decryption
170
196
  # Overwritten by auto generated iv, if key_string is nil. Recover with iv_to_str() or key_iv_to_s().
171
- # @return [String] String representing the original unencypted source
172
- def self.decrypt(encrypted_source, base64_source=false, key_string = nil, iv_string = nil)
197
+ # @return [String] String representing the original unencypted source
198
+ def self.decrypt(encrypted_source, base64_source = false, key_string = nil, iv_string = nil)
173
199
  aes = self.new(key_string, iv_string)
174
200
  return aes.decrypt(encrypted_source, base64_source)
175
201
  end
176
202
  end
177
203
  end
178
-
179
-
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wikk_aes_256
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Burrowes
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-10 00:00:00.000000000 Z
11
+ date: 2022-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hoe-yard
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.16'
33
+ version: '3.23'
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: '3.16'
40
+ version: '3.23'
41
41
  description: Class for AES 256 encryption of text.
42
42
  email:
43
43
  - r.burrowes@auckland.ac.nz
@@ -53,11 +53,11 @@ files:
53
53
  - README.md
54
54
  - Rakefile
55
55
  - lib/wikk_aes_256.rb
56
- homepage: http://wikarekare.github.com/wikk_aes/
56
+ homepage: https://wikarekare.github.io/wikk_aes_256/
57
57
  licenses:
58
58
  - MIT
59
59
  metadata: {}
60
- post_install_message:
60
+ post_install_message:
61
61
  rdoc_options:
62
62
  - "--markup"
63
63
  - markdown
@@ -78,9 +78,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
78
  - !ruby/object:Gem::Version
79
79
  version: '0'
80
80
  requirements: []
81
- rubyforge_project:
82
- rubygems_version: 2.6.13
83
- signing_key:
81
+ rubygems_version: 3.2.22
82
+ signing_key:
84
83
  specification_version: 4
85
84
  summary: Class for AES 256 encryption of text.
86
85
  test_files: []