Method: Themis::Scomparator#proceed_compare

Defined in:
lib/rbthemis.rb

#proceed_compare(control_message) ⇒ Object



1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
# File 'lib/rbthemis.rb', line 1004

def proceed_compare(control_message)
  message, message_length = string_to_pointer_size(control_message)
  res_length = FFI::MemoryPointer.new(:uint)

  res = secure_comparator_proceed_compare(
    @comparator, message, message_length, nil, res_length)
  return '' if res == SUCCESS
  if res != BUFFER_TOO_SMALL
    raise ThemisError, 'Secure Comparator failed proceeding message'
  end

  res_buffer = FFI::MemoryPointer.new(:char, res_length.read_uint)
  res = secure_comparator_proceed_compare(
    @comparator, message, message_length, res_buffer, res_length)
  if res != SUCCESS && res != SEND_AS_IS
    raise ThemisError, 'Secure Comparator failed proceeding message'
  end

  res_buffer.get_bytes(0, res_length.read_uint)
end