blackbox 3.3.0 → 4.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: fd439770497c284d17c5af5d41c66cb0cda688fc
4
- data.tar.gz: 5a3324a00ff18c50f0fddbb8257cd9b5a476e8f8
3
+ metadata.gz: b3aeb32000fc9cea63d18215bc7f87c550cfa382
4
+ data.tar.gz: 2e0bfcaefc68dbba17d672754cf565e51fcbb05b
5
5
  SHA512:
6
- metadata.gz: 6dcfb05a55de1517900443519733259021b5cfc557e566606a7558ebc63cd92abfdb13b1ef8c792db6cb64c3756693da1c3261e15bdabcd779e79e5f2f521d8e
7
- data.tar.gz: 8c4effdcc89b47fec5d38f22a155ed84777cfee55d827501b61cbdfcb1635df5a76e08193115087452b6a28645fb9a98fcc2898c5a3b3fb43db3bb84aa3be9d6
6
+ metadata.gz: 1856230d97fb5745cddc3b471022913c81ac20643fe083bd0a34199ee32fc80fb583c428967851b1252383e919b06e8fe88e30b1745378c7e6a56435f69527ec
7
+ data.tar.gz: b9e9a6d21021a558d83fbced43074804c279d7acff918d6b2bfedc5a6555e1233f9432d43115676b58a6276e242f67f7d159db726b1a97e907500b215f4640f5
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.3.1
1
+ 2.4.0
data/Rakefile CHANGED
@@ -11,9 +11,9 @@ RSpec::Core::RakeTask.new('test:spec') do |t|
11
11
 
12
12
  extra_opts = []
13
13
  extra_opts << if e.nil? && f.nil?
14
- '-f progress'
14
+ '-f progress --fail-fast'
15
15
  else
16
- '--color --fail-fast -f documentation'
16
+ '--color -f documentation'
17
17
  end
18
18
 
19
19
  extra_opts << " -e #{e}" unless e.nil?
data/blackbox.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |gem|
18
18
  gem.executables = gem.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
19
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
20
20
  gem.require_paths = ['lib']
21
- gem.required_ruby_version = '>= 2.3.0'
21
+ gem.required_ruby_version = '>= 2.4.0'
22
22
 
23
23
  gem.add_development_dependency 'rake'
24
24
  gem.add_development_dependency 'rspec'
@@ -24,11 +24,11 @@
24
24
  702,
25
25
  702,
26
26
  700,
27
- 331,
28
- 331,
27
+ 430,
28
+ 430,
29
29
  null,
30
- 369,
31
- 369,
30
+ 270,
31
+ 270,
32
32
  null,
33
33
  null,
34
34
  null,
@@ -44,10 +44,10 @@
44
44
  372,
45
45
  372,
46
46
  372,
47
- 249,
48
- 249,
47
+ 282,
48
+ 282,
49
49
  null,
50
- 123,
50
+ 90,
51
51
  null,
52
52
  372,
53
53
  null,
@@ -608,6 +608,6 @@
608
608
  null
609
609
  ]
610
610
  },
611
- "timestamp": 1469891309
611
+ "timestamp": 1482682020
612
612
  }
613
613
  }
data/coverage/index.html CHANGED
@@ -14,7 +14,7 @@
14
14
  <img src="./assets/0.10.0/loading.gif" alt="loading"/>
15
15
  </div>
16
16
  <div id="wrapper" style="display:none;">
17
- <div class="timestamp">Generated <abbr class="timeago" title="2016-07-30T17:08:29+02:00">2016-07-30T17:08:29+02:00</abbr></div>
17
+ <div class="timestamp">Generated <abbr class="timeago" title="2016-12-25T17:07:00+01:00">2016-12-25T17:07:00+01:00</abbr></div>
18
18
  <ul class="group_tabs"></ul>
19
19
 
20
20
  <div id="content">
@@ -25,7 +25,7 @@
25
25
  covered at
26
26
  <span class="covered_strength">
27
27
  <span class="green">
28
- 38.36
28
+ 38.51
29
29
  </span>
