globus_xio_gsi_driver(3)

πŸ“¦
version 5.4 Β· 6 versions
, in fedora 43, fedora 44, ubuntu resolute, ubuntu stonking

πŸ’– globus_xio_gsi_driver β€” Globus XIO GSI Driver πŸ’–

okay bestie, pull up a chair, we're reading globus_xio_gsi_driver(3) together and honestly? it's giving security-layer royalty. this is the manual page for the Globus XIO GSI Driver, and it's a whole vibe. let's go πŸ¦‹


🌸 NAME 🌸

globus_xio_gsi_driver β€” Globus XIO GSI Driver

yes that's it. Globus XIO GSI Driver. short king of a NAME section. periodt. πŸ’…

✨ SYNOPSIS ✨

πŸŽ€ Typedefs

these are the callback shapes, keep them exactly like this:

typedef void(* globus_xio_gsi_delegation_init_callback_t)
    (globus_result_t result, void *user_arg)
typedef void(* globus_xio_gsi_delegation_accept_callback_t)
    (globus_result_t result, gss_cred_id_t delegated_cred, OM_uint32
    time_rec, void *user_arg)

🧚 Enumerations

the enum era, we love to see it:

enum globus_xio_gsi_error_t {
    GLOBUS_XIO_GSI_ERROR_INVALID_PROTECTION_LEVEL,
    GLOBUS_XIO_GSI_ERROR_WRAP_GSSAPI,
    GLOBUS_XIO_GSI_ERROR_EMPTY_TARGET_NAME,
    GLOBUS_XIO_GSI_ERROR_EMPTY_HOST_NAME,
    GLOBUS_XIO_GSI_AUTHORIZATION_FAILED,
    GLOBUS_XIO_GSI_ERROR_TOKEN_TOO_BIG }
enum globus_xio_gsi_cmd_t { GLOBUS_XIO_GSI_SET_CREDENTIAL,
    GLOBUS_XIO_GSI_GET_CREDENTIAL, GLOBUS_XIO_GSI_SET_GSSAPI_REQ_FLAGS,
    GLOBUS_XIO_GSI_GET_GSSAPI_REQ_FLAGS, GLOBUS_XIO_GSI_SET_PROXY_MODE,
    GLOBUS_XIO_GSI_GET_PROXY_MODE,
    GLOBUS_XIO_GSI_SET_AUTHORIZATION_MODE,
    GLOBUS_XIO_GSI_GET_AUTHORIZATION_MODE,
    GLOBUS_XIO_GSI_SET_DELEGATION_MODE,
    GLOBUS_XIO_GSI_GET_DELEGATION_MODE,
    GLOBUS_XIO_GSI_SET_SSL_COMPATIBLE, GLOBUS_XIO_GSI_SET_ANON,
    GLOBUS_XIO_GSI_SET_WRAP_MODE, GLOBUS_XIO_GSI_GET_WRAP_MODE,
    GLOBUS_XIO_GSI_SET_BUFFER_SIZE, GLOBUS_XIO_GSI_GET_BUFFER_SIZE,
    GLOBUS_XIO_GSI_SET_PROTECTION_LEVEL,
    GLOBUS_XIO_GSI_GET_PROTECTION_LEVEL, GLOBUS_XIO_GSI_GET_TARGET_NAME,
    GLOBUS_XIO_GSI_SET_TARGET_NAME, GLOBUS_XIO_GSI_GET_CONTEXT,
    GLOBUS_XIO_GSI_GET_DELEGATED_CRED, GLOBUS_XIO_GSI_GET_PEER_NAME,
    GLOBUS_XIO_GSI_GET_LOCAL_NAME, GLOBUS_XIO_GSI_INIT_DELEGATION,
    GLOBUS_XIO_GSI_REGISTER_INIT_DELEGATION,
    GLOBUS_XIO_GSI_ACCEPT_DELEGATION,
    GLOBUS_XIO_GSI_REGISTER_ACCEPT_DELEGATION,
    GLOBUS_XIO_GSI_FORCE_SERVER_MODE,
    GLOBUS_XIO_GSI_SET_ALLOW_MISSING_SIGNING_POLICY,
    GLOBUS_XIO_GSI_GET_ALLOW_MISSING_SIGNING_POLICY,
    GLOBUS_XIO_GSI_SET_CREDENTIALS_DIR,
    GLOBUS_XIO_GSI_SET_APPLICATION_PROTOCOLS }
enum globus_xio_gsi_protection_level_t {
    GLOBUS_XIO_GSI_PROTECTION_LEVEL_NONE,
    GLOBUS_XIO_GSI_PROTECTION_LEVEL_INTEGRITY,
    GLOBUS_XIO_GSI_PROTECTION_LEVEL_PRIVACY }
enum globus_xio_gsi_delegation_mode_t {
    GLOBUS_XIO_GSI_DELEGATION_MODE_NONE,
    GLOBUS_XIO_GSI_DELEGATION_MODE_LIMITED,
    GLOBUS_XIO_GSI_DELEGATION_MODE_FULL }
