globus_xio_gsi_driver(3)
π 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 theglobus_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 toglobus_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 thehttpserver and callscloseon 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_PROXYX509_USER_CERTX509_USER_KEYX509_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_cntlGLOBUS_XIO_GSI_GET_CREDENTIALβ see usage for:globus_xio_gsi_attr_cntl,globus_xio_gsi_handle_cntlGLOBUS_XIO_GSI_SET_GSSAPI_REQ_FLAGSβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_GET_GSSAPI_REQ_FLAGSβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_SET_PROXY_MODEβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_GET_PROXY_MODEβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_SET_AUTHORIZATION_MODEβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_GET_AUTHORIZATION_MODEβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_SET_DELEGATION_MODEβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_GET_DELEGATION_MODEβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_SET_SSL_COMPATIBLEβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_SET_ANONβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_SET_WRAP_MODEβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_GET_WRAP_MODEβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_SET_BUFFER_SIZEβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_GET_BUFFER_SIZEβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_SET_PROTECTION_LEVELβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_GET_PROTECTION_LEVELβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_GET_TARGET_NAMEβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_SET_TARGET_NAMEβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_GET_CONTEXTβ see usage for:globus_xio_gsi_handle_cntlGLOBUS_XIO_GSI_GET_DELEGATED_CREDβ see usage for:globus_xio_gsi_handle_cntlGLOBUS_XIO_GSI_GET_PEER_NAMEβ see usage for:globus_xio_gsi_handle_cntlGLOBUS_XIO_GSI_GET_LOCAL_NAMEβ see usage for:globus_xio_gsi_handle_cntlGLOBUS_XIO_GSI_INIT_DELEGATIONβ see usage for:globus_xio_gsi_handle_cntlGLOBUS_XIO_GSI_REGISTER_INIT_DELEGATIONβ see usage for:globus_xio_gsi_handle_cntlGLOBUS_XIO_GSI_ACCEPT_DELEGATIONβ see usage for:globus_xio_gsi_handle_cntlGLOBUS_XIO_GSI_REGISTER_ACCEPT_DELEGATIONβ see usage for:globus_xio_gsi_handle_cntlGLOBUS_XIO_GSI_FORCE_SERVER_MODEβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_SET_ALLOW_MISSING_SIGNING_POLICYβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_GET_ALLOW_MISSING_SIGNING_POLICYβ see usage for:globus_xio_gsi_attr_cntlGLOBUS_XIO_GSI_SET_CREDENTIALS_DIRβ see usage for:globus_xio_gsi_attr_cntl,globus_xio_gsi_handle_cntlGLOBUS_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 proxyGLOBUS_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 requiredGLOBUS_XIO_GSI_ERROR_WRAP_GSSAPIβ wraps a GSSAPI errorGLOBUS_XIO_GSI_ERROR_EMPTY_TARGET_NAMEβ meansGLOBUS_XIO_GSI_IDENTITY_AUTHORIZATIONis set but the target name is, uh, empty πGLOBUS_XIO_GSI_ERROR_EMPTY_HOST_NAMEβ meansGLOBUS_XIO_GSI_HOST_AUTHORIZATIONis set but there's no host name availableGLOBUS_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 securityGLOBUS_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 proxiesGLOBUS_XIO_GSI_PROXY_MODE_LIMITEDβ accept full proxies and limited proxies if they are the only limited proxy in the cert chainGLOBUS_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
NULLpointer.
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_flagsto 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 aNULLpointer. 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
- fedora 43: globus-xio-gsi-driver-doc 5.4-10.fc43 Β· Apache-2.0
- fedora 44: globus-xio-gsi-driver-doc 5.4-11.fc44 Β· Apache-2.0
- ubuntu resolute: libglobus-xio-gsi-driver-doc 5.4-3build2 Β· Apache-2.0
- ubuntu stonking: libglobus-xio-gsi-driver-doc 5.4-3build2 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms