HP Open Source Security for OpenVMS Volume 3: Kerberos > Chapter 5 GSSAPI (Generic Security Services Application
Programming Interface)
gss_display_status — Convert GSSAPI status code to text for user display
C Prototype | |
OM_uint32 gss_display_status( OM_uint32 * minor_status, OM_uint32 status_value, int status_type gss_OID mech_type, OM_uint32 * message_context, gss_buffer_t status_string );
|
Arguments | |
minor_status
(output) | | An implementation-specific
status code. | status_value (input) | | The status value to be converted. | status_type (input) | | One of the following values: GSS_C_GSS_CODE — The status_value is
a GSS status code. GSS_C_MECH_CODE — The status_value is
a mechanism status code. | mech_type (input) | | The underlying mechanism
(used to interpret a minor_status value).
Supply GSS_C_NO_OID to obtain the system default. | message_context (input/output) | | | This argument should be initialized
to zero by the caller on the first call. If further messages are
contained in the status_value argument,
message_context will be nonzero on return,
and this value should be passed back to subsequent calls, along
with the same status_value, status_type,
and mech_type arguments. | status_string (output) | | The textual interpretation
of the status_value. Storage associated
with this argument must be freed by the application after use with
a call to gss_release_buffer. |
Description | |
This routine allows an application to obtain a textual representation
of a GSSAPI status code, for display to the user or for logging
purposes. Since some status values may indicate multiple conditions,
applications may need to call gss_display_status multiple
times, each call generating a single text string. The message_context argument
is used to store state information about which error messages have
already been extracted from a given status_value; message_context must
be initialized to zero by the application prior to the first call,
and gss_display_status will return a nonzero
value in this argument if there are further messages to extract. The message_context argument contains
all state information required by gss_display_status in
order to extract further messages from the status_value;
even when a nonzero value is returned in this argument, the application
is not required to call gss_display_status again
unless subsequent messages are desired. The following code extracts
all messages from a given status code and prints them to SYS$ERROR. OM_uint32 message_context; OM_uint32 status_code; OM_uint32 maj_status; OM_uint32 min_status; gss_buffer_desc status_string; . . .
|
message_context = 0; do { maj_status = gss_display_status(&min_status status_code, GSS_C_GSS_CODE, GSS_C_NO_OID, &message_context, &status_string); fprintf(stderr, “%.*s\n”, (int)status_string.length, (char *)status_string.value); gss_release_buffer(&min_status, &status_string); } while (message_context != 0);
|
Return
Values | |
This routine returns one of the following GSS status codes: GSS_S_COMPLETE | Successful completion. | GSS_S_BAD_MECH | Indicates that translation in accordance with
an unsupported mechanism type was requested. | GSS_S_BAD_STATUS | The status_value was
not recognized, or the status_type was
neither GSS_C_GSS_CODE nor GSS_C_MECH_CODE. |
|