enum globus_xio_gsi_proxy_mode_t { GLOBUS_XIO_GSI_PROXY_MODE_FULL,
    GLOBUS_XIO_GSI_PROXY_MODE_LIMITED, GLOBUS_XIO_GSI_PROXY_MODE_MANY }
enum globus_xio_gsi_authorization_mode_t {
    GLOBUS_XIO_GSI_NO_AUTHORIZATION, GLOBUS_XIO_GSI_SELF_AUTHORIZATION,
    GLOBUS_XIO_GSI_IDENTITY_AUTHORIZATION,
    GLOBUS_XIO_GSI_HOST_AUTHORIZATION }

πŸ’« Functions

every single one, bestie. no skipping, we're not that kind of girl:

globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_SET_CREDENTIAL, gss_cred_id_t credential)
globus_result_t globus_xio_gsi_handle_cntl (handle, driver,
    GLOBUS_XIO_GSI_SET_CREDENTIAL, gss_cred_id_t credential)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_GET_CREDENTIAL, gss_cred_id_t *credential)
globus_result_t globus_xio_gsi_handle_cntl (handle, driver,
    GLOBUS_XIO_GSI_GET_CREDENTIAL, gss_cred_id_t *credential)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_SET_GSSAPI_REQ_FLAGS, OM_uint32 req_flags)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_GET_GSSAPI_REQ_FLAGS, OM_uint32 *req_flags)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_SET_PROXY_MODE, globus_xio_gsi_proxy_mode_t
    proxy_mode)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_GET_PROXY_MODE, globus_xio_gsi_proxy_mode_t
    *proxy_mode)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_SET_AUTHORIZATION_MODE,
    globus_xio_gsi_authorization_mode_t authz_mode)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_GET_AUTHORIZATION_MODE,
    globus_xio_gsi_authorization_mode_t *authz_mode)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_SET_DELEGATION_MODE, globus_xio_gsi_delegation_mode_t
    delegation_mode)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_GET_DELEGATION_MODE, globus_xio_gsi_delegation_mode_t
    *delegation_mode)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_SET_SSL_COMPATIBLE, globus_bool_t ssl_mode)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_SET_ANON, globus_bool_t anon_mode)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_SET_WRAP_MODE, globus_bool_t wrap_mode)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_GET_WRAP_MODE, globus_bool_t *wrap_mode)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_SET_BUFFER_SIZE, globus_size_t buffer_size)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_GET_BUFFER_SIZE, globus_size_t *buffer_size)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_SET_PROTECTION_LEVEL,
    globus_xio_gsi_protection_level_t protection_level)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_GET_PROTECTION_LEVEL,
    globus_xio_gsi_protection_level_t *protection_level)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_GET_TARGET_NAME, gss_name_t *target_name)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_SET_TARGET_NAME, gss_name_t target_name)
globus_result_t globus_xio_gsi_handle_cntl (handle, driver,
    GLOBUS_XIO_GSI_GET_CONTEXT, gss_ctx_id_t *context)
globus_result_t globus_xio_gsi_handle_cntl (handle, driver,
    GLOBUS_XIO_GSI_GET_DELEGATED_CRED, gss_cred_id_t *credential)
globus_result_t globus_xio_gsi_handle_cntl (handle, driver,
    GLOBUS_XIO_GSI_GET_PEER_NAME, gss_name_t *peer_name)
globus_result_t globus_xio_gsi_handle_cntl (handle, driver,
    GLOBUS_XIO_GSI_GET_LOCAL_NAME, gss_name_t *local_name)
globus_result_t globus_xio_gsi_handle_cntl (handle, driver,
    GLOBUS_XIO_GSI_INIT_DELEGATION, gss_cred_id_t credential,
    gss_OID_set restriction_oids, gss_buffer_set_t restriction_buffers,
    OM_uint32 time_req)
globus_result_t globus_xio_gsi_handle_cntl (handle, driver,
    GLOBUS_XIO_GSI_REGISTER_INIT_DELEGATION, gss_cred_id_t credential,
    gss_OID_set restriction_oids, gss_buffer_set_t restriction_buffers,
    OM_uint32 time_req, globus_xio_gsi_delegation_init_callback_t
    callback, void *callback_arg)
globus_result_t globus_xio_gsi_handle_cntl (handle, driver,
    GLOBUS_XIO_GSI_ACCEPT_DELEGATION, gss_cred_id_t *credential,
    gss_OID_set restriction_oids, gss_buffer_set_t restriction_buffers,
    OM_uint32 time_req)
globus_result_t globus_xio_gsi_handle_cntl (handle, driver,
    GLOBUS_XIO_GSI_REGISTER_ACCEPT_DELEGATION, gss_OID_set
    restriction_oids, gss_buffer_set_t restriction_buffers, OM_uint32
    time_req, globus_xio_gsi_delegation_accept_callback_t callback, void
    *callback_arg)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_FORCE_SERVER_MODE, globus_bool_t server_mode)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_SET_ALLOW_MISSING_SIGNING_POLICY, globus_bool_t
    allow)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_GET_ALLOW_MISSING_SIGNING_POLICY, globus_bool_t
    *allow)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_SET_CREDENTIALS_DIR, const char *directory)