30
30
  </span> hits/line)
31
31
  </h2>
@@ -57,7 +57,7 @@
57
57
  <td>48</td>
58
58
  <td>48</td>
59
59
  <td>0</td>
60
- <td>156.1</td>
60
+ <td>156.8</td>
61
61
  </tr>
62
62
 
63
63
  <tr>
@@ -119,7 +119,7 @@
119
119
  </div>
120
120
 
121
121
  <div id="footer">
122
- Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.11.2
122
+ Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.12.0
123
123
  and simplecov-html v0.10.0<br/>
124
124
  using RSpec
125
125
  </div>
@@ -251,7 +251,7 @@
251
251
  <li class="covered" data-hits="702" data-linenumber="19">
252
252
  <span class="hits">702</span>
253
253
 
254
- <code class="ruby"> cipher = OpenSSL::Cipher::Cipher.new(cipher_type)</code>
254
+ <code class="ruby"> cipher = OpenSSL::Cipher.new(cipher_type)</code>
255
255
  </li>
256
256
 
257
257
  <li class="covered" data-hits="702" data-linenumber="20">
@@ -272,14 +272,14 @@
272
272
  <code class="ruby"> if iv.nil?</code>
273
273
  </li>
274
274
 
275
- <li class="covered" data-hits="331" data-linenumber="23">
276
- <span class="hits">331</span>
275
+ <li class="covered" data-hits="430" data-linenumber="23">
276
+ <span class="hits">430</span>
277
277
 
278
278
  <code class="ruby"> iv = cipher.random_iv</code>
279
279
  </li>
280
280
 
281
- <li class="covered" data-hits="331" data-linenumber="24">
282
- <span class="hits">331</span>
281
+ <li class="covered" data-hits="430" data-linenumber="24">
282
+ <span class="hits">430</span>
283
283
 
