symmetric-encryption 3.9.0 → 3.9.1

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: fad0434ee0b203f85088bc62492c16d2365a284c
4
- data.tar.gz: c8cd4796787faa48be52155d75e1e312f627b38d
3
+ metadata.gz: 4569a98f50aa6df040149ea4252b66b1717f1e5c
4
+ data.tar.gz: afd1ca34b01b8deae7ac11658207b757873927e8
5
5
  SHA512:
6
- metadata.gz: 59fe734623957ac4abed7b6b94786153a793947528d6b857612f418c6fa151947076b8802b5fe901bc2a1d0bad02aa79aa6790951b0671d054e4274ea09a29cc
7
- data.tar.gz: 72270dd87fd4e16616b31e7d173facffc2da383c6f0719c0cc76bb9e353d0b33f1179c419af24f36c4ac108e6279b695202163884c01d0d97fe7f770688223b2
6
+ metadata.gz: ab76aa43eeb67a5f58fd31b0e3dd715e0474b241c4e371a82cfe0bbb4ece9b65d253c3856df9054472432c75b552bd5609aec65c2262995c2d15c7c689dd40c9
7
+ data.tar.gz: 583f8cbb6e7741e11a7354550968f8c109c541ddda4ce58a120b10071d276ea3f3fec488f140a1de6198b104a0b2e812aa8ac348a8950258b5f84d77f0c7c5c3
@@ -217,7 +217,7 @@ module SymmetricEncryption
217
217
  def initialize(params={})
218
218
  params = params.dup
219
219
  @cipher_name = params.delete(:cipher_name) || params.delete(:cipher) || 'aes-256-cbc'
220
- @version = params.delete(:version)
220
+ @version = params.delete(:version) || 0
221
221
  @always_add_header = params.delete(:always_add_header) || false
222
222
  self.encoding = (params.delete(:encoding) || :base64).to_sym
223
223
  private_rsa_key = params.delete(:private_rsa_key)
@@ -461,10 +461,9 @@ module SymmetricEncryption
461
461
  # The cipher_name string to to put in the header
462
462
  # Default: nil : Exclude cipher_name name from header
463
463
  def self.build_header(version, compressed=false, iv=nil, key=nil, cipher_name=nil)
464
- # Ruby V2 named parameters would be perfect here
464
+ version ||= SymmetricEncryption.cipher.version
465
465
 
466
- # Version number of supplied encryption key, or use the global cipher version if none was supplied
467
- flags = iv || key ? (SymmetricEncryption.cipher.version || 0) : (version || 0) # Same as 0b0000_0000_0000_0000
466
+ flags = version # Same as 0b0000_0000_0000_0000
468
467
 
469
468
  # If the data is to be compressed before being encrypted, set the
470
469
  # compressed bit in the flags word
@@ -478,7 +477,7 @@ module SymmetricEncryption
478
477
  header << iv
479
478
  end
480
479
  if key
481
- encrypted = SymmetricEncryption.cipher.binary_encrypt(key, false, false, false)
480
+ encrypted = SymmetricEncryption.cipher(version).binary_encrypt(key, false, false, false)
482
481
  header << [encrypted.length].pack('v').force_encoding(SymmetricEncryption::BINARY_ENCODING)
483
482
  header << encrypted
484
483
  end
@@ -1,3 +1,3 @@
1
1
  module SymmetricEncryption #:nodoc
2
- VERSION = '3.9.0'
2
+ VERSION = '3.9.1'
3
3
  end
@@ -46,6 +46,15 @@ test:
46
46
  version: 2
47
47
  always_add_header: true
48
48
 
49
+ # For testing a higher version that is not active yet
50
+ -
51
+ key: 6BCDEF1234567890ABCDEF1234567890
52
+ iv: 6BCDEF1234567890
53
+ cipher_name: aes-256-cbc
54
+ version: 6
55
+ encoding: :base64strict
56
+ always_add_header: true
57
+
49
58
  # Prior Symmetric Encryption Key specified in environment variable
50
59
  -
51
60
  # Encryption Key
@@ -9,7 +9,7 @@ class SymmetricEncryptionTest < Minitest::Test
9
9
  before do
10
10
  config = SymmetricEncryption::Config.read_config(File.join(File.dirname(__FILE__), 'config', 'symmetric-encryption.yml'), 'test')
11
11
  @ciphers = SymmetricEncryption::Config.extract_ciphers(config)
12
- @cipher_v2, @cipher_v1, @cipher_v0 = @ciphers
12
+ @cipher_v2, @cipher_v6, @cipher_v1, @cipher_v0 = @ciphers
13
13
  end
14
14
 
15
15
  it 'matches config file for first cipher' do
@@ -160,6 +160,13 @@ class SymmetricEncryptionTest < Minitest::Test
160
160
  assert_equal @social_security_number, SymmetricEncryption.decrypt(encrypted)
161
161
  end
162
162
 
163
+ it 'encrypt and then decrypt using random iv with higher version' do
164
+ # Encrypt with random iv
165
+ assert encrypted = SymmetricEncryption.cipher(6).encrypt(@social_security_number, true)
166
+ assert_equal true, SymmetricEncryption.encrypted?(encrypted)
167
+ assert_equal @social_security_number, SymmetricEncryption.decrypt(encrypted)
168
+ end
169
+
163
170
  it 'encrypt and then decrypt using random iv with compression' do
164
171
  # Encrypt with random iv and compress
165
172
  assert encrypted = SymmetricEncryption.encrypt(@social_security_number, true, true)
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: symmetric-encryption
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.9.0
4
+ version: 3.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reid Morrison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-25 00:00:00.000000000 Z
11
+ date: 2017-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: coercible