globus_result_t globus_xio_gsi_handle_cntl (handle, driver,
    GLOBUS_XIO_GSI_SET_CREDENTIALS_DIR, const char *directory)
globus_result_t globus_xio_gsi_attr_cntl (attr, driver,
    GLOBUS_XIO_GSI_SET_APPLICATION_PROTOCOLS, char **protocols)
globus_result_t globus_xio_gsi_handle_cntl (handle, driver,
    GLOBUS_XIO_GSI_SET_APPLICATION_PROTOCOLS, char **protocols)

πŸ‘‘ Detailed Description πŸ‘‘

Globus XIO GSI Driver.

that's the whole description bestie. sometimes the vibe is just... being the thing. πŸ’…


πŸ¦‹ Opening/Closing πŸ¦‹

okay so an XIO handle with the gsi driver can be created with either globus_xio_handle_create () or globus_xio_server_register_accept (). two doors, same slay.

  • if the handle is created with globus_xio_server_register_accept (), then the globus_xio_register_open () call will proceed to accept a GSSAPI security context. once the open completes successfully (like, after the open callback has been called, not before, we are patient and correct) the application may proceed to read or write data associated with the GSI session. 🫢
  • if the handle is created with globus_xio_handle_create (), then the XIO handle will implement the client-side (init) of the GSSAPI call sequence and establish a security context with the accepting side indicated by the contact_string passed to globus_xio_register_open (). main character energy, honestly. ✨

πŸ’œ Reading/Writing πŸ’œ

the GSI driver behaves similar to the underlying transport driver with respect to reads and writes, except for the try-read and try-write operations (ie. waitforbytes ==0) which always return immediately. why? because the security layer needs to read and write tokens of a certain minimal size and thus needs to rely on the underlying transport to handle greater than 0 reads/write which is not possible in "try" mode. no cap. so don't come for it, it's just how the tokens work. 😭


