rubythemis 0.9.2 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rubythemis.rb +41 -41
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b9d86848a6e79af3e64bb73c9f7398d7a21798ab
4
- data.tar.gz: 3fafdff57341e45fa5a2a5594c26a44aaf073333
3
+ metadata.gz: 010a5172a65b943185448f107916d3bab8433f79
4
+ data.tar.gz: 9d24683b1218f954d2733348d02806981711d070
5
5
  SHA512:
6
- metadata.gz: ac6285f33af9355895a06f219edf4c182e738abf708d243d259b83c0d41d3b93f2318d2eadd0f8e127eec6ce86487ec8da503ad4fbfc0516d731af3e7b7aae1a
7
- data.tar.gz: 555da9a428bf300666444ac0df91b129450b297678c7b0e583fb1746edb269789c6c568ea7413c04e679c99b6e028e07c6cadfc6f06ebfde15c6b6dd5d9d7fe2
6
+ metadata.gz: 431df4be161fe1fd0b002ed3b4fc29ef4406a206977c7cb532faeffb2b963dda0413590ff77d4ba60e4ba47f6bf621d575f077ac993d096ad109c6fa23a85278
7
+ data.tar.gz: 2bb25ba4d01363b9f139af7693fb16eb4bbc98d3dacbb1ba3eb7dddc15cd80e4a51c0b10354a6c7c1dc5157a3fb6faf4b91f1833a1585a6faa4887a0f4bd215a
data/lib/rubythemis.rb CHANGED
@@ -112,11 +112,11 @@ module Themis
112
112
  private_key_length=FFI::MemoryPointer.new(:uint)
113
113
  public_key_length= FFI::MemoryPointer.new(:uint)
114
114
  res=themis_gen_ec_key_pair(nil, private_key_length, nil, public_key_length)
115
- raise ThemisError, "themis_gen_ec_key_pair (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
115
+ raise ThemisError, "Themis failed generating EC KeyPair: #{res}" unless res == BUFFER_TOO_SMALL
116
116
  private_key = FFI::MemoryPointer.new(:char, private_key_length.read_uint)
117
117
  public_key = FFI::MemoryPointer.new(:char, public_key_length.read_uint)
118
118
  res=themis_gen_ec_key_pair(private_key, private_key_length, public_key, public_key_length)
119
- raise ThemisError, "themis_gen_ec_key_pair error: #{res}" unless res == SUCCESS
119
+ raise ThemisError, "Themis failed generating EC KeyPair: #{res}" unless res == SUCCESS
120
120
  return private_key.get_bytes(0, private_key_length.read_uint), public_key.get_bytes(0, public_key_length.read_uint)
121
121
  end
122
122
 
@@ -124,11 +124,11 @@ module Themis
124
124
  private_key_length=FFI::MemoryPointer.new(:uint)
125
125
  public_key_length= FFI::MemoryPointer.new(:uint)
126
126
  res=themis_gen_rsa_key_pair(nil, private_key_length, nil, public_key_length)
127
- raise ThemisError, "themis_gen_ec_key_pair (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
127
+ raise ThemisError, "Themis failed generating RSA KeyPair: #{res}" unless res == BUFFER_TOO_SMALL
128
128
  private_key = FFI::MemoryPointer.new(:char, private_key_length.read_uint)
129
129
  public_key = FFI::MemoryPointer.new(:char, public_key_length.read_uint)
130
130
  res=themis_gen_rsa_key_pair(private_key, private_key_length, public_key, public_key_length)
131
- raise ThemisError, "themis_gen_ec_key_pair error: #{res}" unless res == SUCCESS
131
+ raise ThemisError, "Themis failed generating RSA KeyPair: #{res}" unless res == SUCCESS
132
132
  return private_key.get_bytes(0, private_key_length.read_uint), public_key.get_bytes(0, public_key_length.read_uint)
133
133
  end
134
134
  end
@@ -157,7 +157,7 @@ module Themis
157
157
  @callbacks[:user_data] = FFI::MemoryPointer.new(:uint64)
