---
name: "globus_xio_gsi_driver"
section: "3"
platform: "linux"
package: "libglobus-xio-gsi-driver-doc"
version: "5.4-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/globus_xio_gsi_driver"
---

# globus\_xio\_gsi\_driver(3)

Globus XIO GSI Driver - Globus XIO GSI Driver.

## NAME

globus\_xio\_gsi\_driver - Globus XIO GSI Driver

 \- Globus XIO GSI Driver.

## SYNOPSIS

### Typedefs

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

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

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.

## Opening/Closing

An XIO handle with the gsi driver can be created with either globus\_xio\_handle\_create () or globus\_xio\_server\_register\_accept ().

If the handle is created with globus\_xio\_server\_register\_accept (), the globus\_xio\_register\_open () call will proceed to accept a GSSAPI security context. Upon successful completion of the open (after the open callback has been called) 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 ().

## 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. This is due to the fact that 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.

## 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.

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).

## 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 ()

## Typedef Documentation

### 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

### 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*

  *Do not perform any authorization. This will cause a error when used in conjunction with delegation on the init/client side.*

- *GLOBUS\_XIO\_GSI\_SELF\_AUTHORIZATION*

  *Authorize the peer if the peer has the same identity as ourselves*

- *GLOBUS\_XIO\_GSI\_IDENTITY\_AUTHORIZATION*

  *Authorize the peer if the peer identity matches the identity set in the target name.*

- *GLOBUS\_XIO\_GSI\_HOST\_AUTHORIZATION*

  *Authorize the peer if the identity of the peer matches the identity of the peer 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*

- *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*

  *Indicates that the established context does not meet the required protection level*

- *GLOBUS\_XIO\_GSI\_ERROR\_WRAP\_GSSAPI*

  *Wraps a GSSAPI error*

- *GLOBUS\_XIO\_GSI\_ERROR\_EMPTY\_TARGET\_NAME*

  *Indicates that GLOBUS\_XIO\_GSI\_IDENTITY\_AUTHORIZATION is set but that the target name is empty*

- *GLOBUS\_XIO\_GSI\_ERROR\_EMPTY\_HOST\_NAME*

  *Indicates that GLOBUS\_XIO\_GSI\_HOST\_AUTHORIZATION is set but that no host name is available*

- *GLOBUS\_XIO\_GSI\_AUTHORIZATION\_FAILED*

  *Indicates that the peer is not authorized*

- *GLOBUS\_XIO\_GSI\_ERROR\_TOKEN\_TOO\_BIG*

  *Indicates the token being read is too big. Usually happens when someone tries to establish a non secure session with a 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\_result\_t globus\_xio\_gsi\_attr\_cntl (attr, driver, GLOBUS\_XIO\_GSI\_FORCE\_SERVER\_MODE, globus\_bool\_t server\_mode)

*This 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.*

**Parameters**

*server\_mode The server mode.*

### 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\_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\_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, is initialized with a default size of 128K and scaled dynamically to always be able to fit whole tokens.*

**Parameters**

*buffer\_size The size of the read buffer*

### 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. 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.*

### 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\_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\_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\_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*

### 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\_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.*

### globus\_result\_t globus\_xio\_gsi\_attr\_cntl (attr, driver, GLOBUS\_XIO\_GSI\_SET\_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. Set the allow missing signing policy flag*

**Parameters**

*allow The flag setting to use*

**Note**

*Changing this flag changes the req\_flags* \

### globus\_result\_t globus\_xio\_gsi\_attr\_cntl (attr, driver, GLOBUS\_XIO\_GSI\_SET\_ANON, globus\_bool\_t anon\_mode)

*This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Do 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\_result\_t globus\_xio\_gsi\_attr\_cntl (attr, driver, GLOBUS\_XIO\_GSI\_SET\_APPLICATION\_PROTOCOLS, char \*\* protocols)

*This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Set the list of application protocols to negotiate during TLS handshake. This uses tht TLS ALPN extension.*

**Parameters**

*protocols An array of protocol names. The array must be terminated by a NULL pointer.*

### globus\_result\_t globus\_xio\_gsi\_attr\_cntl (attr, driver, GLOBUS\_XIO\_GSI\_SET\_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. Set the authorization mode*

**Parameters**

*authz\_mode The authorization mode to set*

*string opt:* `auth='none'|'self'|'host'|'id'`

### globus\_result\_t globus\_xio\_gsi\_attr\_cntl (attr, driver, GLOBUS\_XIO\_GSI\_SET\_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. Set the read buffer size*