🌈 Server 🌈

  • globus_xio_server_create() causes a new transport-specific listener socket to be created to handle new GSI connections.
  • globus_xio_server_register_accept() will accept a new connection for processing.
  • globus_xio_server_register_close() cleans up the internal resources associated with the http server and calls close on the listener. (yes it says http, that's what the page says, we keep the details fr fr)

all accepted handles inherit all GSI-specific attributes set in the attr to globus_xio_server_create(), but can be overridden with the attr to globus_xio_register_open(). furthermore, accepted handles will use the GSSAPI accept security context call unless explicitly overridden during the globus_xio_register_open() call ( GLOBUS_XIO_GSI_FORCE_SERVER_MODE). inheritance with boundaries, we love to see it. πŸ‘‘


🌸 Environment Variables 🌸

the gsi driver uses the following environment variables:

  • X509_USER_PROXY
  • X509_USER_CERT
  • X509_USER_KEY
  • X509_CERT_DIR

for details see Globus: GSI Environment Variables πŸ“š


🧚 Attributes and Cntls 🧚

GSI driver specific attrs and cntls

πŸ’« See also

  • globus_xio_attr_cntl ()
  • globus_xio_handle_cntl ()

⭐ Error Types ⭐

the GSI driver uses mostly GSSAPI calls, so it generally just wraps the underlying GSSAPI errors or uses generic XIO errors.

πŸ’« See also

  • globus_xio_driver_error_match ()
  • globus_error_gssapi_match ()
  • globus_error_match_openssl_error ()

and that's part 1 bestie, don't go anywhere, there's more where that came from πŸ’–

🌸 TYPEDEF DOCUMENTATION 🌸

globus_xio_gsi_delegation_accept_callback_t

typedef void(* globus_xio_gsi_delegation_accept_callback_t) (globus_result_t
    result, gss_cred_id_t delegated_cred, OM_uint32 time_rec, void
    *user_arg)

Globus XIO GSI init delegation callback πŸ’…

globus_xio_gsi_delegation_init_callback_t

typedef void(* globus_xio_gsi_delegation_init_callback_t) (globus_result_t
    result, void *user_arg)

Globus XIO GSI init delegation callback ✨


πŸ’– ENUMERATION TYPE DOCUMENTATION πŸ’–

enum globus_xio_gsi_authorization_mode_t

Globus XIO GSI authorization modes πŸ‘‘

Enumerator

  • GLOBUS_XIO_GSI_NO_AUTHORIZATION β€” bestie, do zero authorization. Heads up tho: this is gonna throw an error when you use it with delegation on the init/client side. Not a vibe. 🚫
  • GLOBUS_XIO_GSI_SELF_AUTHORIZATION β€” authorize the peer if the peer's identity is literally the same as ours. twins fr πŸ’•
  • GLOBUS_XIO_GSI_IDENTITY_AUTHORIZATION β€” authorize the peer if their identity matches the identity you set in the target name. matching, as it should be ✨
  • GLOBUS_XIO_GSI_HOST_AUTHORIZATION β€” authorize the peer if the peer's identity matches the identity of the peer's hostname. 🏠

enum globus_xio_gsi_cmd_t

GSI driver specific cntls πŸŽ€

Enumerator

  • GLOBUS_XIO_GSI_SET_CREDENTIAL β€” see usage for: globus_xio_gsi_attr_cntl, globus_xio_gsi_handle_cntl
  • GLOBUS_XIO_GSI_GET_CREDENTIAL β€” see usage for: globus_xio_gsi_attr_cntl, globus_xio_gsi_handle_cntl
  • GLOBUS_XIO_GSI_SET_GSSAPI_REQ_FLAGS β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_GET_GSSAPI_REQ_FLAGS β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_SET_PROXY_MODE β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_GET_PROXY_MODE β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_SET_AUTHORIZATION_MODE β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_GET_AUTHORIZATION_MODE β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_SET_DELEGATION_MODE β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_GET_DELEGATION_MODE β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_SET_SSL_COMPATIBLE β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_SET_ANON β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_SET_WRAP_MODE β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_GET_WRAP_MODE β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_SET_BUFFER_SIZE β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_GET_BUFFER_SIZE β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_SET_PROTECTION_LEVEL β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_GET_PROTECTION_LEVEL β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_GET_TARGET_NAME β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_SET_TARGET_NAME β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_GET_CONTEXT β€” see usage for: globus_xio_gsi_handle_cntl
  • GLOBUS_XIO_GSI_GET_DELEGATED_CRED β€” see usage for: globus_xio_gsi_handle_cntl
  • GLOBUS_XIO_GSI_GET_PEER_NAME β€” see usage for: globus_xio_gsi_handle_cntl
  • GLOBUS_XIO_GSI_GET_LOCAL_NAME β€” see usage for: globus_xio_gsi_handle_cntl
  • GLOBUS_XIO_GSI_INIT_DELEGATION β€” see usage for: globus_xio_gsi_handle_cntl
  • GLOBUS_XIO_GSI_REGISTER_INIT_DELEGATION β€” see usage for: globus_xio_gsi_handle_cntl
  • GLOBUS_XIO_GSI_ACCEPT_DELEGATION β€” see usage for: globus_xio_gsi_handle_cntl
  • GLOBUS_XIO_GSI_REGISTER_ACCEPT_DELEGATION β€” see usage for: globus_xio_gsi_handle_cntl
  • GLOBUS_XIO_GSI_FORCE_SERVER_MODE β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_SET_ALLOW_MISSING_SIGNING_POLICY β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_GET_ALLOW_MISSING_SIGNING_POLICY β€” see usage for: globus_xio_gsi_attr_cntl
  • GLOBUS_XIO_GSI_SET_CREDENTIALS_DIR β€” see usage for: globus_xio_gsi_attr_cntl, globus_xio_gsi_handle_cntl
  • GLOBUS_XIO_GSI_SET_APPLICATION_PROTOCOLS β€” see usage for: globus_xio_gsi_attr_cntl, globus_xio_gsi_handle_cntl

enum globus_xio_gsi_delegation_mode_t

Globus XIO GSI delegation modes πŸ¦‹

Enumerator

  • GLOBUS_XIO_GSI_DELEGATION_MODE_NONE β€” no delegation. none. nada. πŸ’€
  • GLOBUS_XIO_GSI_DELEGATION_MODE_LIMITED β€” delegate a limited proxy
  • GLOBUS_XIO_GSI_DELEGATION_MODE_FULL β€” delegate a full proxy

enum globus_xio_gsi_error_t

GSI driver specific error types 😭

Enumerator

  • GLOBUS_XIO_GSI_ERROR_INVALID_PROTECTION_LEVEL β€” tells you the context that got established does not meet the protection level you required
  • GLOBUS_XIO_GSI_ERROR_WRAP_GSSAPI β€” wraps a GSSAPI error
  • GLOBUS_XIO_GSI_ERROR_EMPTY_TARGET_NAME β€” means GLOBUS_XIO_GSI_IDENTITY_AUTHORIZATION is set but the target name is, uh, empty πŸ™ˆ
  • GLOBUS_XIO_GSI_ERROR_EMPTY_HOST_NAME β€” means GLOBUS_XIO_GSI_HOST_AUTHORIZATION is set but there's no host name available
  • GLOBUS_XIO_GSI_AUTHORIZATION_FAILED β€” the peer is not authorized, bestie. it's giving rejected πŸ’…
  • GLOBUS_XIO_GSI_ERROR_TOKEN_TOO_BIG β€” the token being read is too big. usually this happens when someone tries to establish a non secure session with an endpoint that expects security πŸ‘€

enum globus_xio_gsi_protection_level_t

Globus XIO GSI protection levels πŸ”₯

Enumerator

  • GLOBUS_XIO_GSI_PROTECTION_LEVEL_NONE β€” no security
  • GLOBUS_XIO_GSI_PROTECTION_LEVEL_INTEGRITY β€” messages are signed ✍️
  • GLOBUS_XIO_GSI_PROTECTION_LEVEL_PRIVACY β€” messages are signed and encrypted πŸ”

enum globus_xio_gsi_proxy_mode_t

Globus XIO GSI proxy modes πŸŽ€

Enumerator

  • GLOBUS_XIO_GSI_PROXY_MODE_FULL β€” accept only full proxies
  • GLOBUS_XIO_GSI_PROXY_MODE_LIMITED β€” accept full proxies and limited proxies if they are the only limited proxy in the cert chain
  • GLOBUS_XIO_GSI_PROXY_MODE_MANY β€” accept both full and limited proxies unconditionally

✨ FUNCTION DOCUMENTATION ✨

globus_xio_gsi_attr_cntl β€” GLOBUS_XIO_GSI_FORCE_SERVER_MODE

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_FORCE_SERVER_MODE , globus_bool_t server_mode)

