def acquire_credentials(princ = @int_svc_name, opts = {:usage => :accept})
min_stat = FFI::MemoryPointer.new :OM_uint32
scred = FFI::MemoryPointer.new :pointer
case opts[:usage]
when :accept
usage = LibGSSAPI::GSS_C_ACCEPT
when :initiate
usage = LibGSSAPI::GSS_C_INITIATE
when :both
usage = LibGSSAPI::GSS_C_BOTH
else
raise GssApiError, "Bad option passed to #{self.class.name}#acquire_credentials"
end
maj_stat = LibGSSAPI.gss_acquire_cred(min_stat, princ, 0, LibGSSAPI::GSS_C_NO_OID_SET, usage, scred, nil, nil)
raise GssApiError.new(maj_stat, min_stat), "gss_acquire_cred did not return GSS_S_COMPLETE" if maj_stat != 0
@scred = LibGSSAPI::GssCredIdT.new(scred.get_pointer(0))
true
end