158
158
  @callbacks[:user_data].write_uint64(@transport_obj_id)
159
159
  @session=secure_session_create(id_buf, id_length, private_key_buf, private_key_length, @callbacks);
160
- raise ThemisError, "secure_session_create error" unless @session
160
+ raise ThemisError, "Secure Session failed creating" unless @session
161
161
  end
162
162
 
163
163
  def is_established()
@@ -167,10 +167,10 @@ module Themis
167
167
  def connect_request()
168
168
  connect_request_length = FFI::MemoryPointer.new(:uint)
169
169
  res=secure_session_generate_connect_request(@session, nil, connect_request_length)
170
- raise ThemisError, "secure_session_generate_connect_request (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
170
+ raise ThemisError, "Secure Session failed making connection request: #{res}" unless res == BUFFER_TOO_SMALL
171
171
  connect_request = FFI::MemoryPointer.new(:char, connect_request_length.read_uint)
172
172
  res=secure_session_generate_connect_request(@session, connect_request, connect_request_length)
173
- raise ThemisError, "secure_session_generate_connect_request error: #{res}" unless res == SUCCESS
173
+ raise ThemisError, "Secure Session failed making connection request: #{res}" unless res == SUCCESS
174
174
  return connect_request.get_bytes(0, connect_request_length.read_uint);
175
175
  end
176
176
 
@@ -178,13 +178,13 @@ module Themis
178
178
  message_, message_length_=string_to_pointer_size(message)
179
179
  unwrapped_message_length = FFI::MemoryPointer.new(:uint)
180
180
  res=secure_session_unwrap(@session, message_, message_length_, nil, unwrapped_message_length)
181
- raise ThemisError, "secure_session_unwrap (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL || res == SUCCESS
181
+ raise ThemisError, "Secure Session failed decrypting: #{res}" unless res == BUFFER_TOO_SMALL || res == SUCCESS
182
182
  if res == SUCCESS
183
183
  return SUCCESS, ""
184
184
  end
185
185
  unwrapped_message = FFI::MemoryPointer.new(:char, unwrapped_message_length.read_uint)
186
186
  res=secure_session_unwrap(@session, message_, message_length_, unwrapped_message, unwrapped_message_length)
187
- raise ThemisError, "secure_session_unwrap error: #{res}" unless res == SUCCESS || res == SEND_AS_IS
187
+ raise ThemisError, "Secure Session failed decrypting: #{res}" unless res == SUCCESS || res == SEND_AS_IS
188
188
  return res, unwrapped_message.get_bytes(0, unwrapped_message_length.read_uint);
189
189
  end
190
190
 
@@ -192,16 +192,16 @@ module Themis
192
192
  message_, message_length_=string_to_pointer_size(message)
193
193
  wrapped_message_length = FFI::MemoryPointer.new(:uint)
194
194
  res=secure_session_wrap(@session, message_, message_length_, nil, wrapped_message_length)
195
- raise ThemisError, "secure_session_wrap (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
195
+ raise ThemisError, "Secure Session failed encrypting: #{res}" unless res == BUFFER_TOO_SMALL
196
196
  wrapped_message = FFI::MemoryPointer.new(:char, wrapped_message_length.read_uint)
197
197
  res=secure_session_wrap(@session, message_, message_length_, wrapped_message, wrapped_message_length)
198
- raise ThemisError, "secure_session_wrap error: #{res}" unless res == SUCCESS || res == SEND_AS_IS
198
+ raise ThemisError, "Secure Session failed encrypting: #{res}" unless res == SUCCESS || res == SEND_AS_IS
199
199
  return wrapped_message.get_bytes(0, wrapped_message_length.read_uint);
200
200
  end
201
201
 
202
202
  def finalize
203
203
  res=secure_session_destroy(@session)
204
- raise ThemisError, "secure_session_destroy error" unless res == SUCCESS
204
+ raise ThemisError, "Secure Session failed destroying" unless res == SUCCESS
205
205
 