okay so this one is an overloaded member function, provided for convenience β€” it differs from the above function only in what argument(s) it accepts. πŸ’…

Force the server mode setting.

This explicitly sets the directionality of context establishment and delegation. slay.

Parameters

  • server_mode β€” the server mode.

globus_xio_gsi_attr_cntl β€” GLOBUS_XIO_GSI_GET_ALLOW_MISSING_SIGNING_POLICY

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_GET_ALLOW_MISSING_SIGNING_POLICY , globus_bool_t * allow)

This is an overloaded member function, provided for convenience β€” it differs from the above function only in what argument(s) it accepts. Get the allow missing signing policy flag ✨

Parameters

  • allow β€” the flag currently set

globus_xio_gsi_attr_cntl β€” GLOBUS_XIO_GSI_GET_AUTHORIZATION_MODE

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_GET_AUTHORIZATION_MODE ,
    globus_xio_gsi_authorization_mode_t * authz_mode)

This is an overloaded member function, provided for convenience β€” it differs from the above function only in what argument(s) it accepts. Get the authorization mode πŸ’…

Parameters

  • authz_mode β€” the authorization mode that is currently in effect

globus_xio_gsi_attr_cntl β€” GLOBUS_XIO_GSI_GET_BUFFER_SIZE

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_GET_BUFFER_SIZE , globus_size_t * buffer_size)

This is an overloaded member function, provided for convenience β€” it differs from the above function only in what argument(s) it accepts. Get the read buffer size 🫢

The read buffer is used for buffering wrapped data, and it starts out initialized with a default size of 128K, then scales dynamically so it can always fit whole tokens. it's giving adaptable πŸ’…

Parameters

  • buffer_size β€” the size of the read buffer

globus_xio_gsi_attr_cntl β€” GLOBUS_XIO_GSI_GET_CREDENTIAL

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_GET_CREDENTIAL , gss_cred_id_t * credential)

This is an overloaded member function, provided for convenience β€” it differs from the above function only in what argument(s) it accepts. Get the credential to be used πŸ”‘

Parameters

  • credential β€” the credential that is currently set. > heads up bestie: this will only return a credential if a credential was explicitly set prior to this call. It will not return any credential automatically acquired during context initialization. no cap πŸ™ˆ

globus_xio_gsi_attr_cntl β€” GLOBUS_XIO_GSI_GET_DELEGATION_MODE

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_GET_DELEGATION_MODE , globus_xio_gsi_delegation_mode_t *
    delegation_mode)

This is an overloaded member function, provided for convenience β€” it differs from the above function only in what argument(s) it accepts. Get the delegation mode πŸ¦‹

Parameters

  • delegation_mode β€” the delegation mode currently in effect

globus_xio_gsi_attr_cntl β€” GLOBUS_XIO_GSI_GET_GSSAPI_REQ_FLAGS

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_GET_GSSAPI_REQ_FLAGS , OM_uint32 * req_flags)

This is an overloaded member function, provided for convenience β€” it differs from the above function only in what argument(s) it accepts. Get the GSSAPI req_flags to be used ⭐

Parameters

  • req_flags β€” the req flags currently in effect

globus_xio_gsi_attr_cntl β€” GLOBUS_XIO_GSI_GET_PROTECTION_LEVEL

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_GET_PROTECTION_LEVEL , globus_xio_gsi_protection_level_t
    * protection_level)

This is an overloaded member function, provided for convenience β€” it differs from the above function only in what argument(s) it accepts. Get the protection level πŸ”₯

Parameters

  • protection_level β€” the current protection level

globus_xio_gsi_attr_cntl β€” GLOBUS_XIO_GSI_GET_PROXY_MODE

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_GET_PROXY_MODE , globus_xio_gsi_proxy_mode_t *
    proxy_mode)

This is an overloaded member function, provided for convenience β€” it differs from the above function only in what argument(s) it accepts. Get the proxy mode πŸŽ€

