Class: Themis::Scomparator

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

Constant Summary collapse

MATCH =
-252645136
NOT_MATCH =
-1
NOT_READY =
0

Instance Method Summary collapse

Methods included from ThemisCommon

string_to_pointer_size

Constructor Details

#initialize(shared_secret) ⇒ Scomparator

Returns a new instance of Scomparator.

Raises:



356
357
358
359
360
361
362
# File 'lib/rubythemis.rb', line 356

def initialize(shared_secret)
	shared_secret_buf, shared_secret_length = string_to_pointer_size(shared_secret)
	@comparator=secure_comparator_create()
	raise ThemisError, "secure_comparator_create error" unless @comparator
  res=secure_comparator_append_secret(@comparator, shared_secret_buf, shared_secret_length)
	raise ThemisError, "secure_comparator_append_secret error" unless res==SUCCESS            
end

Instance Method Details

#begin_compareObject

Raises:



369
370
371
372
373
374
375
376
377
# File 'lib/rubythemis.rb', line 369

def begin_compare()
  res_length=FFI::MemoryPointer.new(:uint)
  res=secure_comparator_begin_compare(@comparator, nil, res_length)
  raise ThemisError, "secure_comparator_begin_compare (length determination) error" unless res==BUFFER_TOO_SMALL
  res_buffer=FFI::MemoryPointer.new(:char, res_length.read_uint)
  res=secure_comparator_begin_compare(@comparator, res_buffer, res_length)
  raise ThemisError, "secure_comparator_begin_compare error" unless res==SUCCESS || res==SEND_AS_IS
  return res_buffer.get_bytes(0,res_length.read_uint)
end

#finalizeObject

Raises:



364
365
366
367
# File 'lib/rubythemis.rb', line 364

def finalize()
  res=secure_comparator_destroy(@comparator)
	raise ThemisError, "secure_comparator_destroy error" unless res==SUCCESS                      
end

#proceed_compare(control_message) ⇒ Object

Raises:



379
380
381
382
383
384
385
386
387
388
389
390
391
# File 'lib/rubythemis.rb', line 379

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)
  raise ThemisError, "secure_comparator_proceed_compare (length determination) error" unless res==SUCCESS || res == BUFFER_TOO_SMALL
  if res == SUCCESS
    return ""
  end
  res_buffer=FFI::MemoryPointer.new(:char, res_length.read_uint)
  res=secure_comparator_proceed_compare(@comparator, message, message_length, res_buffer, res_length)
  raise ThemisError, "secure_comparator_proceed_compare error" unless res==SUCCESS || res==SEND_AS_IS
  return res_buffer.get_bytes(0,res_length.read_uint)          
end

#resultObject



393
394
395
# File 'lib/rubythemis.rb', line 393

def result()
	return secure_comparator_get_result(@comparator)
end