206
206
  end
207
207
  end
@@ -218,10 +218,10 @@ module Themis
218
218
  message_, message_length_=string_to_pointer_size(message)
219
219
  wrapped_message_length = FFI::MemoryPointer.new(:uint)
220
220
  res=themis_secure_message_wrap(@private_key, @private_key_length, @peer_public_key, @peer_public_key_length, message_, message_length_, nil, wrapped_message_length)
221
- raise ThemisError, "themis_secure_message_wrap (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
221
+ raise ThemisError, "Secure Message failed encrypting: #{res}" unless res == BUFFER_TOO_SMALL
222
222
  wrapped_message = FFI::MemoryPointer.new(:char, wrapped_message_length.read_uint)
223
223
  res=themis_secure_message_wrap(@private_key, @private_key_length, @peer_public_key, @peer_public_key_length, message_, message_length_, wrapped_message, wrapped_message_length)
224
- raise ThemisError, "themis_secure_message_wrap error: #{res}" unless res == SUCCESS
224
+ raise ThemisError, "Secure Message failed encrypting: #{res}" unless res == SUCCESS
225
225
  return wrapped_message.get_bytes(0, wrapped_message_length.read_uint);
226
226
  end
227
227
 
@@ -229,10 +229,10 @@ module Themis
229
229
  message_, message_length_=string_to_pointer_size(message)
230
230
  unwrapped_message_length = FFI::MemoryPointer.new(:uint)
231
231
  res=themis_secure_message_unwrap(@private_key, @private_key_length, @peer_public_key, @peer_public_key_length, message_, message_length_, nil, unwrapped_message_length)
232
- raise ThemisError, "themis_secure_message_unwrap (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
232
+ raise ThemisError, "Secure Message failed decrypting: #{res}" unless res == BUFFER_TOO_SMALL
233
233
  unwrapped_message = FFI::MemoryPointer.new(:char, unwrapped_message_length.read_uint)
234
234
  res=themis_secure_message_unwrap(@private_key, @private_key_length, @peer_public_key, @peer_public_key_length, message_, message_length_, unwrapped_message, unwrapped_message_length)
235
- raise ThemisError, "themis_secure_message_unwrap error: #{res}" unless res == SUCCESS
235
+ raise ThemisError, "Secure Message failed decrypting: #{res}" unless res == SUCCESS
236
236
  return unwrapped_message.get_bytes(0, unwrapped_message_length.read_uint);
237
237
  end
238
238
  end
@@ -242,10 +242,10 @@ module Themis
242
242
  message_, message_length_=string_to_pointer_size(message)
243
243
  wrapped_message_length = FFI::MemoryPointer.new(:uint)
244
244
  res=themis_secure_message_wrap(private_key_, private_key_length_, nil, 0, message_, message_length_, nil, wrapped_message_length)
245
- raise ThemisError, "themis_secure_message_wrap (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
245
+ raise ThemisError, "Secure Message failed singing: #{res}" unless res == BUFFER_TOO_SMALL
246
246
  wrapped_message = FFI::MemoryPointer.new(:char, wrapped_message_length.read_uint)
247
247
  res=themis_secure_message_wrap(private_key_, private_key_length_, nil, 0, message_, message_length_, wrapped_message, wrapped_message_length)
248
- raise ThemisError, "themis_secure_message_wrap error: #{res}" unless res == SUCCESS
248
+ raise ThemisError, "Secure Message failed singing: #{res}" unless res == SUCCESS
249
249
  return wrapped_message.get_bytes(0, wrapped_message_length.read_uint);
250
250
  end
251
251
 
@@ -256,10 +256,10 @@ module Themis
256
256
  message_, message_length_=string_to_pointer_size(message)
257
257
  unwrapped_message_length = FFI::MemoryPointer.new(:uint)
258
258
  res=themis_secure_message_unwrap(nil, 0, public_key_, public_key_length_, message_, message_length_, nil, unwrapped_message_length)