Parameters

  • proxy_mode β€” the proxy mode that is currently in effect
Note β€” changing the proxy mode changes the req_flags. yup, they're linked, iykyk πŸ’…

globus_xio_gsi_attr_cntl β€” GLOBUS_XIO_GSI_GET_TARGET_NAME

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_GET_TARGET_NAME , gss_name_t * target_name)

This is an overloaded member function, provided for convenience β€” it differs from the above function only in what argument(s) it accepts. Set the expected peer name ✨

Parameters

  • target_name β€” the expected peer name

globus_xio_gsi_attr_cntl β€” GLOBUS_XIO_GSI_GET_WRAP_MODE

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_GET_WRAP_MODE , globus_bool_t * wrap_mode)

This is an overloaded member function, provided for convenience β€” it differs from the above function only in what argument(s) it accepts. Get the wrapping mode 🌸

This mode determines whether tokens will be wrapped with a Globus IO style header or not. 🎁

Parameters

  • wrap_mode β€” the wrapping mode currently in use.

okay so we're still deep in the globus_xio_gsi_attr_cntl overloads, bestie, and there are a lot of them, so buckle up πŸ’–


GLOBUS_XIO_GSI_SET_ALLOW_MISSING_SIGNING_POLICY

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_SET_ALLOW_MISSING_SIGNING_POLICY , globus_bool_t allow)

yep, it's an overloaded member function, provided for convenience β€” it only differs from the one above in what argument(s) it accepts. This one sets the allow missing signing policy flag ✨

Parameters

  • allow β€” the flag setting to use
Note: changing this flag changes the req_flags. ikyk.

GLOBUS_XIO_GSI_SET_ANON

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_SET_ANON , globus_bool_t anon_mode)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. this one does anonymous authentication πŸ¦‹

Parameters

  • anon_mode β€” the ssl compatibility mode to use
Note: changing the ssl compatibility mode changes the req_flags and the wrapping mode.

GLOBUS_XIO_GSI_SET_APPLICATION_PROTOCOLS

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_SET_APPLICATION_PROTOCOLS , char ** protocols)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. sets the list of application protocols to negotiate during the TLS handshake. it uses the TLS ALPN extension, periodt πŸ’…

Parameters

  • protocols β€” an array of protocol names. the array must be terminated by a NULL pointer.

GLOBUS_XIO_GSI_SET_AUTHORIZATION_MODE

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_SET_AUTHORIZATION_MODE ,
    globus_xio_gsi_authorization_mode_t authz_mode)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. sets the authorization mode πŸ‘‘

Parameters

  • authz_mode β€” the authorization mode to set

string opt: auth="none"|"self"|"host"|"id"


GLOBUS_XIO_GSI_SET_BUFFER_SIZE

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_SET_BUFFER_SIZE , globus_size_t buffer_size)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. sets the read buffer size 🌸

the read buffer is what buffers wrapped data. it starts out with a default size of 128K and scales dynamically so it can always fit whole tokens. the way it just grows when it needs to?? iconic.

Parameters

  • buffer_size β€” the size of the read buffer

GLOBUS_XIO_GSI_SET_CREDENTIAL

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_SET_CREDENTIAL , gss_cred_id_t credential)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. sets the credential to be used πŸ’–

Parameters

  • credential β€” the credential to set. the credential structure needs to remain valid for the lifetime of any XIO data structure it is used by.
Note: if this is called with the handle_cntl, there must be no outstanding operations on the handle. fr fr, don't do it.

GLOBUS_XIO_GSI_SET_CREDENTIALS_DIR

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_SET_CREDENTIALS_DIR , const char * directory)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. sets the directory for credentials to use when accepting a security context. this is used when a service requires different credentials based on the SNI TLS extension 🧚

Parameters

  • directory β€” the path to the directory containing credentials. string opt: credentials_dir=string

GLOBUS_XIO_GSI_SET_DELEGATION_MODE

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_SET_DELEGATION_MODE , globus_xio_gsi_delegation_mode_t
    delegation_mode)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. sets the delegation mode ✨

Parameters

  • delegation_mode β€” the delegation mode to use
Note: changing the delegation mode changes the req_flags.

GLOBUS_XIO_GSI_SET_GSSAPI_REQ_FLAGS

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_SET_GSSAPI_REQ_FLAGS , OM_uint32 req_flags)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. sets the GSSAPI req_flags to be used πŸ”₯

Parameters

  • req_flags β€” the req_flags to set

GLOBUS_XIO_GSI_SET_PROTECTION_LEVEL

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_SET_PROTECTION_LEVEL , globus_xio_gsi_protection_level_t
    protection_level)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. sets the protection level πŸ›‘οΈ

Parameters

  • protection_level β€” the protection level to set
Note: changing the proxy mode changes the req_flags.

string opt: protection="none"|"private"|"integrity"


GLOBUS_XIO_GSI_SET_PROXY_MODE

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_SET_PROXY_MODE , globus_xio_gsi_proxy_mode_t proxy_mode)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. sets the proxy mode πŸŽ€