*The read buffer is used for buffering wrapped data, is initialized with a default size of 128K and scaled dynamically to always be able to fit whole tokens.*

**Parameters**

*buffer\_size The size of the read buffer*

### globus\_result\_t globus\_xio\_gsi\_attr\_cntl (attr, driver, GLOBUS\_XIO\_GSI\_SET\_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. Set 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.*

### globus\_result\_t globus\_xio\_gsi\_attr\_cntl (attr, driver, GLOBUS\_XIO\_GSI\_SET\_CREDENTIALS\_DIR, const char \* directory)

*This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Set 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\_result\_t globus\_xio\_gsi\_attr\_cntl (attr, driver, GLOBUS\_XIO\_GSI\_SET\_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. Set the delegation mode*

**Parameters**

*delegation\_mode The delegation mode to use*

**Note**

*Changing the delegation mode changes the req\_flags* \

### globus\_result\_t globus\_xio\_gsi\_attr\_cntl (attr, driver, GLOBUS\_XIO\_GSI\_SET\_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. Set the GSSAPI req\_flags to be used*

**Parameters**

*req\_flags The req\_flags to set*

### globus\_result\_t globus\_xio\_gsi\_attr\_cntl (attr, driver, GLOBUS\_XIO\_GSI\_SET\_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. Set 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\_result\_t globus\_xio\_gsi\_attr\_cntl (attr, driver, GLOBUS\_XIO\_GSI\_SET\_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. Set 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\_result\_t globus\_xio\_gsi\_attr\_cntl (attr, driver, GLOBUS\_XIO\_GSI\_SET\_SSL\_COMPATIBLE, globus\_bool\_t ssl\_mode)

*This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Make the on the wire protocol SSL compatible.*

*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\_result\_t globus\_xio\_gsi\_attr\_cntl (attr, driver, GLOBUS\_XIO\_GSI\_SET\_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. Get the expected peer name*

**Parameters**

*target\_name The expected peer name*

*string opt:* `subject=`*string*

### globus\_result\_t globus\_xio\_gsi\_attr\_cntl (attr, driver, GLOBUS\_XIO\_GSI\_SET\_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. Set 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 to use*

### 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)

*This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. 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\_result\_t globus\_xio\_gsi\_handle\_cntl (handle, driver, GLOBUS\_XIO\_GSI\_GET\_CONTEXT, gss\_ctx\_id\_t \* context)

*This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Get the GSS context*

**Parameters**

*context The GSS context*

### globus\_result\_t globus\_xio\_gsi\_handle\_cntl (handle, 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. 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.*

### globus\_result\_t globus\_xio\_gsi\_handle\_cntl (handle, driver, GLOBUS\_XIO\_GSI\_GET\_DELEGATED\_CRED, 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 delegated credential*

**Parameters**

*credential The delegated credential*

### globus\_result\_t globus\_xio\_gsi\_handle\_cntl (handle, driver, GLOBUS\_XIO\_GSI\_GET\_LOCAL\_NAME, gss\_name\_t \* local\_name)

*This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Get the GSS name associated with the local credentials*

**Parameters**

*local\_name The GSS name of the local credentials*

### globus\_result\_t globus\_xio\_gsi\_handle\_cntl (handle, driver, GLOBUS\_XIO\_GSI\_GET\_PEER\_NAME, gss\_name\_t \* peer\_name)

*This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Get the name of the peer*

**Parameters**

*peer\_name The GSS name of the peer.*

### 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)

*This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Initialize 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\_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)

*This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Accept non-blocking delegation-at-any-time process*

**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*

### 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)

*This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Initialize non-blocking 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* \
 *callback The callback to call when the operation completes* \
 *callback\_arg The arguments to pass to the callback*

### globus\_result\_t globus\_xio\_gsi\_handle\_cntl (handle, driver, GLOBUS\_XIO\_GSI\_SET\_APPLICATION\_PROTOCOLS, char \*\* protocols)

*This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Set the list of application protocols to negotiate during TLS handshake. This uses tht TLS ALPN extension.*

**Parameters**

*protocols An array of protocol names. The array must be terminated by a NULL pointer.*

### globus\_result\_t globus\_xio\_gsi\_handle\_cntl (handle, driver, GLOBUS\_XIO\_GSI\_SET\_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. Set 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.*

### globus\_result\_t globus\_xio\_gsi\_handle\_cntl (handle, driver, GLOBUS\_XIO\_GSI\_SET\_CREDENTIALS\_DIR, const char \* directory)

*This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Set 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*

## Author

*Generated automatically by Doxygen for globus\_xio\_gsi\_driver from the source code.*
