symmetric-encryption 3.8.2 → 3.8.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -9
- data/lib/symmetric_encryption/cipher.rb +2 -2
- data/lib/symmetric_encryption/coerce.rb +18 -1
- data/lib/symmetric_encryption/extensions/active_record/base.rb +1 -1
- data/lib/symmetric_encryption/extensions/mongo_mapper/plugins/encrypted_key.rb +7 -7
- data/lib/symmetric_encryption/extensions/mongoid/encrypted.rb +7 -7
- data/lib/symmetric_encryption/generator.rb +3 -3
- data/lib/symmetric_encryption/version.rb +1 -1
- data/lib/symmetric_encryption/writer.rb +2 -2
- data/test/active_record_test.rb +82 -74
- data/test/cipher_test.rb +26 -26
- data/test/config/mongoid_v5.yml +9 -0
- data/test/mongo_mapper_test.rb +88 -88
- data/test/mongoid_test.rb +98 -90
- data/test/reader_test.rb +17 -18
- data/test/symmetric_encryption_test.rb +62 -62
- data/test/test_db.sqlite3 +0 -0
- data/test/test_helper.rb +8 -2
- data/test/writer_test.rb +4 -4
- metadata +6 -4
data/test/reader_test.rb
CHANGED
@@ -9,7 +9,7 @@ class ReaderTest < Minitest::Test
|
|
9
9
|
@data = [
|
10
10
|
"Hello World\n",
|
11
11
|
"Keep this secret\n",
|
12
|
-
|
12
|
+
'And keep going even further and further...'
|
13
13
|
]
|
14
14
|
@data_str = @data.inject('') { |sum, str| sum << str }
|
15
15
|
@data_len = @data_str.length
|
@@ -19,7 +19,7 @@ class ReaderTest < Minitest::Test
|
|
19
19
|
|
20
20
|
@data_encrypted_with_header = SymmetricEncryption::Cipher.build_header(
|
21
21
|
@cipher.version,
|
22
|
-
|
22
|
+
false,
|
23
23
|
@cipher.send(:iv),
|
24
24
|
@cipher.send(:key),
|
25
25
|
@cipher.cipher_name
|
@@ -59,7 +59,7 @@ class ReaderTest < Minitest::Test
|
|
59
59
|
stream = StringIO.new(@data_encrypted)
|
60
60
|
i = 0
|
61
61
|
# Version 0 supplied if the file/stream does not have a header
|
62
|
-
|
62
|
+
SymmetricEncryption::Reader.open(stream, version: 0) do |file|
|
63
63
|
file.each_line do |line|
|
64
64
|
assert_equal @data[i], line
|
65
65
|
i += 1
|
@@ -69,9 +69,8 @@ class ReaderTest < Minitest::Test
|
|
69
69
|
|
70
70
|
it "#read(size)" do
|
71
71
|
stream = StringIO.new(@data_encrypted)
|
72
|
-
i = 0
|
73
72
|
# Version 0 supplied if the file/stream does not have a header
|
74
|
-
|
73
|
+
SymmetricEncryption::Reader.open(stream, version: 0) do |file|
|
75
74
|
index = 0
|
76
75
|
[0, 10, 5, 5000].each do |size|
|
77
76
|
buf = file.read(size)
|
@@ -155,7 +154,7 @@ class ReaderTest < Minitest::Test
|
|
155
154
|
end
|
156
155
|
end
|
157
156
|
|
158
|
-
it
|
157
|
+
it '.open return Zlib::GzipReader when compressed' do
|
159
158
|
file = SymmetricEncryption::Reader.open(@filename)
|
160
159
|
#assert_equal (@header && (options[:compress]||false)), file.is_a?(Zlib::GzipReader)
|
161
160
|
file.close
|
@@ -184,7 +183,7 @@ class ReaderTest < Minitest::Test
|
|
184
183
|
end
|
185
184
|
|
186
185
|
it "#each_line" do
|
187
|
-
|
186
|
+
SymmetricEncryption::Reader.open(@filename) do |file|
|
188
187
|
i = 0
|
189
188
|
file.each_line do |line|
|
190
189
|
assert_equal @data[i], line
|
@@ -223,7 +222,7 @@ class ReaderTest < Minitest::Test
|
|
223
222
|
end
|
224
223
|
|
225
224
|
it "#gets(delim)" do
|
226
|
-
|
225
|
+
SymmetricEncryption::Reader.open(@filename) do |file|
|
227
226
|
i = 0
|
228
227
|
while line = file.gets("\n")
|
229
228
|
assert_equal @data[i], line
|
@@ -234,9 +233,9 @@ class ReaderTest < Minitest::Test
|
|
234
233
|
end
|
235
234
|
|
236
235
|
it "#gets(delim,size)" do
|
237
|
-
|
236
|
+
SymmetricEncryption::Reader.open(@filename) do |file|
|
238
237
|
i = 0
|
239
|
-
while
|
238
|
+
while file.gets("\n", 128)
|
240
239
|
i += 1
|
241
240
|
end
|
242
241
|
assert_equal (@data_size > 0 ? 3 : 0), i
|
@@ -247,7 +246,7 @@ class ReaderTest < Minitest::Test
|
|
247
246
|
end
|
248
247
|
end
|
249
248
|
|
250
|
-
describe
|
249
|
+
describe 'reading from files with previous keys' do
|
251
250
|
before do
|
252
251
|
@filename = '_test'
|
253
252
|
# Create encrypted file with old encryption key
|
@@ -260,13 +259,13 @@ class ReaderTest < Minitest::Test
|
|
260
259
|
File.delete(@filename) if File.exist?(@filename)
|
261
260
|
end
|
262
261
|
|
263
|
-
it
|
262
|
+
it 'decrypt from file in a single read' do
|
264
263
|
decrypted = SymmetricEncryption::Reader.open(@filename) { |file| file.read }
|
265
264
|
assert_equal @data_str, decrypted
|
266
265
|
end
|
267
266
|
|
268
|
-
it
|
269
|
-
|
267
|
+
it 'decrypt from file a line at a time' do
|
268
|
+
SymmetricEncryption::Reader.open(@filename) do |file|
|
270
269
|
i = 0
|
271
270
|
file.each_line do |line|
|
272
271
|
assert_equal @data[i], line
|
@@ -275,7 +274,7 @@ class ReaderTest < Minitest::Test
|
|
275
274
|
end
|
276
275
|
end
|
277
276
|
|
278
|
-
it
|
277
|
+
it 'support rewind' do
|
279
278
|
decrypted = SymmetricEncryption::Reader.open(@filename) do |file|
|
280
279
|
file.read
|
281
280
|
file.rewind
|
@@ -285,7 +284,7 @@ class ReaderTest < Minitest::Test
|
|
285
284
|
end
|
286
285
|
end
|
287
286
|
|
288
|
-
describe
|
287
|
+
describe 'reading from files with previous keys without a header' do
|
289
288
|
before do
|
290
289
|
@filename = '_test'
|
291
290
|
# Create encrypted file with old encryption key
|
@@ -302,12 +301,12 @@ class ReaderTest < Minitest::Test
|
|
302
301
|
end
|
303
302
|
end
|
304
303
|
|
305
|
-
it
|
304
|
+
it 'decrypt from file in a single read' do
|
306
305
|
decrypted = SymmetricEncryption::Reader.open(@filename, version: 0) { |file| file.read }
|
307
306
|
assert_equal @data_str, decrypted
|
308
307
|
end
|
309
308
|
|
310
|
-
it
|
309
|
+
it 'decrypt from file in a single read with different version' do
|
311
310
|
# Should fail since file was encrypted using version 0 key
|
312
311
|
assert_raises OpenSSL::Cipher::CipherError do
|
313
312
|
SymmetricEncryption::Reader.open(@filename, version: 2) { |file| file.read }
|
@@ -54,7 +54,7 @@ class SymmetricEncryptionTest < Minitest::Test
|
|
54
54
|
when :base16
|
55
55
|
'40456e4302004bef17d4d46ba9d7c4210c851d53ee54'
|
56
56
|
when :none
|
57
|
-
"@EnC\x02\x00K\xEF\x17\xD4\xD4k\xA9\xD7\xC4!\f\x85\x1DS\xEET".force_encoding(Encoding.find(
|
57
|
+
"@EnC\x02\x00K\xEF\x17\xD4\xD4k\xA9\xD7\xC4!\f\x85\x1DS\xEET".force_encoding(Encoding.find('binary'))
|
58
58
|
else
|
59
59
|
raise "Add test for encoding: #{encoding}"
|
60
60
|
end
|
@@ -68,11 +68,11 @@ class SymmetricEncryptionTest < Minitest::Test
|
|
68
68
|
SymmetricEncryption.cipher.encoding = @encoding
|
69
69
|
end
|
70
70
|
|
71
|
-
it
|
71
|
+
it 'encrypt simple string' do
|
72
72
|
assert_equal @social_security_number_encrypted, SymmetricEncryption.encrypt(@social_security_number)
|
73
73
|
end
|
74
74
|
|
75
|
-
it
|
75
|
+
it 'decrypt string' do
|
76
76
|
assert decrypted = SymmetricEncryption.decrypt(@social_security_number_encrypted)
|
77
77
|
assert_equal @social_security_number, decrypted
|
78
78
|
assert_equal Encoding.find('utf-8'), decrypted.encoding, decrypted
|
@@ -88,7 +88,7 @@ class SymmetricEncryptionTest < Minitest::Test
|
|
88
88
|
assert_equal @non_utf8, decrypted
|
89
89
|
end
|
90
90
|
|
91
|
-
it
|
91
|
+
it 'return nil when encrypting nil' do
|
92
92
|
assert_equal nil, SymmetricEncryption.encrypt(nil)
|
93
93
|
end
|
94
94
|
|
@@ -96,7 +96,7 @@ class SymmetricEncryptionTest < Minitest::Test
|
|
96
96
|
assert_equal '', SymmetricEncryption.encrypt('')
|
97
97
|
end
|
98
98
|
|
99
|
-
it
|
99
|
+
it 'return nil when decrypting nil' do
|
100
100
|
assert_equal nil, SymmetricEncryption.decrypt(nil)
|
101
101
|
end
|
102
102
|
|
@@ -104,16 +104,16 @@ class SymmetricEncryptionTest < Minitest::Test
|
|
104
104
|
assert_equal '', SymmetricEncryption.decrypt('')
|
105
105
|
end
|
106
106
|
|
107
|
-
it
|
107
|
+
it 'determine if string is encrypted' do
|
108
108
|
assert_equal true, SymmetricEncryption.encrypted?(@social_security_number_encrypted)
|
109
109
|
assert_equal false, SymmetricEncryption.encrypted?(@social_security_number)
|
110
110
|
end
|
111
111
|
end
|
112
112
|
end
|
113
113
|
|
114
|
-
describe
|
114
|
+
describe 'using select_cipher' do
|
115
115
|
before do
|
116
|
-
@social_security_number =
|
116
|
+
@social_security_number = '987654321'
|
117
117
|
# Encrypt data without a header and encode with base64 which has a trailing '\n'
|
118
118
|
@encrypted_0_ssn = SymmetricEncryption.cipher(0).encode(SymmetricEncryption.cipher(0).binary_encrypt(@social_security_number, false, false, false))
|
119
119
|
|
@@ -129,164 +129,164 @@ class SymmetricEncryptionTest < Minitest::Test
|
|
129
129
|
SymmetricEncryption.select_cipher
|
130
130
|
end
|
131
131
|
|
132
|
-
it
|
132
|
+
it 'decrypt string without a header using an old cipher' do
|
133
133
|
assert_equal @social_security_number, SymmetricEncryption.decrypt(@encrypted_0_ssn)
|
134
134
|
end
|
135
135
|
end
|
136
136
|
|
137
|
-
describe
|
137
|
+
describe 'without select_cipher' do
|
138
138
|
before do
|
139
|
-
@social_security_number =
|
139
|
+
@social_security_number = '987654321'
|
140
140
|
# Encrypt data without a header and encode with base64 which has a trailing '\n'
|
141
141
|
assert @encrypted_0_ssn = SymmetricEncryption.cipher(0).encode(SymmetricEncryption.cipher(0).binary_encrypt(@social_security_number, false, false, false))
|
142
142
|
end
|
143
143
|
|
144
|
-
it
|
144
|
+
it 'decrypt string without a header using an old cipher' do
|
145
145
|
assert_raises OpenSSL::Cipher::CipherError do
|
146
146
|
SymmetricEncryption.decrypt(@encrypted_0_ssn)
|
147
147
|
end
|
148
148
|
end
|
149
149
|
end
|
150
150
|
|
151
|
-
describe
|
151
|
+
describe 'random iv' do
|
152
152
|
before do
|
153
|
-
@social_security_number =
|
153
|
+
@social_security_number = '987654321'
|
154
154
|
end
|
155
155
|
|
156
|
-
it
|
156
|
+
it 'encrypt and then decrypt using random iv' do
|
157
157
|
# Encrypt with random iv
|
158
|
-
assert encrypted = SymmetricEncryption.encrypt(@social_security_number,
|
158
|
+
assert encrypted = SymmetricEncryption.encrypt(@social_security_number, true)
|
159
159
|
assert_equal true, SymmetricEncryption.encrypted?(encrypted)
|
160
160
|
assert_equal @social_security_number, SymmetricEncryption.decrypt(encrypted)
|
161
161
|
end
|
162
162
|
|
163
|
-
it
|
163
|
+
it 'encrypt and then decrypt using random iv with compression' do
|
164
164
|
# Encrypt with random iv and compress
|
165
|
-
assert encrypted = SymmetricEncryption.encrypt(@social_security_number,
|
165
|
+
assert encrypted = SymmetricEncryption.encrypt(@social_security_number, true, true)
|
166
166
|
assert_equal true, SymmetricEncryption.encrypted?(encrypted)
|
167
167
|
assert_equal @social_security_number, SymmetricEncryption.decrypt(encrypted)
|
168
168
|
end
|
169
169
|
end
|
170
170
|
|
171
|
-
describe
|
172
|
-
describe
|
171
|
+
describe 'data types' do
|
172
|
+
describe 'string' do
|
173
173
|
before do
|
174
|
-
@social_security_number =
|
174
|
+
@social_security_number = '987654321'
|
175
175
|
end
|
176
176
|
|
177
|
-
it
|
178
|
-
assert encrypted = SymmetricEncryption.encrypt(@social_security_number,
|
177
|
+
it 'encrypt and decrypt value to and from a string' do
|
178
|
+
assert encrypted = SymmetricEncryption.encrypt(@social_security_number, false, false, :string)
|
179
179
|
assert_equal true, SymmetricEncryption.encrypted?(encrypted)
|
180
|
-
assert_equal @social_security_number, SymmetricEncryption.decrypt(encrypted,
|
180
|
+
assert_equal @social_security_number, SymmetricEncryption.decrypt(encrypted, nil, :string)
|
181
181
|
end
|
182
182
|
end
|
183
183
|
|
184
|
-
describe
|
184
|
+
describe 'integer' do
|
185
185
|
before do
|
186
186
|
@age = 21
|
187
187
|
end
|
188
188
|
|
189
|
-
it
|
190
|
-
assert encrypted = SymmetricEncryption.encrypt(@age,
|
189
|
+
it 'encrypt and decrypt value to and from an integer' do
|
190
|
+
assert encrypted = SymmetricEncryption.encrypt(@age, false, false, :integer)
|
191
191
|
assert_equal true, SymmetricEncryption.encrypted?(encrypted)
|
192
|
-
assert_equal @age, SymmetricEncryption.decrypt(encrypted,
|
192
|
+
assert_equal @age, SymmetricEncryption.decrypt(encrypted, nil, :integer)
|
193
193
|
end
|
194
194
|
end
|
195
195
|
|
196
|
-
describe
|
196
|
+
describe 'float' do
|
197
197
|
before do
|
198
198
|
@miles = 2.5
|
199
199
|
end
|
200
200
|
|
201
|
-
it
|
202
|
-
assert encrypted = SymmetricEncryption.encrypt(@miles,
|
201
|
+
it 'encrypt and decrypt value to and from a float' do
|
202
|
+
assert encrypted = SymmetricEncryption.encrypt(@miles, false, false, :float)
|
203
203
|
assert_equal true, SymmetricEncryption.encrypted?(encrypted)
|
204
|
-
assert_equal @miles, SymmetricEncryption.decrypt(encrypted,
|
204
|
+
assert_equal @miles, SymmetricEncryption.decrypt(encrypted, nil, :float)
|
205
205
|
end
|
206
206
|
end
|
207
207
|
|
208
|
-
describe
|
208
|
+
describe 'decimal' do
|
209
209
|
before do
|
210
|
-
@account_balance = BigDecimal.new(
|
210
|
+
@account_balance = BigDecimal.new('12.58')
|
211
211
|
end
|
212
212
|
|
213
|
-
it
|
214
|
-
assert encrypted = SymmetricEncryption.encrypt(@account_balance,
|
213
|
+
it 'encrypt and decrypt value to and from a BigDecimal' do
|
214
|
+
assert encrypted = SymmetricEncryption.encrypt(@account_balance, false, false, :decimal)
|
215
215
|
assert_equal true, SymmetricEncryption.encrypted?(encrypted)
|
216
|
-
assert_equal @account_balance, SymmetricEncryption.decrypt(encrypted,
|
216
|
+
assert_equal @account_balance, SymmetricEncryption.decrypt(encrypted, nil, :decimal)
|
217
217
|
end
|
218
218
|
end
|
219
219
|
|
220
|
-
describe
|
220
|
+
describe 'datetime' do
|
221
221
|
before do
|
222
222
|
@checked_in_at = DateTime.new(2001, 11, 26, 20, 55, 54, "-5")
|
223
223
|
end
|
224
224
|
|
225
|
-
it
|
226
|
-
assert encrypted = SymmetricEncryption.encrypt(@checked_in_at,
|
225
|
+
it 'encrypt and decrypt value to and from a DateTime' do
|
226
|
+
assert encrypted = SymmetricEncryption.encrypt(@checked_in_at, false, false, :datetime)
|
227
227
|
assert_equal true, SymmetricEncryption.encrypted?(encrypted)
|
228
|
-
assert_equal @checked_in_at, SymmetricEncryption.decrypt(encrypted,
|
228
|
+
assert_equal @checked_in_at, SymmetricEncryption.decrypt(encrypted, nil, :datetime)
|
229
229
|
end
|
230
230
|
end
|
231
231
|
|
232
|
-
describe
|
232
|
+
describe 'time' do
|
233
233
|
before do
|
234
234
|
@closing_time = Time.new(2013, 01, 01, 22, 30, 00, "-04:00")
|
235
235
|
end
|
236
236
|
|
237
|
-
it
|
238
|
-
assert encrypted = SymmetricEncryption.encrypt(@closing_time,
|
237
|
+
it 'encrypt and decrypt value to and from a Time' do
|
238
|
+
assert encrypted = SymmetricEncryption.encrypt(@closing_time, false, false, :time)
|
239
239
|
assert_equal true, SymmetricEncryption.encrypted?(encrypted)
|
240
|
-
assert_equal @closing_time, SymmetricEncryption.decrypt(encrypted,
|
240
|
+
assert_equal @closing_time, SymmetricEncryption.decrypt(encrypted, nil, :time)
|
241
241
|
end
|
242
242
|
end
|
243
243
|
|
244
|
-
describe
|
244
|
+
describe 'date' do
|
245
245
|
before do
|
246
246
|
@birthdate = Date.new(1927, 04, 01)
|
247
247
|
end
|
248
248
|
|
249
|
-
it
|
250
|
-
assert encrypted = SymmetricEncryption.encrypt(@birthdate,
|
249
|
+
it 'encrypt and decrypt value to and from a Date' do
|
250
|
+
assert encrypted = SymmetricEncryption.encrypt(@birthdate, false, false, :date)
|
251
251
|
assert_equal true, SymmetricEncryption.encrypted?(encrypted)
|
252
|
-
assert_equal @birthdate, SymmetricEncryption.decrypt(encrypted,
|
252
|
+
assert_equal @birthdate, SymmetricEncryption.decrypt(encrypted, nil, :date)
|
253
253
|
end
|
254
254
|
end
|
255
255
|
|
256
|
-
describe
|
257
|
-
describe
|
256
|
+
describe 'boolean' do
|
257
|
+
describe 'when true' do
|
258
258
|
before do
|
259
259
|
@is_working = true
|
260
260
|
end
|
261
261
|
|
262
|
-
it
|
263
|
-
assert encrypted = SymmetricEncryption.encrypt(@is_working,
|
262
|
+
it 'encrypt and decrypt a true value to and from a boolean' do
|
263
|
+
assert encrypted = SymmetricEncryption.encrypt(@is_working, false, false, :boolean)
|
264
264
|
assert_equal true, SymmetricEncryption.encrypted?(encrypted)
|
265
|
-
assert_equal @is_working, SymmetricEncryption.decrypt(encrypted,
|
265
|
+
assert_equal @is_working, SymmetricEncryption.decrypt(encrypted, nil, :boolean)
|
266
266
|
end
|
267
267
|
end
|
268
268
|
|
269
|
-
describe
|
269
|
+
describe 'when false' do
|
270
270
|
before do
|
271
271
|
@is_broken = false
|
272
272
|
end
|
273
273
|
|
274
|
-
it
|
275
|
-
assert encrypted = SymmetricEncryption.encrypt(@is_broken,
|
274
|
+
it 'encrypt and decrypt a false value to and from a boolean' do
|
275
|
+
assert encrypted = SymmetricEncryption.encrypt(@is_broken, false, false, :boolean)
|
276
276
|
assert_equal true, SymmetricEncryption.encrypted?(encrypted)
|
277
|
-
assert_equal @is_broken, SymmetricEncryption.decrypt(encrypted,
|
277
|
+
assert_equal @is_broken, SymmetricEncryption.decrypt(encrypted, nil, :boolean)
|
278
278
|
end
|
279
279
|
end
|
280
280
|
|
281
|
-
describe
|
281
|
+
describe 'when yaml' do
|
282
282
|
before do
|
283
283
|
@test = {:a => :b}
|
284
284
|
end
|
285
285
|
|
286
|
-
it
|
287
|
-
assert encrypted = SymmetricEncryption.encrypt(@test,
|
286
|
+
it 'encrypt and decrypt a false value to and from a boolean' do
|
287
|
+
assert encrypted = SymmetricEncryption.encrypt(@test, false, false, :yaml)
|
288
288
|
assert_equal true, SymmetricEncryption.encrypted?(encrypted)
|
289
|
-
assert_equal @test, SymmetricEncryption.decrypt(encrypted,
|
289
|
+
assert_equal @test, SymmetricEncryption.decrypt(encrypted, nil, :yaml)
|
290
290
|
end
|
291
291
|
end
|
292
292
|
|
data/test/test_db.sqlite3
CHANGED
Binary file
|
data/test/test_helper.rb
CHANGED
@@ -10,9 +10,15 @@ require 'active_record'
|
|
10
10
|
require 'symmetric-encryption'
|
11
11
|
require 'awesome_print'
|
12
12
|
|
13
|
-
|
13
|
+
begin
|
14
|
+
require 'active_model/serializers'
|
15
|
+
rescue LoadError
|
16
|
+
# Only used when running Rails 5 and MongoMapper
|
17
|
+
end
|
14
18
|
|
15
|
-
|
19
|
+
#Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
|
20
|
+
|
21
|
+
SemanticLogger.add_appender(file_name: 'test.log', formatter: :color)
|
16
22
|
SemanticLogger.default_level = :trace
|
17
23
|
|
18
24
|
# Load Symmetric Encryption keys
|
data/test/writer_test.rb
CHANGED
@@ -9,7 +9,7 @@ class WriterTest < Minitest::Test
|
|
9
9
|
@data = [
|
10
10
|
"Hello World\n",
|
11
11
|
"Keep this secret\n",
|
12
|
-
|
12
|
+
'And keep going even further and further...'
|
13
13
|
]
|
14
14
|
@data_str = @data.inject('') { |sum, str| sum << str }
|
15
15
|
@data_len = @data_str.length
|
@@ -25,7 +25,7 @@ class WriterTest < Minitest::Test
|
|
25
25
|
File.delete(@filename) if File.exist?(@filename)
|
26
26
|
end
|
27
27
|
|
28
|
-
it
|
28
|
+
it 'encrypt to string stream' do
|
29
29
|
stream = StringIO.new
|
30
30
|
file = SymmetricEncryption::Writer.new(stream, header: false, random_key: false, random_iv: false)
|
31
31
|
written_len = @data.inject(0) { |sum, str| sum + file.write(str) }
|
@@ -38,7 +38,7 @@ class WriterTest < Minitest::Test
|
|
38
38
|
assert_equal @data_encrypted, result
|
39
39
|
end
|
40
40
|
|
41
|
-
it
|
41
|
+
it 'encrypt to string stream using .open' do
|
42
42
|
written_len = 0
|
43
43
|
stream = StringIO.new
|
44
44
|
SymmetricEncryption::Writer.open(stream) do |file|
|
@@ -48,7 +48,7 @@ class WriterTest < Minitest::Test
|
|
48
48
|
assert_equal @data_len, written_len
|
49
49
|
end
|
50
50
|
|
51
|
-
it
|
51
|
+
it 'encrypt to file using .open' do
|
52
52
|
written_len = nil
|
53
53
|
SymmetricEncryption::Writer.open(@filename, header: false, random_key: false, random_iv: false) do |file|
|
54
54
|
written_len = @data.inject(0) { |sum, str| sum + file.write(str) }
|