symmetric-encryption 3.9.0 → 3.9.1

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.
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