259
- raise ThemisError, "themis_secure_message_unwrap (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
259
+ raise ThemisError, "Secure Message failed verifying: #{res}" unless res == BUFFER_TOO_SMALL
260
260
  unwrapped_message = FFI::MemoryPointer.new(:char, unwrapped_message_length.read_uint)
261
261
  res=themis_secure_message_unwrap(nil, 0, public_key_, public_key_length_, message_, message_length_, unwrapped_message, unwrapped_message_length)
262
- raise ThemisError, "themis_secure_message_unwrap error: #{res}" unless res == SUCCESS
262
+ raise ThemisError, "Secure Message failed verifying: #{res}" unless res == SUCCESS
263
263
  return unwrapped_message.get_bytes(0, unwrapped_message_length.read_uint);
264
264
  end
265
265
 
@@ -284,28 +284,28 @@ module Themis
284
284
  case @mode
285
285
  when SEAL_MODE
286
286
  res=themis_secure_cell_encrypt_seal(@key, @key_length, context_, context_length_, message_, message_length_, nil, encrypted_message_length)
287
- raise ThemisError, "themis_secure_cell_encrypt_seal (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
287
+ raise ThemisError, "Secure Cell (Seal) failed encrypting: #{res}" unless res == BUFFER_TOO_SMALL
288
288
  encrypted_message = FFI::MemoryPointer.new(:char, encrypted_message_length.read_uint)
289
289
  res=themis_secure_cell_encrypt_seal(@key, @key_length, context_, context_length_, message_, message_length_, encrypted_message, encrypted_message_length)
290
- raise ThemisError, "themis_secure_cell_encrypt_seal error: #{res}" unless res == SUCCESS
290
+ raise ThemisError, "Secure Cell (Seal) failed encrypting: #{res}" unless res == SUCCESS
291
291
  return encrypted_message.get_bytes(0, encrypted_message_length.read_uint)
292
292
  when TOKEN_PROTECT_MODE
293
293
  res=themis_secure_cell_encrypt_token_protect(@key, @key_length, context_, context_length_, message_, message_length_, nil, enccontext_length, nil, encrypted_message_length)
294
- raise ThemisError, "themis_secure_cell_encrypt_token_protect (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
294
+ raise ThemisError, "Secure Cell (Token protect) failed encrypting: #{res}" unless res == BUFFER_TOO_SMALL
295
295
  encrypted_message = FFI::MemoryPointer.new(:char, encrypted_message_length.read_uint)
296
296
  enccontext = FFI::MemoryPointer.new(:char, enccontext_length.read_uint)
297
297
  res=themis_secure_cell_encrypt_token_protect(@key, @key_length, context_, context_length_, message_, message_length_, enccontext, enccontext_length, encrypted_message, encrypted_message_length)
298
- raise ThemisError, "themis_secure_cell_encrypt_token_protect error: #{res}" unless res == SUCCESS
298
+ raise ThemisError, "Secure Cell (Token Protect) failed encrypting: #{res}" unless res == SUCCESS
299
299
  return enccontext.get_bytes(0, enccontext_length.read_uint), encrypted_message.get_bytes(0, encrypted_message_length.read_uint)
300
300
  when CONTEXT_IMPRINT_MODE
301
301
  res=themis_secure_cell_encrypt_context_imprint(@key, @key_length, message_, message_length_, context_, context_length_, nil, encrypted_message_length)
302
- raise ThemisError, "themis_secure_cell_encrypt_context_imprint (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
302
+ raise ThemisError, "Secure Cell (Context Imprint) failed encrypting: #{res}" unless res == BUFFER_TOO_SMALL
303
303
  encrypted_message = FFI::MemoryPointer.new(:char, encrypted_message_length.read_uint)
304
304
  res=themis_secure_cell_encrypt_context_imprint(@key, @key_length, message_, message_length_, context_, context_length_, encrypted_message, encrypted_message_length)
