rubythemis 0.9.1 → 0.9.1.1

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