Parameters

  • proxy_mode β€” the proxy mode to set
Note: changing the proxy mode changes the req_flags.

string opt: proxy="many"|"full"|"limited"


GLOBUS_XIO_GSI_SET_SSL_COMPATIBLE

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_SET_SSL_COMPATIBLE , globus_bool_t ssl_mode)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. makes the on-the-wire protocol SSL compatible πŸ¦‹

heads up bestie: this implies no wrapping of security tokens and no delegation.

Parameters

  • ssl_mode β€” the ssl compatibility mode to use
Note: changing the ssl compatibility mode changes the req_flags.

string opt: ssl_compatible="true"|"false"


GLOBUS_XIO_GSI_SET_TARGET_NAME

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_SET_TARGET_NAME , gss_name_t target_name)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. gets the expected peer name πŸ‘€

Parameters

  • target_name β€” the expected peer name

string opt: subject=string


GLOBUS_XIO_GSI_SET_WRAP_MODE

globus_result_t globus_xio_gsi_attr_cntl (attr , driver ,
    GLOBUS_XIO_GSI_SET_WRAP_MODE , globus_bool_t wrap_mode)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. sets the wrapping mode πŸ’«

this mode decides whether tokens get wrapped with a Globus IO style header or not. that's the whole vibe check.

Parameters

  • wrap_mode β€” the wrapping mode to use

okay we're pivoting to the globus_xio_gsi_handle_cntl girlies now, these work on a handle instead of an attr, so like. main character energy πŸ’…

GLOBUS_XIO_GSI_ACCEPT_DELEGATION

globus_result_t globus_xio_gsi_handle_cntl (handle , driver ,
    GLOBUS_XIO_GSI_ACCEPT_DELEGATION , gss_cred_id_t * credential,
    gss_OID_set restriction_oids, gss_buffer_set_t restriction_buffers,
    OM_uint32 time_req)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. it's the accept delegation-at-any-time process 🫢

Parameters

  • credential β€” the delegated GSS credential
  • restriction_oids β€” the OIDs for X.509 extensions to embed in the delegated credential
  • restriction_buffers β€” the corresponding bodies for the X.509 extensions
  • time_req β€” the requested lifetime of the delegated credential

GLOBUS_XIO_GSI_GET_CONTEXT

globus_result_t globus_xio_gsi_handle_cntl (handle , driver ,
    GLOBUS_XIO_GSI_GET_CONTEXT , gss_ctx_id_t * context)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. gets the GSS context ✨

Parameters

  • context β€” the GSS context

GLOBUS_XIO_GSI_GET_CREDENTIAL

globus_result_t globus_xio_gsi_handle_cntl (handle , driver ,
    GLOBUS_XIO_GSI_GET_CREDENTIAL , gss_cred_id_t * credential)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. gets the credential to be used πŸ’–

Parameters

  • credential β€” the credential that is currently set. this will only return a credential if a credential was explicitly set prior to this call. it will not return any credential automatically acquired during context initialization. so don't come for it expecting the auto one, she's not there.

GLOBUS_XIO_GSI_GET_DELEGATED_CRED

globus_result_t globus_xio_gsi_handle_cntl (handle , driver ,
    GLOBUS_XIO_GSI_GET_DELEGATED_CRED , gss_cred_id_t * credential)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. gets the delegated credential πŸŽ€

Parameters

  • credential β€” the delegated credential

GLOBUS_XIO_GSI_GET_LOCAL_NAME

globus_result_t globus_xio_gsi_handle_cntl (handle , driver ,
    GLOBUS_XIO_GSI_GET_LOCAL_NAME , gss_name_t * local_name)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. gets the GSS name associated with the local credentials πŸ¦‹

Parameters

  • local_name β€” the GSS name of the local credentials

GLOBUS_XIO_GSI_GET_PEER_NAME

globus_result_t globus_xio_gsi_handle_cntl (handle , driver ,
    GLOBUS_XIO_GSI_GET_PEER_NAME , gss_name_t * peer_name)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. gets the name of the peer πŸ‘€

Parameters

  • peer_name β€” the GSS name of the peer.

GLOBUS_XIO_GSI_INIT_DELEGATION

globus_result_t globus_xio_gsi_handle_cntl (handle , driver ,
    GLOBUS_XIO_GSI_INIT_DELEGATION , gss_cred_id_t credential, gss_OID_set
    restriction_oids, gss_buffer_set_t restriction_buffers, OM_uint32
    time_req)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. initializes the delegation-at-any-time process πŸ”₯

Parameters

  • credential β€” the GSS credential to delegate
  • restriction_oids β€” the OIDs for X.509 extensions to embed in the delegated credential
  • restriction_buffers β€” the corresponding bodies for the X.509 extensions
  • time_req β€” the lifetime of the delegated credential

GLOBUS_XIO_GSI_REGISTER_ACCEPT_DELEGATION

