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.
- checksums.yaml +4 -4
- data/lib/rubythemis.rb +39 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a3bec344fffa5705ed6a25e7efc5db39a8c8f712
|
4
|
+
data.tar.gz: a0981e988e300ef2ccf4cb89837c11efed8ee7b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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, :
|
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, :
|
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, :
|
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
|
-
@
|
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-
|
11
|
+
date: 2015-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|