305
- raise ThemisError, "themis_secure_cell_encrypt_context_imprint error: #{res}" unless res == SUCCESS
305
+ raise ThemisError, "Secure Cell (Context Imprint) failed encrypting: #{res}" unless res == SUCCESS
306
306
  return encrypted_message.get_bytes(0, encrypted_message_length.read_uint)
307
307
  else
308
- raise ThemisError, "themis_secure_cell not supported mode"
308
+ raise ThemisError, "Secure Cell failed encrypting, undefined mode"
309
309
  end
310
310
  end
311
311
 
@@ -316,31 +316,31 @@ module Themis
316
316
  when SEAL_MODE
317
317
  message_, message_length_ = string_to_pointer_size(message)
318
318
  res=themis_secure_cell_decrypt_seal(@key, @key_length, context_, context_length_, message_, message_length_, nil, decrypted_message_length)
319
- raise ThemisError, "themis_secure_cell_decrypt_seal (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
319
+ raise ThemisError, "Secure Cell (Seal) failed decrypting: #{res}" unless res == BUFFER_TOO_SMALL
320
320
  decrypted_message = FFI::MemoryPointer.new(:char, decrypted_message_length.read_uint)
321
321
  res=themis_secure_cell_decrypt_seal(@key, @key_length, context_, context_length_, message_, message_length_, decrypted_message, decrypted_message_length)
322
- raise ThemisError, "themis_secure_cell_decrypt_seal error: #{res}" unless res == SUCCESS
322
+ raise ThemisError, "Secure Cell (Seal) failed decrypting: #{res}" unless res == SUCCESS
323
323
  return decrypted_message.get_bytes(0, decrypted_message_length.read_uint)
324
324
  when TOKEN_PROTECT_MODE
325
325
  enccontext, message_ = message
326
326
  message__, message_length__ = string_to_pointer_size(message_)
327
327
  enccontext_, enccontext_length = string_to_pointer_size(enccontext)
328
328
  res=themis_secure_cell_decrypt_token_protect(@key, @key_length, context_, context_length_, message__, message_length__, enccontext_, enccontext_length, nil, decrypted_message_length)
329
- raise ThemisError, "themis_secure_cell_encrypt_token_protect (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
329
+ raise ThemisError, "Secure Cell (Token Protect) failed decrypting: #{res}" unless res == BUFFER_TOO_SMALL
330
330
  decrypted_message = FFI::MemoryPointer.new(:char, decrypted_message_length.read_uint)
331
331
  res=themis_secure_cell_decrypt_token_protect(@key, @key_length, context_, context_length_, message__, message_length__, enccontext_, enccontext_length, decrypted_message, decrypted_message_length)
332
- raise ThemisError, "themis_secure_cell_encrypt_token_protect error: #{res}" unless res == SUCCESS
332
+ raise ThemisError, "Secure Cell (Token Protect) failed decrypting: #{res}" unless res == SUCCESS
333
333
  return decrypted_message.get_bytes(0, decrypted_message_length.read_uint)
334
334
  when CONTEXT_IMPRINT_MODE
335
335
  message_, message_length_ = string_to_pointer_size(message)
336
336
  res=themis_secure_cell_decrypt_context_imprint(@key, @key_length, message_, message_length_, context_, context_length_, nil, decrypted_message_length)
337
- raise ThemisError, "themis_secure_cell_decrypt_context_imprint (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
337
+ raise ThemisError, "Secure Cell (Context Imprint) failed decrypting: #{res}" unless res == BUFFER_TOO_SMALL
338
338
  decrypted_message = FFI::MemoryPointer.new(:char, decrypted_message_length.read_uint)
339
339
  res=themis_secure_cell_decrypt_context_imprint(@key, @key_length, message_, message_length_, context_, context_length_, decrypted_message, decrypted_message_length)
340
- raise ThemisError, "themis_secure_cell_decrypt_context_imprint error: #{res}" unless res == SUCCESS
340
+ raise ThemisError, "Secure Cell (Context Imprint) failed decrypting: #{res}" unless res == SUCCESS
341
341
  return decrypted_message.get_bytes(0, decrypted_message_length.read_uint)
