class Themis::Ssession
Constants
- Get_pub_key_by_id_callback
- MAPPING
Public Class Methods
new(id, private_key, transport)
click to toggle source
# File lib/rubythemis.rb, line 152 def initialize(id, private_key, transport) id_buf, id_length = string_to_pointer_size(id) private_key_buf, private_key_length = string_to_pointer_size(private_key) @callbacks = Callbacks_struct.new @callbacks[:get_pub_key_for_id] = Get_pub_key_by_id_callback MAPPING[transport.object_id]=transport @transport_obj_id=transport.object_id @callbacks[:user_data] = FFI::MemoryPointer.new(:uint64) @callbacks[:user_data].write_uint64(@transport_obj_id) @session=secure_session_create(id_buf, id_length, private_key_buf, private_key_length, @callbacks); raise ThemisError, "Secure Session failed creating" unless @session end
Public Instance Methods
connect_request()
click to toggle source
# File lib/rubythemis.rb, line 169 def connect_request() connect_request_length = FFI::MemoryPointer.new(:uint) res=secure_session_generate_connect_request(@session, nil, connect_request_length) raise ThemisError, "Secure Session failed making connection request: #{res}" unless res == BUFFER_TOO_SMALL connect_request = FFI::MemoryPointer.new(:char, connect_request_length.read_uint) res=secure_session_generate_connect_request(@session, connect_request, connect_request_length) raise ThemisError, "Secure Session failed making connection request: #{res}" unless res == SUCCESS return connect_request.get_bytes(0, connect_request_length.read_uint); end
finalize()
click to toggle source
# File lib/rubythemis.rb, line 204 def finalize res=secure_session_destroy(@session) raise ThemisError, "Secure Session failed destroying" unless res == SUCCESS end
is_established()
click to toggle source
# File lib/rubythemis.rb, line 165 def is_established() return secure_session_is_established(@session) end
unwrap(message)
click to toggle source
# File lib/rubythemis.rb, line 179 def unwrap(message) message_, message_length_=string_to_pointer_size(message) unwrapped_message_length = FFI::MemoryPointer.new(:uint) res=secure_session_unwrap(@session, message_, message_length_, nil, unwrapped_message_length) raise ThemisError, "Secure Session failed decrypting: #{res}" unless res == BUFFER_TOO_SMALL || res == SUCCESS if res == SUCCESS return SUCCESS, "" end unwrapped_message = FFI::MemoryPointer.new(:char, unwrapped_message_length.read_uint) res=secure_session_unwrap(@session, message_, message_length_, unwrapped_message, unwrapped_message_length) raise ThemisError, "Secure Session failed decrypting: #{res}" unless res == SUCCESS || res == SEND_AS_IS return res, unwrapped_message.get_bytes(0, unwrapped_message_length.read_uint); end
wrap(message)
click to toggle source
# File lib/rubythemis.rb, line 193 def wrap(message) message_, message_length_=string_to_pointer_size(message) wrapped_message_length = FFI::MemoryPointer.new(:uint) res=secure_session_wrap(@session, message_, message_length_, nil, wrapped_message_length) raise ThemisError, "Secure Session failed encrypting: #{res}" unless res == BUFFER_TOO_SMALL wrapped_message = FFI::MemoryPointer.new(:char, wrapped_message_length.read_uint) res=secure_session_wrap(@session, message_, message_length_, wrapped_message, wrapped_message_length) raise ThemisError, "Secure Session failed encrypting: #{res}" unless res == SUCCESS || res == SEND_AS_IS return wrapped_message.get_bytes(0, wrapped_message_length.read_uint); end