284
284
  <code class="ruby"> [iv.length].pack(&#39;C&#39;) + iv + cipher.update(plaintext) + cipher.final</code>
285
285
  </li>
@@ -290,14 +290,14 @@
290
290
  <code class="ruby"> else</code>
291
291
  </li>
292
292
 
293
- <li class="covered" data-hits="369" data-linenumber="26">
294
- <span class="hits">369</span>
293
+ <li class="covered" data-hits="270" data-linenumber="26">
294
+ <span class="hits">270</span>
295
295
 
296
296
  <code class="ruby"> cipher.iv = iv</code>
297
297
  </li>
298
298
 
299
- <li class="covered" data-hits="369" data-linenumber="27">
300
- <span class="hits">369</span>
299
+ <li class="covered" data-hits="270" data-linenumber="27">
300
+ <span class="hits">270</span>
301
301
 
302
302
  <code class="ruby"> cipher.update(plaintext) + cipher.final</code>
303
303
  </li>
@@ -371,7 +371,7 @@
371
371
  <li class="covered" data-hits="372" data-linenumber="39">
372
372
  <span class="hits">372</span>
373
373
 
374
- <code class="ruby"> cipher = OpenSSL::Cipher::Cipher.new(cipher_type)</code>
374
+ <code class="ruby"> cipher = OpenSSL::Cipher.new(cipher_type)</code>
375
375
  </li>
376
376
 
377
377
  <li class="covered" data-hits="372" data-linenumber="40">
@@ -392,14 +392,14 @@
392
392
  <code class="ruby"> if iv.nil?</code>
393
393
  </li>
394
394
 
395
- <li class="covered" data-hits="249" data-linenumber="43">
396
- <span class="hits">249</span>
395
+ <li class="covered" data-hits="282" data-linenumber="43">
396
+ <span class="hits">282</span>
397
397
 
398
398
  <code class="ruby"> iv_len = ciphertext.slice!(0).unpack(&#39;C&#39;)[0]</code>
399
399
  </li>
400
400
 
401
- <li class="covered" data-hits="249" data-linenumber="44">
402
- <span class="hits">249</span>
401
+ <li class="covered" data-hits="282" data-linenumber="44">
402
+ <span class="hits">282</span>
403
403
 
404
404
  <code class="ruby"> cipher.iv = ciphertext.slice!(0..iv_len - 1) unless 0 == iv_len</code>
405
405
  </li>
@@ -410,8 +410,8 @@
410
410
  <code class="ruby"> else</code>
411
411
  </li>
412
412
 
413
- <li class="covered" data-hits="123" data-linenumber="46">
414
- <span class="hits">123</span>
413
+ <li class="covered" data-hits="90" data-linenumber="46">
414
+ <span class="hits">90</span>
415
415
 
416
416
  <code class="ruby"> cipher.iv = iv</code>
417
417
  </li>
data/doc/BB.html CHANGED
@@ -115,7 +115,7 @@
115
115
  <dt id="VERSION-constant" class="">VERSION =
116
116
 
117
117
  </dt>
118
- <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>3.3.0</span><span class='tstring_end'>&#39;</span></span></pre></dd>
118
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>4.0.0</span><span class='tstring_end'>&#39;</span></span></pre></dd>
119
119
 
120
120
  </dl>
121
121
 
@@ -131,9 +131,9 @@
131
131
  </div>
132
132
 
133
133
  <div id="footer">
134
- Generated on Sat Jul 30 17:08:30 2016 by
134
+ Generated on Sun Dec 25 17:07:01 2016 by
135
135
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
136
- 0.8.7.6 (ruby-2.3.1).
136
+ 0.8.7.6 (ruby-2.4.0).
137
137
  </div>
138
138
 
139
139
  </body>
data/doc/BB/Crypto.html CHANGED
@@ -406,7 +406,7 @@
406
406
  <pre class="code"><span class="info file"># File 'lib/blackbox/crypto.rb', line 38</span>
407
407
 
408
408
  <span class='kw'>def</span> <span class='id identifier rubyid_decrypt'>decrypt</span><span class='lparen'>(</span><span class='id identifier rubyid_ciphertext'>ciphertext</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>aes-256-cbc</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
409
- <span class='id identifier rubyid_cipher'>cipher</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>Cipher</span><span class='op'>::</span><span class='const'>Cipher</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='rparen'>)</span>
409
+ <span class='id identifier rubyid_cipher'>cipher</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>Cipher</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='rparen'>)</span>
410
410
  <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_decrypt'>decrypt</span>
411
411
  <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span>
412
412
  <span class='kw'>if</span> <span class='id identifier rubyid_iv'>iv</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
@@ -831,7 +831,7 @@
831
831
  <pre class="code"><span class="info file"># File 'lib/blackbox/crypto.rb', line 18</span>
832
832
 
833
833
  <span class='kw'>def</span> <span class='id identifier rubyid_encrypt'>encrypt</span><span class='lparen'>(</span><span class='id identifier rubyid_plaintext'>plaintext</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_cipher_type'>cipher_type</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>aes-256-cbc</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_iv'>iv</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
834
- <span class='id identifier rubyid_cipher'>cipher</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>Cipher</span><span class='op'>::</span><span class='const'>Cipher</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='rparen'>)</span>
834
+ <span class='id identifier rubyid_cipher'>cipher</span> <span class='op'>=</span> <span class='const'>OpenSSL</span><span class='op'>::</span><span class='const'>Cipher</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_cipher_type'>cipher_type</span><span class='rparen'>)</span>
835
835
  <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_encrypt'>encrypt</span>
836
836
  <span class='id identifier rubyid_cipher'>cipher</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span> <span class='op'>=</span> <span class='id identifier rubyid_key'>key</span>
837
837
  <span class='kw'>if</span> <span class='id identifier rubyid_iv'>iv</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
@@ -1142,9 +1142,9 @@
1142
1142
  </div>
1143
1143
 
1144
1144
  <div id="footer">
1145
- Generated on Sat Jul 30 17:08:31 2016 by
1145
+ Generated on Sun Dec 25 17:07:01 2016 by
1146
1146
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1147
- 0.8.7.6 (ruby-2.3.1).
1147
+ 0.8.7.6 (ruby-2.4.0).
1148
1148
  </div>
1149
1149
 
1150
1150
  </body>
@@ -520,9 +520,9 @@
520
520
  </div>
521
521
 
522
522
  <div id="footer">
523
- Generated on Sat Jul 30 17:08:31 2016 by
523
+ Generated on Sun Dec 25 17:07:01 2016 by
524
524
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
525
- 0.8.7.6 (ruby-2.3.1).
525
+ 0.8.7.6 (ruby-2.4.0).
526
526
  </div>
527
527
 
528
528
  </body>
data/doc/BB/Gem.html CHANGED
@@ -428,9 +428,9 @@ version?</p>
428
428
  </div>
429
429
 
430
430
  <div id="footer">
431
- Generated on Sat Jul 30 17:08:31 2016 by
431
+ Generated on Sun Dec 25 17:07:01 2016 by
432
432
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
433
- 0.8.7.6 (ruby-2.3.1).
433
+ 0.8.7.6 (ruby-2.4.0).
434
434
  </div>
435
435
 
436
436
  </body>
data/doc/BB/Hash.html CHANGED
@@ -432,9 +432,9 @@ BB::Hash.flatten_prop_style(input)
432
432
  </div>
433
433
 
434
434
  <div id="footer">
435
- Generated on Sat Jul 30 17:08:31 2016 by
435
+ Generated on Sun Dec 25 17:07:01 2016 by
436
436
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
437
- 0.8.7.6 (ruby-2.3.1).
437
+ 0.8.7.6 (ruby-2.4.0).
438
438
  </div>
439
439
 
440
440
  </body>
data/doc/BB/Number.html CHANGED
@@ -920,9 +920,9 @@ can customize the format in the <code>options</code> hash.</p>
920
920
  </div>
921
921
 
922
922
  <div id="footer">
923
- Generated on Sat Jul 30 17:08:31 2016 by
923
+ Generated on Sun Dec 25 17:07:01 2016 by
924
924
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
925
- 0.8.7.6 (ruby-2.3.1).
925
+ 0.8.7.6 (ruby-2.4.0).
926
926
  </div>
927
927
 
928
928
  </body>
data/doc/BB/String.html CHANGED
@@ -231,9 +231,9 @@
231
231
  </div>
232
232
 
233
233
  <div id="footer">
234
- Generated on Sat Jul 30 17:08:31 2016 by
234
+ Generated on Sun Dec 25 17:07:01 2016 by
235
235
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
236
- 0.8.7.6 (ruby-2.3.1).
236
+ 0.8.7.6 (ruby-2.4.0).
237
237
  </div>
238
238
 
239
239
  </body>
data/doc/BB/Unix.html CHANGED
@@ -411,9 +411,9 @@
411
411
  </div>
412
412
 
413
413
  <div id="footer">
414
- Generated on Sat Jul 30 17:08:31 2016 by
414
+ Generated on Sun Dec 25 17:07:01 2016 by
415
415
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
416
- 0.8.7.6 (ruby-2.3.1).
416
+ 0.8.7.6 (ruby-2.4.0).
417
417
  </div>
418
418
 
419
419
  </body>
data/doc/_index.html CHANGED
@@ -198,9 +198,9 @@
198
198
  </div>
199
199
 
200
200
  <div id="footer">
201
- Generated on Sat Jul 30 17:08:30 2016 by
201
+ Generated on Sun Dec 25 17:07:01 2016 by
202
202
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
203
- 0.8.7.6 (ruby-2.3.1).
203
+ 0.8.7.6 (ruby-2.4.0).
204
204
  </div>
205
205
 
206
206
  </body>
data/doc/file.README.html CHANGED
@@ -95,9 +95,9 @@ BB::String.strip_ansi( ... )
95
95
  </div></div>
96
96
 
97
97
  <div id="footer">
98
- Generated on Sat Jul 30 17:08:30 2016 by
98
+ Generated on Sun Dec 25 17:07:01 2016 by
99
99
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
100
- 0.8.7.6 (ruby-2.3.1).
100
+ 0.8.7.6 (ruby-2.4.0).
101
101
  </div>
102
102
 
103
103
  </body>
data/doc/index.html CHANGED
@@ -95,9 +95,9 @@ BB::String.strip_ansi( ... )
95
95
  </div></div>
96
96
 
97
97
  <div id="footer">
98
- Generated on Sat Jul 30 17:08:30 2016 by
98
+ Generated on Sun Dec 25 17:07:01 2016 by
99
99
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
100
- 0.8.7.6 (ruby-2.3.1).
100
+ 0.8.7.6 (ruby-2.4.0).
101
101
  </div>
102
102
 
103
103
  </body>
@@ -103,9 +103,9 @@
103
103
  </div>
104
104
 
105
105
  <div id="footer">
106
- Generated on Sat Jul 30 17:08:30 2016 by
106
+ Generated on Sun Dec 25 17:07:01 2016 by
107
107
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
108
- 0.8.7.6 (ruby-2.3.1).
108
+ 0.8.7.6 (ruby-2.4.0).
109
109
  </div>
110
110
 
111
111
  </body>
@@ -16,7 +16,7 @@ module BB
16
16
  # @return [String] When iv == nil: iv_length+iv+ciphertext
17
17
  # @return [String] When iv != nil: ciphertext
18
18
  def encrypt(plaintext, key, cipher_type = 'aes-256-cbc', iv = nil)
19
- cipher = OpenSSL::Cipher::Cipher.new(cipher_type)
19
+ cipher = OpenSSL::Cipher.new(cipher_type)
20
20
  cipher.encrypt
21
21
  cipher.key = key
22
22
  if iv.nil?
@@ -36,7 +36,7 @@ module BB
36
36
  # @param [String] iv Initialization vector
37
37
  # @return [String] Plaintext
38
38
  def decrypt(ciphertext, key, cipher_type = 'aes-256-cbc', iv = nil)
39
- cipher = OpenSSL::Cipher::Cipher.new(cipher_type)
39
+ cipher = OpenSSL::Cipher.new(cipher_type)
40
40
  cipher.decrypt
41
41
  cipher.key = key
42
42
  if iv.nil?
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module BB
3
- VERSION = '3.3.0'
3
+ VERSION = '4.0.0'
4
4
  end
data/spec/crypto_spec.rb CHANGED
@@ -13,6 +13,50 @@ OPENSSL_CIPHERS = %w(aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb aes-256-cbc
13
13
  %w(rc2-64-cbc rc2-cbc rc2-cfb rc2-ecb rc2-ofb) +
14
14
  %w(rc4 rc4-40)
15
15
 
16
+ CIPHER_KEY_IV_SIZE = {
17
+ 'aes-128-cbc': [16, 16],
18
+ 'aes-128-ecb': [16, 1],
19
+ 'aes-192-cbc': [24, 16],
20
+ 'aes-192-ecb': [24, 1],
21
+ 'aes-256-cbc': [32, 16],
22
+ 'aes-256-ecb': [32, 1],
23
+ 'bf': [16, 8],
24
+ 'bf-cbc': [16, 8],
25
+ 'bf-cfb': [16, 8],
26
+ 'bf-ecb': [16, 1],
27
+ 'bf-ofb': [16, 8],
28
+ 'cast': [16, 8],
29
+ 'cast-cbc': [16, 8],
30
+ 'cast5-cbc': [16, 8],
31
+ 'cast5-cfb': [16, 8],
32
+ 'cast5-ecb': [16, 1],
33
+ 'cast5-ofb': [16, 8],
34
+ 'des': [8, 8],
35
+ 'des-cbc': [8, 8],
36
+ 'des-cfb': [8, 8],
37
+ 'des-ecb': [8, 1],
38
+ 'des-ede': [16, 1],
39
+ 'des-ede-cbc': [16, 8],
40
+ 'des-ede-cfb': [16, 8],
41
+ 'des-ede-ofb': [16, 8],
42
+ 'des-ede3': [24, 1],
43
+ 'des-ede3-cbc': [24, 8],
44
+ 'des-ede3-cfb': [24, 8],
45
+ 'des-ede3-ofb': [24, 8],
46
+ 'des-ofb': [8, 8],
47
+ 'des3': [24, 8],
48
+ 'desx': [24, 8],
49
+ 'rc2': [16, 8],
50
+ 'rc2-40-cbc': [5, 8],
51
+ 'rc2-64-cbc': [8, 8],
52
+ 'rc2-cbc': [16, 8],
53
+ 'rc2-cfb': [16, 8],
54
+ 'rc2-ecb': [16, 1],
55
+ 'rc2-ofb': [16, 8],
56
+ 'rc4': [16, 1],
57
+ 'rc4-40': [5, 1]
58
+ }.freeze
59
+
16
60
  TEST_KEY = '12345678901234567890123456789012'
17
61
  TEST_IV = 'x234567890123456789012345678901x'
18
62
  TEST_TEXT_SHORT = '[SHORT_TEST]' * 16
@@ -27,26 +71,34 @@ describe BB::Crypto do
27
71
  m_enc, m_dec = e
28
72
  describe "#{m_enc}, #{m_dec}" do
29
73
  it 'can decrypt what it encrypted (short string, random iv)' do
30
- ct = BB::Crypto.send(m_enc, TEST_TEXT_SHORT, TEST_KEY, cipher)
31
- pt = BB::Crypto.send(m_dec, ct, TEST_KEY, cipher)
74
+ test_key = TEST_KEY[0..CIPHER_KEY_IV_SIZE.fetch(cipher.to_sym)[0] - 1]
75
+ ct = BB::Crypto.send(m_enc, TEST_TEXT_SHORT, test_key, cipher)
76
+ pt = BB::Crypto.send(m_dec, ct, test_key, cipher)
32
77
  expect(pt).to eq(TEST_TEXT_SHORT)
33
78
  end
34
79
 
35
80
  it 'can decrypt what it encrypted (long string, random iv)' do
36
- ct = BB::Crypto.send(m_enc, TEST_TEXT_LONG, TEST_KEY, cipher)
37
- pt = BB::Crypto.send(m_dec, ct, TEST_KEY, cipher)
81
+ test_key = TEST_KEY[0..CIPHER_KEY_IV_SIZE.fetch(cipher.to_sym)[0] - 1]
82
+ ct = BB::Crypto.send(m_enc, TEST_TEXT_LONG, test_key, cipher)
83
+ pt = BB::Crypto.send(m_dec, ct, test_key, cipher)
38
84
  expect(pt).to eq(TEST_TEXT_LONG)
39
85
  end
40
86
 
41
87
  it 'can decrypt what it encrypted (long string, static iv)' do
42
- ct = BB::Crypto.send(m_enc, TEST_TEXT_LONG, TEST_KEY, cipher, TEST_IV)
43
- pt = BB::Crypto.send(m_dec, ct, TEST_KEY, cipher, TEST_IV)
88
+ test_key = TEST_KEY[0..CIPHER_KEY_IV_SIZE.fetch(cipher.to_sym)[0] - 1]
89
+ test_iv = TEST_IV[0..CIPHER_KEY_IV_SIZE.fetch(cipher.to_sym)[1] - 1]
90
+ test_iv = nil if test_iv.length == 1
91
+ ct = BB::Crypto.send(m_enc, TEST_TEXT_LONG, test_key, cipher, test_iv)
92
+ pt = BB::Crypto.send(m_dec, ct, test_key, cipher, test_iv)
44
93
  expect(pt).to eq(TEST_TEXT_LONG)
45
94
  end
46
95
 
47
96
  it 'returns consistent output with static iv' do
48
- a = BB::Crypto.send(m_enc, TEST_TEXT_SHORT, TEST_KEY, cipher, TEST_IV)
49
- b = BB::Crypto.send(m_enc, TEST_TEXT_SHORT, TEST_KEY, cipher, TEST_IV)
97
+ test_key = TEST_KEY[0..CIPHER_KEY_IV_SIZE.fetch(cipher.to_sym)[0] - 1]
98
+ test_iv = TEST_IV[0..CIPHER_KEY_IV_SIZE.fetch(cipher.to_sym)[1] - 1]
99
+ test_iv = nil if test_iv.length == 1
100
+ a = BB::Crypto.send(m_enc, TEST_TEXT_SHORT, test_key, cipher, test_iv)
101
+ b = BB::Crypto.send(m_enc, TEST_TEXT_SHORT, test_key, cipher, test_iv)
50
102
  expect(a).to eq(b)
51
103
  end
52
104
  end
@@ -69,7 +121,7 @@ describe BB::Crypto do
69
121
  end
70
122
 
71
123
  describe BB::Crypto::ControlToken do
72
- TEST_KEY = '12345678901234567890123456789012'
124
+ test_key = '12345678901234567890123456789012'
73
125
  it "raises an Exception when no key is given and ENV['CONTROLTOKEN_SECRET'] is blank" do
74
126
  expect do
75
127
  subject.class.create('foo', [])
@@ -79,18 +131,18 @@ describe BB::Crypto do
79
131
  it 'raises an Exception when key is too short (via parameter)' do
80
132
  expect do
81
133
  subject.class.create('foo', [], 911, 'key')
82
- end.to raise_error(OpenSSL::Cipher::CipherError)
134
+ end.to raise_error(ArgumentError)
83
135
  end
84
136
 
85
137
  it 'raises an Exception when key is too short (via ENV)' do
86
138
  expect do
87
139
  ENV['CONTROLTOKEN_SECRET'] = 'x'
88
140
  subject.class.create('foo', [], 911)
89
- end.to raise_error(OpenSSL::Cipher::CipherError)
141
+ end.to raise_error(ArgumentError)
90
142
  end
91
143
 
92
144
  it 'decodes all elements of token payload as Strings' do
93
- v = subject.class.parse(subject.class.create('foo', ['a', 2, :c], 5, TEST_KEY), TEST_KEY)
145
+ v = subject.class.parse(subject.class.create('foo', ['a', 2, :c], 5, test_key), test_key)
94
146
  expect(v[:op]).to eq('foo')
95
147
  expect(v[:args]).to eq(%w(a 2 c))
96
148
  expect(v[:expired]).to eq(false)
@@ -98,12 +150,12 @@ describe BB::Crypto do
98
150
 
99
151
  it 'raises an Exception when parsing expired Token with force=false' do
100
152
  expect do
101
- subject.class.parse(subject.class.create('foo', ['a', 2, :c], -1, TEST_KEY), TEST_KEY)
153
+ subject.class.parse(subject.class.create('foo', ['a', 2, :c], -1, test_key), test_key)
102
154
  end.to raise_error(ArgumentError)
103
155
  end
104
156
 
105
157
  it 'returns token with expired=true when parsing expired Token with force=true' do
106
- v = subject.class.parse(subject.class.create('foo', ['a', 2, :c], -1, TEST_KEY), TEST_KEY, true)
158
+ v = subject.class.parse(subject.class.create('foo', ['a', 2, :c], -1, test_key), test_key, true)
107
159
  expect(v[:expired]).to eq(true)
108
160
  end
109
161
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blackbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Moe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-30 00:00:00.000000000 Z
11
+ date: 2016-12-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -358,7 +358,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
358
358
  requirements:
359
359
  - - ">="
360
360
  - !ruby/object:Gem::Version
361
- version: 2.3.0
361
+ version: 2.4.0
362
362
  required_rubygems_version: !ruby/object:Gem::Requirement
363
363
  requirements:
364
364
  - - ">="
@@ -366,7 +366,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
366
366
  version: '0'
367
367
  requirements: []
368
368
  rubyforge_project:
369
- rubygems_version: 2.5.1
369
+ rubygems_version: 2.6.8
370
370
  signing_key:
371
371
  specification_version: 4
372
372
  summary: Various little helpers