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