rubythemis 0.9.1 → 0.9.1.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rubythemis.rb +39 -6
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c533507748e3b83574754d815e8876013636b55b
4
- data.tar.gz: c8b9067cbefeeab4d80a4ca4380affda98d21b79
3
+ metadata.gz: a3bec344fffa5705ed6a25e7efc5db39a8c8f712
4
+ data.tar.gz: a0981e988e300ef2ccf4cb89837c11efed8ee7b8
5
5
  SHA512:
6
- metadata.gz: 78a31344f698b9798b403d9c2cbdbf92601f90c20d62e8e97cf69c9dffc9cffbfe9c97c38ee8d4650829bb2d5056d824e855f64a9848e4d81e3f4bf5e99a4964
7
- data.tar.gz: 13c1baf7117e3af8ed2496222ca6182e75ee0c709395bfb92042504de8046eb09fba1e45cf86c32636380d74dad9261649074d1833bd18c310ce25516a9ebee7
6
+ metadata.gz: e45a04401c921f2dc458bd987eb4e34cafe7bdb8aa4ab5303e55b20a61c2b6953593f9591fdd39186ab376e1b8c376cfba78971c027068366410a8494fb124ac
7
+ data.tar.gz: ed0706d1c8bc948010571639e8604da407b08bbb690913d4a40690b419c068276c63c22769366905801a2fb03bf1d69ca2f34e621ecd3dc1b849f0eb81791b4d
data/lib/rubythemis.rb CHANGED
@@ -31,7 +31,7 @@ module ThemisImport
31
31
 
32
32
 
33
33
 
34
- callback :get_pub_key_by_id_type, [:pointer, :int, :pointer, :int, :uint], :int
34
+ callback :get_pub_key_by_id_type, [:pointer, :int, :pointer, :int, :pointer], :int
35
35
  callback :send_callback_type, [:pointer, :int, :uint], :int
36
36
  callback :receive_callback_type, [:pointer, :int, :uint], :int
37
37
 
@@ -40,7 +40,7 @@ module ThemisImport
40
40
  :receive_data, :receive_callback_type,
41
41
  :state_changed, :pointer,
42
42
  :get_pub_key_for_id, :get_pub_key_by_id_type,
43
- :user_data, :uint
43
+ :user_data, :pointer
44
44
  end
45
45
 
46
46
  attach_function :secure_session_create, [ :pointer, :uint, :pointer, :uint, :pointer], :pointer
@@ -68,6 +68,8 @@ module ThemisImport
68
68
  end
69
69
 
70
70
  module Themis
71
+ extend ThemisCommon
72
+ extend ThemisImport
71
73
 
72
74
  BUFFER_TOO_SMALL = -4
73
75
  SUCCESS = 0
@@ -126,8 +128,8 @@ module Themis
126
128
 
127
129
  MAPPING = {}
128
130
 
129
- Get_pub_key_by_id_callback = FFI::Function.new(:int, [:pointer, :int, :pointer, :int, :uint]) do |id_buf, id_length, pubkey_buf, pubkey_length, obj|
130
- pub_key=MAPPING[obj].get_pub_key_by_id(id_buf.get_bytes(0,id_length))
131
+ Get_pub_key_by_id_callback = FFI::Function.new(:int, [:pointer, :int, :pointer, :int, :pointer]) do |id_buf, id_length, pubkey_buf, pubkey_length, obj|
132
+ pub_key=MAPPING[obj.read_uint64].get_pub_key_by_id(id_buf.get_bytes(0,id_length))
131
133
  if !pub_key
132
134
  -1
133
135
  end
@@ -141,7 +143,9 @@ module Themis
141
143
  @callbacks = Callbacks_struct.new
142
144
  @callbacks[:get_pub_key_for_id] = Get_pub_key_by_id_callback
143
145
  MAPPING[transport.object_id]=transport
144
- @callbacks[:user_data] =transport.object_id
146
+ @transport_obj_id=transport.object_id
147
+ @callbacks[:user_data] = FFI::MemoryPointer.new(:uint64)
148
+ @callbacks[:user_data].write_uint64(@transport_obj_id)
145
149
  @session=secure_session_create(id_buf, id_length, private_key_buf, private_key_length, @callbacks);
146
150
  raise ThemisError, "secure_session_create error" unless @session
147
151
  end
@@ -223,6 +227,32 @@ module Themis
223
227
  end
224
228
  end
225
229
 
230
+ def Ssign(private_key, message)
231
+ private_key_, private_key_length_= string_to_pointer_size(private_key)
232
+ message_, message_length_=string_to_pointer_size(message)
233
+ wrapped_message_length = FFI::MemoryPointer.new(:uint)
234
+ res=themis_secure_message_wrap(private_key_, private_key_length_, nil, 0, message_, message_length_, nil, wrapped_message_length)
235
+ raise ThemisError, "themis_secure_message_wrap (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
236
+ wrapped_message = FFI::MemoryPointer.new(:char, wrapped_message_length.read_uint)
237
+ res=themis_secure_message_wrap(private_key_, private_key_length_, nil, 0, message_, message_length_, wrapped_message, wrapped_message_length)
238
+ raise ThemisError, "themis_secure_message_wrap error: #{res}" unless res == SUCCESS
239
+ return wrapped_message.get_bytes(0, wrapped_message_length.read_uint);
240
+ end
241
+
242
+ def Sverify(peer_public_key, message)
243
+ include ThemisCommon
244
+ include ThemisImport
245
+ public_key_, public_key_length_= string_to_pointer_size(peer_public_key)
246
+ message_, message_length_=string_to_pointer_size(message)
247
+ unwrapped_message_length = FFI::MemoryPointer.new(:uint)
248
+ res=themis_secure_message_unwrap(nil, 0, public_key_, public_key_length_, message_, message_length_, nil, unwrapped_message_length)
249
+ raise ThemisError, "themis_secure_message_unwrap (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
250
+ unwrapped_message = FFI::MemoryPointer.new(:char, unwrapped_message_length.read_uint)
251
+ res=themis_secure_message_unwrap(nil, 0, public_key_, public_key_length_, message_, message_length_, unwrapped_message, unwrapped_message_length)
252
+ raise ThemisError, "themis_secure_message_unwrap error: #{res}" unless res == SUCCESS
253
+ return unwrapped_message.get_bytes(0, unwrapped_message_length.read_uint);
254
+ end
255
+
226
256
  class Scell
227
257
  include ThemisCommon
228
258
  include ThemisImport
@@ -303,6 +333,9 @@ module Themis
303
333
  raise ThemisError, "themis_secure_cell not supported mode"
304
334
  end
305
335
  end
306
-
307
336
  end
337
+
338
+ module_function :Ssign
339
+ module_function :Sverify
340
+
308
341
  end
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.1
4
+ version: 0.9.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - CossackLabs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-20 00:00:00.000000000 Z
11
+ date: 2015-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi