Class: Themis::Ssession
- Inherits:
-
Object
- Object
- Themis::Ssession
- Includes:
- ThemisCommon, ThemisImport
- Defined in:
- lib/rubythemis.rb
Constant Summary collapse
- MAPPING =
{}
- 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| pub_key=MAPPING[obj.read_uint64].get_pub_key_by_id(id_buf.get_bytes(0,id_length)) if !pub_key -1 end pubkey_buf.put_bytes(0, pub_key) 0 end
Instance Method Summary collapse
- #connect_request ⇒ Object
- #finalize ⇒ Object
-
#initialize(id, private_key, transport) ⇒ Ssession
constructor
A new instance of Ssession.
- #is_established ⇒ Object
- #unwrap(message) ⇒ Object
- #wrap(message) ⇒ Object
Methods included from ThemisCommon
Constructor Details
#initialize(id, private_key, transport) ⇒ Ssession
Returns a new instance of Ssession.
150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/rubythemis.rb', line 150 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_create error" unless @session end |
Instance Method Details
#connect_request ⇒ Object
167 168 169 170 171 172 173 174 175 |
# File 'lib/rubythemis.rb', line 167 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_generate_connect_request (length determination) error: #{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_generate_connect_request error: #{res}" unless res == SUCCESS return connect_request.get_bytes(0, connect_request_length.read_uint); end |
#finalize ⇒ Object
202 203 204 205 206 |
# File 'lib/rubythemis.rb', line 202 def finalize res=secure_session_destroy(@session) raise ThemisError, "secure_session_destroy error" unless res == SUCCESS end |
#is_established ⇒ Object
163 164 165 |
# File 'lib/rubythemis.rb', line 163 def is_established() return secure_session_is_established(@session) end |
#unwrap(message) ⇒ Object
177 178 179 180 181 182 183 184 185 186 187 188 189 |
# File 'lib/rubythemis.rb', line 177 def unwrap() , =string_to_pointer_size() = FFI::MemoryPointer.new(:uint) res=secure_session_unwrap(@session, , , nil, ) raise ThemisError, "secure_session_unwrap (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL || res == SUCCESS if res == SUCCESS return SUCCESS, "" end = FFI::MemoryPointer.new(:char, .read_uint) res=secure_session_unwrap(@session, , , , ) raise ThemisError, "secure_session_unwrap error: #{res}" unless res == SUCCESS || res == SEND_AS_IS return res, .get_bytes(0, .read_uint); end |
#wrap(message) ⇒ Object
191 192 193 194 195 196 197 198 199 200 |
# File 'lib/rubythemis.rb', line 191 def wrap() , =string_to_pointer_size() = FFI::MemoryPointer.new(:uint) res=secure_session_wrap(@session, , , nil, ) raise ThemisError, "secure_session_wrap (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL = FFI::MemoryPointer.new(:char, .read_uint) res=secure_session_wrap(@session, , , , ) raise ThemisError, "secure_session_wrap error: #{res}" unless res == SUCCESS || res == SEND_AS_IS return .get_bytes(0, .read_uint); end |