342
342
  else
343
- raise ThemisError, "themis_secure_cell not supported mode"
343
+ raise ThemisError, "Secure Cell failed encrypting, undefined mode"
344
344
  end
345
345
  end
346
346
  end
@@ -356,23 +356,23 @@ module Themis
356
356
  def initialize(shared_secret)
357
357
  shared_secret_buf, shared_secret_length = string_to_pointer_size(shared_secret)
358
358
  @comparator=secure_comparator_create()
359
- raise ThemisError, "secure_comparator_create error" unless @comparator
359
+ raise ThemisError, "Secure Comparator failed creating" unless @comparator
360
360
  res=secure_comparator_append_secret(@comparator, shared_secret_buf, shared_secret_length)
361
- raise ThemisError, "secure_comparator_append_secret error" unless res==SUCCESS
361
+ raise ThemisError, "Secure Comparator failed appending secret" unless res==SUCCESS
362
362
  end
363
363
 
364
364
  def finalize()
365
365
  res=secure_comparator_destroy(@comparator)
366
- raise ThemisError, "secure_comparator_destroy error" unless res==SUCCESS
366
+ raise ThemisError, "Secure Comparator failed destroying" unless res==SUCCESS
367
367
  end
368
368
 
369
369
  def begin_compare()
370
370
  res_length=FFI::MemoryPointer.new(:uint)
371
371
  res=secure_comparator_begin_compare(@comparator, nil, res_length)
372
- raise ThemisError, "secure_comparator_begin_compare (length determination) error" unless res==BUFFER_TOO_SMALL
372
+ raise ThemisError, "Secure Comparator failed making initialisation message" unless res==BUFFER_TOO_SMALL
373
373
  res_buffer=FFI::MemoryPointer.new(:char, res_length.read_uint)
374
374
  res=secure_comparator_begin_compare(@comparator, res_buffer, res_length)
375
- raise ThemisError, "secure_comparator_begin_compare error" unless res==SUCCESS || res==SEND_AS_IS
375
+ raise ThemisError, "Secure Comparator failed making initialisation message" unless res==SUCCESS || res==SEND_AS_IS
376
376
  return res_buffer.get_bytes(0,res_length.read_uint)
377
377
  end
378
378
 
@@ -380,13 +380,13 @@ module Themis
380
380
  message, message_length = string_to_pointer_size(control_message)
381
381
  res_length=FFI::MemoryPointer.new(:uint)
382
382
  res=secure_comparator_proceed_compare(@comparator, message, message_length, nil, res_length)
383
- raise ThemisError, "secure_comparator_proceed_compare (length determination) error" unless res==SUCCESS || res == BUFFER_TOO_SMALL
383
+ raise ThemisError, "Secure Comparator failed proeeding message" unless res==SUCCESS || res == BUFFER_TOO_SMALL
384
384
  if res == SUCCESS
385
385
  return ""
386
386
  end
387
387
  res_buffer=FFI::MemoryPointer.new(:char, res_length.read_uint)
388
388
  res=secure_comparator_proceed_compare(@comparator, message, message_length, res_buffer, res_length)
389
- raise ThemisError, "secure_comparator_proceed_compare error" unless res==SUCCESS || res==SEND_AS_IS
389
+ raise ThemisError, "Secure Comparator failed proeeding message" unless res==SUCCESS || res==SEND_AS_IS
390
390
  return res_buffer.get_bytes(0,res_length.read_uint)
391
391
  end
392
392
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubythemis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.9.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - CossackLabs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-04 00:00:00.000000000 Z
11
+ date: 2016-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -60,7 +60,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  requirements:
63
- - libthemis, v0.9.2
63
+ - libthemis, v0.9.3
64
64
  rubyforge_project:
65
65
  rubygems_version: 2.4.5
66
66
  signing_key: