Method: GSSAPI::Simple#import_name

Defined in:
lib/gssapi/simple.rb

#import_name(str) ⇒ Object

Convert a String to a GSSAPI usable buffer (gss_buffer_desc)

Parameters:

  • str (String)

    the string to convert

Raises:



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/gssapi/simple.rb', line 34

def import_name(str)
  buff_str = LibGSSAPI::UnManagedGssBufferDesc.new
  buff_str.value = str
  # Choose the appropriate mechanism based on the string passed.
  if (str =~ /[A-Za-z0-9]+\/[^@]+@.+$/)
    mech = LibGSSAPI::GssOID.gss_c_no_oid
  else
    mech = LibGSSAPI::GSS_C_NT_HOSTBASED_SERVICE
  end
  name = FFI::MemoryPointer.new :pointer # gss_name_t
  min_stat = FFI::MemoryPointer.new :OM_uint32

  maj_stat = LibGSSAPI.gss_import_name(min_stat, buff_str.pointer, mech, name)
  raise GssApiError.new(maj_stat, min_stat), "gss_import_name did not return GSS_S_COMPLETE" if maj_stat != 0

  LibGSSAPI::GssNameT.new(name.get_pointer(0))
end