module GSSAPI::LibGSSAPI

Constants

GSSAPI_LIB_TYPE
GSS_C_ACCEPT
GSS_C_ANON_FLAG
GSS_C_BOTH

Credential usage options

GSS_C_CALLING_ERRORS
GSS_C_CALLING_ERROR_OFFSET

Message Offsets

GSS_C_CONF_FLAG
GSS_C_DELEG_FLAG

Flag bits for context-level services.

GSS_C_DELEG_POLICY_FLAG
GSS_C_EMPTY_BUFFER
GSS_C_GSS_CODE
GSS_C_INDEFINITE

Misc Constants

GSS_C_INITIATE
GSS_C_INTEG_FLAG
GSS_C_MECH_CODE
GSS_C_MUTUAL_FLAG
GSS_C_NO_BUFFER
GSS_C_NO_CHANNEL_BINDINGS
GSS_C_NO_CONTEXT
GSS_C_NO_CREDENTIAL
GSS_C_NO_NAME

Various Null values. (gssapi.h)

GSS_C_NO_OID
GSS_C_NO_OID_SET
GSS_C_PROT_READY_FLAG
GSS_C_QOP_DEFAULT

QOP (Quality of Protection)

GSS_C_REPLAY_FLAG
GSS_C_ROUTINE_ERRORS
GSS_C_ROUTINE_ERROR_OFFSET
GSS_C_SEQUENCE_FLAG
GSS_C_SUPPLEMENTARY_CODES
GSS_C_SUPPLEMENTARY_OFFSET
GSS_C_TRANS_FLAG
GSS_IOV_BUFFER_FLAG_ALLOCATE
GSS_IOV_BUFFER_FLAG_ALLOCATED
GSS_IOV_BUFFER_FLAG_MASK

Flags

GSS_IOV_BUFFER_TYPE_DATA
GSS_IOV_BUFFER_TYPE_EMPTY

IOV Buffer Types (gssapi_ext.h)

GSS_IOV_BUFFER_TYPE_HEADER
GSS_IOV_BUFFER_TYPE_MECH_PARAMS
GSS_IOV_BUFFER_TYPE_PADDING
GSS_IOV_BUFFER_TYPE_SIGN_ONLY
GSS_IOV_BUFFER_TYPE_STREAM
GSS_IOV_BUFFER_TYPE_TRAILER
GSS_S_COMPLETE

GSSAPI Status & Error Codes

Public Class Methods

load_heimdal() click to toggle source
# File lib/gssapi/lib_gssapi_loader.rb, line 44
def self.load_heimdal
  host_os = RbConfig::CONFIG['host_os']
  case host_os
  when /linux/
    gssapi_lib = 'libgssapi.so.3'
  when /darwin/
    # use Heimdal Kerberos since Mac MIT Kerberos is OLD. Do a "require 'gssapi/heimdal'" first
    gssapi_lib = '/usr/heimdal/lib/libgssapi.dylib'
  else
    raise LoadError, "This host OS (#{host_os}) is not supported by ruby gssapi and the Heimdal libraries."
  end
  ffi_lib gssapi_lib, FFI::Library::LIBC

  # ------------------ Heimdal Specifics ------------------
  attach_variable :__gss_c_nt_hostbased_service_oid_desc, GssOID
  attach_variable :__gss_c_nt_export_name_oid_desc, GssOID
  LibGSSAPI.const_set("GSS_C_NT_HOSTBASED_SERVICE", FFI::Pointer.new(__gss_c_nt_hostbased_service_oid_desc.to_ptr))
  LibGSSAPI.const_set("GSS_C_NT_EXPORT_NAME", FFI::Pointer.new(__gss_c_nt_export_name_oid_desc.to_ptr))
end
load_mit() click to toggle source
# File lib/gssapi/lib_gssapi_loader.rb, line 19
def self.load_mit
  host_os = RbConfig::CONFIG['host_os']
  case host_os
  when /linux/
    gssapi_lib = 'libgssapi_krb5.so.2'
    ffi_lib gssapi_lib, FFI::Library::LIBC
  when /darwin/
    gssapi_lib = '/usr/lib/libgssapi_krb5.dylib'
    ffi_lib gssapi_lib, FFI::Library::LIBC
  when /mswin|mingw32|windows/
    # Pull the gssapi32 path from the environment if it exist, otherwise use the default in Program Files
    gssapi32_path = ENV['gssapi32'] ? ENV['gssapi32'] : 'C:\Program Files (x86)\MIT\Kerberos\bin\gssapi32.dll'
    ffi_lib gssapi32_path, FFI::Library::LIBC  # Required the MIT Kerberos libraries to be installed
    ffi_convention :stdcall
  else
    raise LoadError, "This host OS (#{host_os}) is not supported by ruby gssapi and the MIT libraries."
  end

  # -------------------- MIT Specifics --------------------
  attach_variable :__GSS_C_NT_HOSTBASED_SERVICE, :GSS_C_NT_HOSTBASED_SERVICE, :pointer # type gss_OID
  attach_variable :__GSS_C_NT_EXPORT_NAME, :GSS_C_NT_EXPORT_NAME, :pointer # type gss_OID
  LibGSSAPI.const_set("GSS_C_NT_HOSTBASED_SERVICE", __GSS_C_NT_HOSTBASED_SERVICE)
  LibGSSAPI.const_set("GSS_C_NT_EXPORT_NAME", __GSS_C_NT_EXPORT_NAME)
end