globus_result_t globus_xio_gsi_handle_cntl (handle , driver ,
    GLOBUS_XIO_GSI_REGISTER_ACCEPT_DELEGATION , gss_OID_set
    restriction_oids, gss_buffer_set_t restriction_buffers, OM_uint32
    time_req, globus_xio_gsi_delegation_accept_callback_t callback, void *
    callback_arg)

overloaded member function, provided for convenience, only differs in what argument(s) it accepts. this is the non-blocking delegation-at-any-time process β€” she doesn't wait around, she takes a callback 🧚

Parameters

  • restriction_oids β€” the OIDs for X.509 extensions to embed in the delegated credential
  • restriction_buffers β€” the corresponding bodies for the X.509 extensions
  • time_req β€” the lifetime of the delegated credential
  • callback β€” the callback to call when the operation completes
  • callback_arg β€” the arguments to pass to the callback

and that's the delegation crew πŸ’œ but hold on, we are not done yet bestie, there's more coming πŸ‘‘

Okay bestie, final stretch of the globus_xio_gsi_handle_cntl overloads. These are the convenience ones, and they're giving very specific control energy. Let's go. πŸŽ€


πŸ¦‹ GLOBUS_XIO_GSI_REGISTER_INIT_DELEGATION overload πŸ¦‹

globus_result_t globus_xio_gsi_handle_cntl (handle , driver , GLOBUS_XIO_GSI_REGISTER_INIT_DELEGATION , gss_cred_id_t credential, gss_OID_set restriction_oids, gss_buffer_set_t restriction_buffers, OM_uint32 time_req, globus_xio_gsi_delegation_init_callback_t callback, void * callback_arg)

So this is an overloaded member function, provided for convenience β€” it differs from the above function only in what argument(s) it accepts. πŸ’…

It initializes the non-blocking delegation-at-any-time process. Slay.

Parameters 🫢

  • credential β€” the GSS credential to delegate. Give it up, bestie. πŸ’–
  • restriction_oids β€” the OIDS for X.509 extensions to embed in the delegated credential. Extra metadata, no cap. ✨
  • restriction_buffers β€” the corresponding bodies for the X.509 extensions. Matching set energy. πŸŽ€
  • time_req β€” the lifetime of the delegated credential. Its little lifetime, periodt. ⏳
  • callback β€” the callback to call when the operation completes. Ring ring, bestie. πŸ“ž
  • callback_arg β€” the arguments to pass to the callback. Give it the tea. πŸ«–

🌈 GLOBUS_XIO_GSI_SET_APPLICATION_PROTOCOLS overload 🌈

globus_result_t globus_xio_gsi_handle_cntl (handle , driver , GLOBUS_XIO_GSI_SET_APPLICATION_PROTOCOLS , char ** protocols)

Another overloaded member function, provided for convenience β€” the only glow-up from the one above is the argument list it accepts. πŸ’…

It sets the list of application protocols to negotiate during TLS handshake. This uses the TLS ALPN extension. Fancy protocol negotiation vibes. πŸ¦‹

Parameters 🫢

  • protocols β€” an array of protocol names. The array must be terminated by a NULL pointer. No cap. 🚫

πŸ’œ GLOBUS_XIO_GSI_SET_CREDENTIAL overload πŸ’œ

globus_result_t globus_xio_gsi_handle_cntl (handle , driver , GLOBUS_XIO_GSI_SET_CREDENTIAL , gss_cred_id_t credential)

Yes bestie, another overloaded member function, provided for convenience β€” it differs from the above function only in what argument(s) it accepts. πŸ’…

It sets the credential to be used. Main character credential energy. πŸ‘‘

Parameters 🫢

  • credential β€” the credential to set. The credential structure needs to remain valid for the lifetime of any XIO data structure it is used by. So don't let it expire on you. πŸ’€

Note 🚨

If this is called with the handle_cntl, there must be no outstanding operations on the handle. So wait until everything's done, bestie. No rushing. πŸ›‘

✨ GLOBUS_XIO_GSI_SET_CREDENTIALS_DIR overload ✨

globus_result_t globus_xio_gsi_handle_cntl (handle , driver , GLOBUS_XIO_GSI_SET_CREDENTIALS_DIR , const char * directory)

Once again, an overloaded member function, provided for convenience β€” it differs from the above function only in what argument(s) it accepts. πŸ’…

It sets the directory for credentials to use when accepting a security context. This is used when a service requires different credentials based on the SNI TLS extension. SNI-aware credential shopping, iconic. πŸ›οΈ

Parameters 🫢

  • directory β€” the path to the directory containing credentials. Also: string opt: credentials_dir=string β€” that's the literal option string, iykyk. πŸ“

πŸ‘‘ Author πŸ‘‘

Generated automatically by Doxygen for globus_xio_gsi_driver from the source code.


That's the whole page, bestie. This source is globus_xio_gsi_driver, Version 5.4, and it's globus_xio_gsi_driver(3) energy. Stay slaying. πŸ’…βœ¨

πŸ“¦ where this page comes from