Class: Themis::Smessage

Inherits:
Object
  • Object
show all
Includes:
ThemisCommon, ThemisImport
Defined in:
lib/rubythemis.rb

Instance Method Summary collapse

Methods included from ThemisCommon

string_to_pointer_size

Constructor Details

#initialize(private_key, peer_public_key) ⇒ Smessage

Returns a new instance of Smessage.



212
213
214
215
# File 'lib/rubythemis.rb', line 212

def initialize(private_key, peer_public_key)
    @private_key, @private_key_length = string_to_pointer_size(private_key)
    @peer_public_key, @peer_public_key_length = string_to_pointer_size(peer_public_key)
end

Instance Method Details

#unwrap(message) ⇒ Object

Raises:



228
229
230
231
232
233
234
235
236
237
# File 'lib/rubythemis.rb', line 228

def unwrap(message)
    message_, message_length_=string_to_pointer_size(message)
    unwrapped_message_length = FFI::MemoryPointer.new(:uint)
    res=themis_secure_message_unwrap(@private_key, @private_key_length, @peer_public_key, @peer_public_key_length, message_, message_length_, nil, unwrapped_message_length)
    raise ThemisError, "themis_secure_message_unwrap (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
    unwrapped_message = FFI::MemoryPointer.new(:char, unwrapped_message_length.read_uint)
    res=themis_secure_message_unwrap(@private_key, @private_key_length, @peer_public_key, @peer_public_key_length, message_, message_length_, unwrapped_message, unwrapped_message_length)
    raise ThemisError, "themis_secure_message_unwrap error: #{res}" unless res == SUCCESS
    return unwrapped_message.get_bytes(0, unwrapped_message_length.read_uint);
end

#wrap(message) ⇒ Object

Raises:



217
218
219
220
221
222
223
224
225
226
# File 'lib/rubythemis.rb', line 217

def wrap(message)
    message_, message_length_=string_to_pointer_size(message)
    wrapped_message_length = FFI::MemoryPointer.new(:uint)
    res=themis_secure_message_wrap(@private_key, @private_key_length, @peer_public_key, @peer_public_key_length, message_, message_length_, nil, wrapped_message_length)
    raise ThemisError, "themis_secure_message_wrap (length determination) error: #{res}" unless res == BUFFER_TOO_SMALL
    wrapped_message = FFI::MemoryPointer.new(:char, wrapped_message_length.read_uint)
    res=themis_secure_message_wrap(@private_key, @private_key_length, @peer_public_key, @peer_public_key_length, message_, message_length_, wrapped_message, wrapped_message_length)
    raise ThemisError, "themis_secure_message_wrap error: #{res}" unless res == SUCCESS
    return wrapped_message.get_bytes(0, wrapped_message_length.read_uint);
end