|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T d
Length: 95007 (0x1731f)
Types: TextFile
Names: »draft-ietf-cat-secservice-00.txt«
└─⟦4f9d7c866⟧ Bits:30007245 EUUGD6: Sikkerheds distributionen
└─⟦this⟧ »./papers/IETF-drafts/draft-ietf-cat-secservice-00.txt«
Network Working Group John Wray (DEC)
INTERNET-DRAFT IETF Common Authentication Technology Working Group
10 July 1991
Generic Security Service Application Program Interface
Overview and C bindings
STATUS OF THIS MEMO
This draft document will be submitted to the RFC editor as a proposed
interface specification for use by integrators of security features into
caller protocols. Distribution of this memo is unlimited. Please send
comments to "cat-ietf@MIT.EDU."
ABSTRACT
This draft document specifies C language bindings for the Generic
Security Service Application Program Interface (GSS-API), which is
described at a language-independent conceptual level in other drafts.
The Generic Security Service Application Programming Interface (GSS-API)
provides security services to its callers, and is intended for
implementation atop alternative underlying cryptographic mechanisms.
Typically, GSS-API callers will be application protocols into which
security enhancements are integrated through invocation of services
provided by the GSS-API. The GSS-API allows a caller application to
authenticate a principal identity associated with a peer application, to
delegate rights to a peer, and to apply security services such as
confidentiality and integrity on a per-message basis.
- 1 -
\f
Contents
1 Introduction 5
2 GSSAPI Routines 6
2.1 Data Types and Calling Conventions 7
2.1.1 Structured data types 7
2.1.2 Integer types 7
2.1.3 String and similar data 7
2.1.3.1 Opaque data types 7
2.1.3.2 Character strings 8
2.1.4 Object Identifiers 8
2.1.5 Object Identifier Sets 9
2.1.6 Credentials 9
2.1.7 Contexts 10
2.1.8 Authentication tokens 10
2.1.9 Status values 10
2.1.9.1 GSS status codes 10
2.1.9.2 Mechanism-specific status codes 12
2.1.10 Names 12
2.1.11 Channel Bindings 13
2.1.12 Optional parameters 14
2.1.12.1 gss_buffer_t types 15
2.1.12.2 Integer types (input) 15
2.1.12.3 Integer types (output) 15
2.1.12.4 Pointer types 16
2.1.12.5 Object IDs 16
2.1.12.6 Object ID Sets 16
2.1.12.7 Credentials 16
3 GSSAPI routine descriptions 17
3.1 gss_acquire_cred 17
3.2 gss_release_cred 18
3.3 gss_init_sec_context 19
3.4 gss_accept_sec_context 23
3.5 gss_process_context_token 26
3.6 gss_delete_sec_context 27
3.7 gss_context_time 28
3.8 gss_sign 29
3.9 gss_verify 30
3.10 gss_seal 31
3.11 gss_unseal 33
3.12 gss_display_status 34
3.13 gss_indicate_mechs 35
3.14 gss_compare_name 36
3.15 gss_display_name 37
3.16 gss_import_name 38
3.17 gss_release_name 38
3.18 gss_release_buffer 39
3.19 gss_release_oid_set 40
4 References 41
- 2 -
\f
Figures
Figure 2-1 GSSAPI Routines 6
Tables
Table 2-1 Calling Errors 11
Table 2-2 Routine Errors 11
Table 2-3 Supplementary Status Bits 11
- 3 -
\f
1 Introduction
The Generic Security Service Application Programming Interface [A]
provides security services to calling applications. It allows a
communicating application to authenticate the user associated
with another application, to delegate rights to another
application, and to apply security services such as
confidentiality and integrity on a per-message basis.
There are four stages to using the GSSAPI:
7 The application acquires a set of credentials with which it
may prove its identity to other processes. The application's
credentials vouch for its global identity, which may or may
not be related to the local username under which it is
running.
7 A pair of communicating applications establish a joint
security context using their credentials. The security
context is a pair of GSSAPI data structures that contain
shared state information, which is required in order that
per-message security services may be provided. As part of
the establishment of a security context, the context
initiator is authenticated to the responder, and may require
that the responder is authenticated in turn. The initiator
may optionally give the responder the right to initiate
further security contexts. This transfer of rights is termed
delegation, and is achieved by creating a set of credentials,
similar to those used by the originating application, but
which may be used by the responder.
To establish and maintain the shared information that makes
up the security context, certain GSSAPI calls will return a
token data structure, which is a cryptographically protected
opaque data type. The caller of such a GSSAPI routine is
responsible for transferring the token to the peer
application, which should then pass it to a corresponding
GSSAPI routine which will decode it and extract the
information.
7 Per-message services are invoked to apply either:
i)integrity and data origin authentication, or
ii) confidentiality, integrity and data origin
authentication
to application data, which are treated by GSSAPI as arbitrary
bit-strings. The application transmitting a message that it
wishes to protect will call the appropriate GSSAPI routine (sign
or seal) to apply protection, specifying the appropriate
- 4 -
\f
security context, and send the result to the receiving
application. The receiver will pass the received data to the
corresponding decoding routine ( verify or unseal) to remove
the protection and validate the data.
7 At the completion of a communications session (which may
extend across several connections), the peer applications
call GSSAPI routines to delete the security context.
Multiple contexts may also be used (either successively or
simultaneously) within a single communications association.
.
2 GSSAPI Routines
This section lists the functions performed by each of the GSSAPI
routines and discusses their major parameters, describing how
they are to be passed to the routines. The routines are listed
in figure 2-1.
Figure 2-1 GSSAPI Routines
Routine Function
gss_acquire_cred Assume a global identity
gss_release_cred Discard credentials
gss_init_sec_context Initiate a security context
with a peer application
gss_accept_sec_context Accept a security context
initiated by a peer application
gss_process_context_token Process a token on a security
context from a peer application
gss_delete_sec_context Discard a security context
gss_context_time Determine for how long a
context will remain valid
- 5 -
\f
Routine Function
gss_sign Sign a message; integrity
service
gss_verify Check signature on a message
gss_seal Sign (optionally encrypt) a
message; provide confidentiality
service
gss_unseal Verify (optionally decrypt)
message
gss_display_status Convert an API status code
to text
gss_indicate_mechs Determine underlying mechanism
gss_compare_name Compare two API-format names
gss_display_name Convert opaque name to text
gss_import_name Convert a textual name to
API-format
gss_release_name Discard an API-format name
gss_release_buffer Discard a buffer
gss_release_oid_set Discard a set of object
identifiers
Individual GSSAPI implementations may augment these routines
by providing additional mechanism-specific routines if
required functionality is not available from the generic
forms. Applications are encouraged to use the generic
routines wherever possible on portability grounds.
- 6 -
\f
2.1 Data Types and Calling Conventions
The following conventions are used by the GSSAPI:
2.1.1 Structured data types
Wherever these GSSAPI C-bindings describe structured data, only
fields that must be provided by all GSSAPI implementation are
documented. Individual implementations may provide additional
fields, either for internal use within GSSAPI routines, or for
use by non-portable applications.
2.1.2 Integer types
GSSAPI defines the following integer data types:
OM_uint32 32-bit unsigned integer
OM_uint16 16-bit unsigned integer
Where bit-count is important, these portable data types are used
by the GSSAPI routine definitions. Individual GSSAPI
implementations will include appropriate typedef definitions to
map this type onto a built-in data type.
2.1.3 String and similar data
Many of the GSSAPI routines take parameters and return values
that describe contiguous multiple-byte data. All such data is
passed between the GSSAPI and the caller using the gss_buffer_t
data type. This data type is a pointer to a buffer descriptor,
which consists of a length field, which contains the total
number of bytes in the datum, and a value field which contains a
pointer to the actual datum:
typedef struct gss_buffer_desc_struct {
size_t length,
void *value
} gss_buffer_desc, *gss_buffer_t;
Storage for data passed to the application by a GSSAPI routine
using the gss_buffer_t conventions is allocated by the GSSAPI
routine. The application may free this storage by invoking the
gss_release_buffer routine. Allocation of the gss_buffer_desc
object is always the responsibility of the application; Unused
gss_buffer_desc objects may be initialized to the value
GSS_C_EMPTY_BUFFER.
2.1.3.1 Opaque data types
Certain multiple-word data items are considered opaque data
types at the GSSAPI, because their internal structure has no
significance either to the GSSAPI or to the caller. Examples of
such opaque data types are the input_token parameter to
gss_init_sec_context (which is opaque to the caller), and the
input_message parameter to gss_seal (which is opaque to the
GSSAPI). Opaque data is passed between the GSSAPI and the
application using the gss_buffer_t datatype.
- 7 -
\f
2.1.3.2 Character strings
Certain multiple-word data items may be regarded as simple ISO
Latin-1 character strings. An example of this is the
input_name_buffer parameter to gss_import_name. Some GSSAPI routines
also return character strings. Character strings are passed
between the application and the GSSAPI using the gss_buffer_t
datatype, defined earlier.
2.1.4 Object Identifiers
Certain GSSAPI procedures take parameters of the type gss_OID,
or Object identifier. This is a type containing ISO-defined
tree-structured values, and is used by the GSSAPI caller to
select an underlying security mechanism. A value of type
gss_OID has the following structure:
typedef struct gss_OID_desc {
OM_uint32 length,
void *elements
} *gss_OID;
The elements field of this structure points to the first byte of
an octet string containing the ASN.1 BER encoding of the value
of the gss_OID. The length field contains the number of octets
in this value. For example, the gss_OID value corresponding to
{iso(1) identified- organization(3) icd-ecma(12)
member-company(2) dec(1011) cryptoAlgorithms(7) SPX(5)} meaning
SPX (Digital's X.509 authentication mechanism) has a length
field of 7 and an elements field pointing to seven bytes
containing the following octal values: 53,14,2,207,163,7,5. GSSAPI
implementations should provide constant gss_OID values to allow
callers to request any supported mechanism, although
applications are encouraged on portability grounds to accept the
default mechanism. gss_OID values should also be provided to
allow applications to specify particular name types (see section
2.1.10). Applications should treat gss_OID_desc values returned
by GSSAPI routines as read-only. In particular, the application
should not attempt to deallocate them. The gss_OID_desc datatype
is equivalent to the X/Open OM_object_identifier datatype[B].
2.1.5 Object Identifier Sets
Certain GSSAPI procedures take parameters of the type
gss_OID_set. This type represents one or more object
identifiers (section 2.1.4). A gss_OID_set object has the
following structure:
Typedef struct gss_OID_set_desc {
int count,
gss_OID_desc *elements
} *gss_OID_set;
- 8 -
\f
The count field contains the number of OIDs within the set. The
elements field is a pointer to an array of gss_OID_desc objects,
each of which describes a single OID. gss_OID_set values are
used to name the available mechanisms supported by the GSSAPI, to
request the use of specific mechanisms, and to indicate which
mechanisms a given credential supports. Storage associated with
gss_OID_set values returned to the application by the GSSAPI may
be deallocated by the gss_release_oid_set routine.
2.1.6 Credentials
A credential handle is a caller-opaque datum that identifies a
GSSAPI credential data structure. It is represented by the
caller-opaque type gss_cred_id_t. Credentials describe a
principal, and they give their holder the ability to act as that
principal. The GSSAPI does not make the actual credentials
available to applications; instead the credential handle is used
to identify a particular credential, held internally by GSSAPI
or underlying mechanism. Thus the credential handle contains no
security-relavent information, and requires no special
protection by the application. Depending on the implementation,
a given credential handle may refer to different credentials
when presented to the GSSAPI by different callers. Individual
GSSAPI implementations should define both the scope of a
credential handle and the scope of a credential itself (which
must be at least as wide as that of a handle). Possibilities
for credential handle scope include the process that acquired
the handle, the acquiring process and its children, or all
processes sharing some local identification information (e.g., UID).
If no handles exist by which a given credential may be reached,
the GSSAPI may delete the credential.
Certain routines allow credential handle parameters to be
omitted to indicate the use of a default credential. The
mechanism by which a default credential is established and its
scope should be defined by the individual GSSAPI implementation.
2.1.7 Contexts
The gss_ctx_id_t data type contains a caller-opaque value that
identifies one end of a GSSAPI security context. Depending on
the implementation, a given gss_ctx_id_t value may refer to
different GSSAPI security contexts when presented to the GSSAPI
by different callers. The security context holds state
information about each end of a peer communication, including
cryptographic state information. Individual GSSAPI
implementations should define the scope of a context. Since no
way is provided by which a new gss_ctx_id_t value may be
obtained for an existing context, the scope of a context should
be the same as the scope of a gss_ctx_id_t.
- 9 -
\f
2.1.8 Authentication tokens
A token is a caller-opaque type that GSSAPI uses to maintain
synchronization between the context data structures at each end
of a GSSAPI security context. The token is a cryptographically
protected bit-string, generated by the underlying mechanism at
one end of a GSSAPI security context for use by the peer
mechanism at the other end. Encapsulation (if required) and
transfer of the token are the responsibility of the peer
applications. A token is passed between the GSSAPI and the
application using the gss_buffer_t conventions.
2.1.9 Status values
One or more status codes are returned by each GSSAPI routine.
Two distinct sorts of status codes are returned. These are
termed GSS status codes and Mechanism status codes.
2.1.9.1 GSS status codes
GSSAPI routines return GSS status codes as their OM_uint32
function value. These codes indicate errors that are
independent of the underlying mechanism used to provide the
security service. The errors that can be indicated via a GSS
status code are either generic API routine errors (errors that
are defined in the GSSAPI specification) or calling errors
(errors that are specific to these bindings).
A GSS status code can indicate a single fatal generic API error
from the routine and a single calling error. In addition,
supplementary status information may be indicated via the
setting of bits in the supplementary info field of a GSS status
code.
These errors are encoded into the 32-bit GSS status code as
follows:
MSB LSB
|--------------------------------------------------------------|
| Calling Error | Routine Error | Supplementary Info |
|--------------------------------------------------------------|
Bit 31 24 23 16 15 0
Hence if a GSSAPI routine returns a GSS status code whose upperB
16 bits contain a non-zero value, the call failed. If the
calling error field is non-zero, the invoking application's call
of the routine was erroneous. Calling errors are defined in
table 2-1. If the routine error field is non- zero, the routine
failed for one of the routine-specific reasons listed below in
table 2-2. Whether or not the upper 16 bits indicate a failure
or a success, the routine may indicate additional information by
setting bits in the supplementary info field of the status code.
The meaning of individual bits is listed below in table 2-3.
- 10 -
\f
Table 2-1 Calling Errors
Name Value in Meaning
Field
GSS_S_CALL_INACCESSIBLE_READ 1 A required input
parameter could not be
read.
GSS_S_CALL_INACCESSIBLE_WRITE 2 A required output
parameter could not be
written.
GSS_S_CALL_BAD_STRUCTURE 3 A parameter was
malformed
Table 2-2 Routine Errors
Name Value in Meaning
Field
GSS_S_BAD_MECH 1 An unsupported mechanism was
requested
GSS_S_BAD_NAME 2 An invalid name was supplied
GSS_S_BAD_NAMETYPE 3 A supplied name was of an
unsupported type
GSS_S_BAD_BINDINGS 4 Incorrect channel bindings were
supplied
GSS_S_BAD_STATUS 5 An invalid status code was supplied
GSS_S_BAD_SIG 6 A token had an invalid signature
GSS_S_NO_CRED 7 No credentials were supplied
GSS_S_NO_CONTEXT 8 No context has been established
GSS_S_DEFECTIVE_TOKEN 9 A token was invalid
GSS_S_DEFECTIVE_CREDENTIAL 10 A credential was invalid
GSS_S_CREDENTIALS_EXPIRED 11 The referenced credentials have
expired
GSS_S_CONTEXT_EXPIRED 12 The context has expired
Table 2-3 Supplementary Status Bitsplied credentials have
Namered Bit Number Meaning
GSS_S_CONTINUE_NEEDED 0 (LSB) The routine must be called
again to complete its function.
See routine documentation for
detailed description.
GSS_S_DUPLICATE_TOKEN 1 The token was a duplicate of
an earlier token
GSS_S_OLD_TOKEN 2 The token's validity period
has expired
GSS_S_UNSEQ_TOKEN 3 A later token has already been
processed
- 11 -
\f
The routine documentation also uses the name GSS_S_COMPLETE,
which is a zero value, to indicate an absence of any API errors
or supplementary information bits.
The macros GSS_CALLING_ERROR(), GSS_ROUTINE_ERROR() and
GSS_SUPPLEMENTARY_INFO() are provided, each of which takes a GSS
status code and removes all but the relevant field. For
example, the value obtained by applying GSS_ROUTINE_ERROR to a
status code removes the calling errors and supplementary info
fields, leaving only the routine errors field. The macro
GSS_ERROR() is provided, which when applied to a GSS status code
returns a non-zero value if the status code indicated a calling
or routine error, and a zero value otherwise.
A GSSAPI implementation may choose to signal calling errors in a
platform-specific manner instead of, or in addition to the
routine value; generic API errors should be returned via
routine status values only.
2.1.9.2 Mechanism-specific status codes
GSSAPI routines return a minor_status parameter, which is used
to indicate specialized errors from the underlying security
mechanism. This parameter may contain a single mechanism-
specific error, indicated by a OM_uint32 value.
The minor_status parameter will always be set by a GSSAPI
routine, even if it returns a calling error or one of the
generic API errors indicated above as fatal, although other
output parameters may remain unset in such cases.
The GSS status code GSS_S_FAILURE is used to indicate that the
underlying mechanism detected an error for which no specific GSS
status code is defined. The mechanism status code will provide
more details about the error.
2.1.10 Names
A name is used to identify a person or entity. GSSAPI
authenticates the relationship between a name and the entity
claiming the name.
Two distinct representations are defined for names:
7 A printable form, for presentation to a user
7 An API form, for presentation at the API
The syntax of a printable name is defined by the GSSAPI
implementation, and may be dependent on local system
configuration, or on individual user preference. The API form
provides a canonical representation of the name that is
independent of configuration.
A given GSSAPI implementation may support names drawn from
multiple namespaces. The internal form of the name includes
fields that indicate which namespace the name is drawn from.
The namespace from which a printable name is drawn is specified
by an accompanying object identifier.
- 12 -
\f
Routines (gss_import_name and gss_display_name) are provided to
convert names between their printable representations and the
gss_name_t type. gss_import_name may support multiple syntaxes
for each supported namespace, allowing users the freedom to
choose a preferred name representation. gss_display_name should
use an implementation-chosen preferred syntax for each supported
name-type.
Comparison of API-format names is accomplished via the
gss_compare_names routine. This removes the need for the
application program to understand the syntaxes of the various
printable names that a given GSSAPI implementation may support.
Storage is allocated by routines that return gss_name_t values.
A procedure, gss_release_name, is provided to free storage
associated with a name.
2.1.11 Channel Bindings
GSSAPI supports the use of user-specified tags to identify a
given context to the peer application. These tags are used to
identify the particular communications channel that carries the
context. Channel bindings are communicated to the GSSAPI using
the following structure:
typedef struct gss_channel_bindings_struct {
OM_uint32 initiator_addrtype;
gss_buffer_desc initiator_address;
OM_uint32 acceptor_addrtype;
gss_buffer_desc acceptor_address;
gss_buffer_desc application_data
} *gss_channel_bindings;
The initiator_addrtype and acceptor_addrtype fields denote the
type of addresses contained in the initiator_address and
acceptor_address buffers. The address type should be one of the
following:
GSS_C_AF_UNSPEC Unspecified address type
GSS_C_AF_LOCAL Host-local address type
GSS_C_AF_INET DARPA Internet address type
GSS_C_AF_IMPLINK ARPAnet IMP address type (eg IP)
GSS_C_AF_PUP pup protocols (eg BSP) address type
GSS_C_AF_CHAOS MIT CHAOS protocol address type
GSS_C_AF_NS XEROX NS address type
GSS_C_AF_NBS nbs address type
GSS_C_AF_ECMA ECMA address type
GSS_C_AF_DATAKIT datakit protocols address type
GSS_C_AF_CCITT CCITT protocols (eg X.25)
GSS_C_AF_SNA IBM SNA address type
GSS_C_AF_DECnet DECnet address type
GSS_C_AF_DLI Direct data link interface address type
- 13 -
\f
GSS_C_AF_LAT LAT address type
GSS_C_AF_HYLINK NSC Hyperchannel address type
GSS_C_AF_APPLETALK AppleTalk address type
GSS_C_AF_BSC BISYNC 2780/3780 address type
GSS_C_AF_DSS Distributed system services address type
GSS_C_AF_OSI OSI TP4 address type
GSS_C_AF_NULLADDR No address specified
Note that these name address families rather than specific
addressing formats. For address families that contain several
alternative address forms, the initiator_address and acceptor_address
fields must contain sufficient information to determine which
address form is used. When not otherwise specified, addresses
should be specified in network byte-order.
Conceptually, the GSSAPI concatenates the initiator_addrtype,
initiator_address, acceptor_addrtype, acceptor_address and
application_data to form an octet string. The mechanism signs
this octet string, and binds the signature to the context
establishment token emitted by gss_init_sec_context. The same
bindings are presented by the context acceptor to
gss_accept_sec_context, and a signature is calculated in the
same way. The calculated signature is compared with that found
in the token, and if the signatures differ,
gss_accept_sec_context will return a GSS_S_BAD_BINDINGS error.
Some mechanisms may include the channel bindings themselves in
the token (rather than just a signature); applications should
therefore not use confidential data as channel-binding components.
Individual mechanisms may impose additional addressing
constraints on addresses and address types that may appear in
channel bindings. For example, a mechanism may verify that the
initiator_address field of the channel bindings presented to
gss_init_sec_context contains the correct network address of the
host system.
2.1.12 Optional parameters
Various parameters are described as optional. This means that
they follow a convention whereby a default value may be
requested. The following conventions are used for omitted parameters.
These conventions apply only to those parameters that are
explicitly documented as optional.
- 14 -
\f
2.1.12.1 gss_buffer_t types
Specify GSS_C_NO_BUFFER as a value. For an input parameter this
signifies that default behavior is requested, while for an
output parameter it indicates that the information that would be
returned via the parameter is not required by the application.
2.1.12.2 Integer types (input)
Individual parameter documentation lists values to be used to
indicate default actions.
2.1.12.3 Integer types (output)
Specify NULL as the value for the pointer.
2.1.12.4 Pointer types
Specify NULL as the value.
2.1.12.5 Object IDs
Specify GSS_C_NULL_OID as the value.
2.1.12.6 Object ID Sets
Specify GSS_C_NULL_OID_SET as the value.
2.1.12.7 Credentials
Specify GSS_C_NO_CREDENTIAL to use the default credential
handle.
- 15 -
\f
3 GSSAPI routine descriptions
3.1 gss_acquire_cred
OM_uint32 gss_acquire_cred (
OM_uint32* minor_status,
gss_name_t desired_name,
OM_uint32 time_req,
gss_OID_set desired_mechs,
int cred_usage,
gss_cred_id_t* output_cred_handle,
gss_OID_set* actual_mechs,
OM_int32* time_rec)
Purpose:
Allows an application to acquire a handle for a pre-existing
credential by name. GSSAPI implementations must impose a
local access-control policy on callers of this routine to
prevent unauthorized callers from acquiring credentials to
which they are not entitled. This routine is not intended
to provide a ``login to the network'' function, as such a
function would result in the creation of new credentials
rather than merely acquiring a handle to existing
credentials. Such functions, if required, should be defined
in mechanism- specific extensions to the API.
If credential acquisition is time-consuming for a mechanism,
the mechanism may delay the actual acquisition until the
credential is required (e.g. by gss_init_sec_context or
gss_accept_sec_context). Such mechanism-specific
implementation decisions should be invisible to the calling
application.
Parameters:
desired_name gss_name_t, read
Name of principal whose credential should
be acquired
time_req integer, read
number of seconds that credentials should
remain valid
desired_mechs Set of Object IDs, read
set of underlying security mechanisms that
may be used. GSS_C_NULL_OID_SET may be used
to obtain an implementation-specific default.
- 16 -
\f
cred_usage integer, read
GSS_C_BOTH - Credentials may be used
either to initiate or accept
security contexts.
GSS_C_INITIATE - Credentials will only be
used to initiate security
contexts.
GSS_C_ACCEPT - Credentials will only be used to
accept security contexts.
output_cred_handle gss_cred_id_t, modify
The returned credential handle.
actual_mechs Set of Object IDs, modify, optional
The set of mechanisms for which the
credential is valid.
time_rec integer, modify, optional
Actual number of seconds for which the
returned credentials will remain valid.
minor_status integer, modify
Mechanism specific status code.
Function value:
GSS status code:
GSS_S_COMPLETE Successful completion
GSS_S_BAD_MECH Unavailable mechanism requested
GSS_S_BAD_NAMETYPE
Type contained within desired_name
parameter is not supported
GSS_S_BAD_NAME Value supplied for desired_name parameter
is ill-formed.
GSS_S_FAILURE Unspecified failure. The minor_status
parameter contains more detailed information
3.2 gss_release_cred
OM_uint32 gss_release_cred (
OM_uint32* minor_status,
gss_cred_id_t* cred_handle)
- 17 -
\f
Purpose:
Informs GSSAPI that the specified credential handle is no
longer required by the process. When all processes have
released a credential, it will be deleted.
Parameters:
cred_handle gss_cred_id_t, modify, optional
buffer containing opaque credential
handle. If GSS_C_NO_CREDENTIAL is supplied,
the default credential will be released
minor_status integer, modify
Mechanism specific status code.
Function value:
GSS status code:
GSS_S_COMPLETE Successful completion
GSS_S_NO_CRED Credentials could not be accessed.
3.3 gss_init_sec_context
OM_uint32 gss_init_sec_context (
OM_uint32* minor_status,
gss_cred_id_t claimant_cred_handle,
gss_ctx_id_t* context_handle,
gss_name_t target_name,
gss_OID mech_type,
int req_flags,
int time_req,
gss_channel_bindings
input_chan_bindings,
gss_buffer_t input_token
gss_OID* actual_mech_type,
gss_buffer_t output_token,
int* ret_flags,
OM_uint32* time_rec )
Purpose:
Initiates the establishment of a security context between
the application and a remote peer. Initially, the
input_token parameter should be specified as GSS_C_NO_BUFFER.
The routine may return a output_token which should be
transferred to the peer application, where the peer
application will present it to gss_accept_sec_context. To
complete the context establishment, one or more reply tokens
may be required from the peer application; if so,
gss_init_sec_context will return a status indicating
GSS_S_CONTINUE_NEEDED in which case it should be called again
when the reply token
- 18 -
\f
is received from the peer application, passing the token to
gss_init_sec_context via the input_token parameters.
The values returned via the ret_flags and time_rec
parameters are not defined unless the routine returns
GSS_S_COMPLETE.
Parameters:
claimant_cred_handle gss_cred_id_t, read, optional
handle for credentials claimed. Supply
GSS_C_NO_CREDENTIAL to use default
credentials.
context_handle gss_ctx_id_t, read/modify
context handle for new context. Supply
GSS_C_NO_CONTEXT for first call; use value
returned by first call in continuation calls.
target_name gss_name_t, read
Name of target
mech_type OID, read, optional
Object ID of desired mechanism. Supply
GSS_C_NULL_OID to obtain an implementation
specific default
req_flags bit-mask, read
Contains four independent flags, each of
which requests that the context support a
specific service option. Symbolic
names are provided for each flag, and the
symbolic names corresponding to the required
flags should be logically-ORed
together to form the bit-mask value. The
flags are:
GSS_C_DELEG_FLAG
True - Delegate credentials to remote peer
False - Don't delegate
GSS_C_MUTUAL_FLAG
True - Request that remote peer
authenticate itself
False - Authenticate self to remote peer
only
GSS_C_REPLAY_FLAG
True - Enable replay detection for signed
or sealed messages
False - Don't attempt to detect
replayed messages
- 19 -
\f
GSS_C_SEQUENCE_FLAG
True - Enable detection of out-of-sequence
signed or sealed messages
False - Don't attempt to detect
out-of-sequence messages
time_req integer, read
Desired number of seconds for which context
should remain valid. Supply 0 to request a
default validity period.
input_chan_bindings channel bindings, read
Application-specified bindings. Allows
application to securely bind channel
identification information to the security
context.
input_token buffer, opaque, read, optional (see text)
Token received from peer application.
Supply GSS_C_NO_BUFFER on initial call.
actual_mech_type OID, modify
actual mechanism used.
output_token buffer, opaque, modify
token to be sent to peer application. If
the length field of the returned buffer is
zero, no token need be sent to the peer
application.
ret_flags bit-mask, modify
Contains five independent flags, each of which
indicates that the context supports a specific
service option. Symbolic names are provided
for each flag, and the symbolic names
corresponding to the required flags should be
logically-ANDed with the ret_flags value to test
whether a given option is supported by the
context. The flags are:
GSS_C_DELEG_FLAG
True - Credentials were delegated to
the remote peer
False - No credentials were delegated
GSS_C_MUTUAL_FLAG
True - Remote peer has been asked to
authenticated itself
False - Remote peer has not been asked to
authenticate itself
- 20 -
\f
GSS_C_REPLAY_FLAG
True - replay of signed or sealed messages
will be detected
False - replayed messages will not be
detected
GSS_C_SEQUENCE_FLAG
True - out-of-sequence signed or sealed
messages will be detected
False - out-of-sequence messages will not
be detected
GSS_C_CONF_FLAG
True - Confidentiality service may be
invoked by calling seal routine
False - No confidentiality service (via
seal) available. seal will provide
message encapsulation, data-origin
authentication and integrity
services only.
GSS_C_INTEG_FLAG
True - Integrity service may be invoked by
calling either gss_sign or gss_seal
routines.
False - Per-message integrity service
unavailable.
time_rec integer, modify, optional
number of seconds for which the context
will remain valid. Specify NULL if not required.
minor_status integer, modify
Mechanism specific status code.
Function value:
GSS status code:
GSS_S_COMPLETE Successful completion
GSS_S_CONTINUE_NEEDED
Indicates that a token from the peer
application is required to complete the
context, and that gss_init_sec_context must
be called again with that token.
- 21 -
\f
GSS_S_DEFECTIVE_TOKEN
Indicates that consistency checks
performed on the input_token failed
GSS_S_DEFECTIVE_CREDENTIAL
Indicates that consistency checks performed on
the credential failed.
GSS_S_NO_CRED The supplied credentials were not valid for
context initiation, or the credential handle
did not reference any credentials.
GSS_S_CREDENTIALS_EXPIRED
The referenced credentials have expired
GSS_S_BAD_BINDINGS
The input_token contains different channel
bindings to those specified via the
input_chan_bindings parameter
GSS_S_BAD_SIG The input_token contains an invalid signature,
or a signature that could not be verified
GSS_S_OLD_TOKEN
The input_token was too old. This is a
fatal error during context establishment
GSS_S_DUPLICATE_TOKEN
The input_token is valid, but is a duplicate
of a token already processed. This is a fatal
error during context establishment.
GSS_S_NO_CONTEXT
Indicates that the supplied context handle did
not refer to a valid context
GSS_S_BAD_NAMETYPE
The provided target_name parameter contained
an invalid or unsupported type of name
GSS_S_BAD_NAME
The provided target_name parameter was
ill-formed.
GSS_S_FAILURE Failure. See minor_status for more information
- 22 -
\f
3.4 gss_accept_sec_context
OM_uint32 gss_accept_sec_context (
OM_uint32* minor_status,
gss_ctx_id_t* context_handle,
gss_cred_id_t verifier_cred_handle,
gss_buffer_t input_token_buffer
gss_channel_bindings
input_chan_bindings,
gss_name_t* src_name,
gss_OID* mech_type,
gss_buffer_t output_token,
int* ret_flags,
OM_uint32* time_rec,
gss_cred_id_t* delegated_cred_handle)
Purpose:
Allows a remotely initiated security context between the
application and a remote peer to be established. The
routine may return a output_token which should be
transferred to the peer application, where the peer
application will present it to gss_init_sec_context. To
complete the context establishment, one or more reply tokens
may be required from the peer application; if so,
gss_accept_sec_context will return a status flag of
GSS_S_CONTINUE_NEEDED, in which case it should be called
again when the reply token is received from the peer
application, passing the token to gss_accept_sec_context via
the input_token parameters.
The values returned via the src_name, ret_flags, time_rec,
and delegated_cred_handle parameters are not defined unless
the routine returns GSS_S_COMPLETE.
Parameters:
context_handle gss_ctx_id_t, read/modify
context handle for new context. Supply
GSS_C_NO_CONTEXT for first call; use value
returned in subsequent calls.
verifier_cred_handle gss_cred_id_t, read, optional
Credential handle claimed by context acceptor.
Specify GSS_C_NO_CREDENTIAL to use default
credentials. If GSS_C_NO_CREDENTIAL is
specified, but the caller has no default
credentials established, an
implementation-defined default credential
may be used.
- 23 -
\f
input_token_buffer buffer, opaque, read
token obtained from remote application
input_chan_bindings channel bindings, read
Application-specified bindings. Allows
application to securely bind channel
identification information to the security
context.
src_name gss_name_t, modify
Authenticated name of context initiator.
After use, this name should be deallocated by
passing it to gss_release_name.
mech_type Object ID, modify
Security mechanism used. The returned
OID value will be a pointer into static
storage, and should be treated as read-only
by the caller
output_token buffer, opaque, modify
Token to be passed to peer application. If the
length field of the returned token buffer is 0,
then no token need be passed to the peer
application.
ret_flags bit-mask, modify
Contains five independent flags, each of
which indicates that the context supports a
specific service option. Symbolic names are
provided for each flag, and the symbolic names
corresponding to the required flags
should be logically-ANDed with the ret_flags
value to test whether a given option is
supported by the context. The flags are:
GSS_C_DELEG_FLAG
True - Delegated credentials are available
via the delegated_cred_handle
parameter
False - No credentials were delegated
- 24 -
\f
GSS_C_MUTUAL_FLAG
True - Remote peer asked for mutual
authentication
False - Remote peer did not ask for mutual
authentication
GSS_C_REPLAY_FLAG
True - replay of signed or sealed messages
will be detected
False - replayed messages will not be
detected
GSS_C_SEQUENCE_FLAG
True - out-of-sequence signed or sealed
messages will be detected
False - out-of-sequence messages will not
be detected
GSS_C_CONF_FLAG
True - Confidentiality service may be invoked
by calling seal routine
False - No confidentiality service (via
seal) available. seal will provide
message encapsulation, data-origin
authentication and integrity services
only.
GSS_C_INTEG_FLAG
True - Integrity service may be invoked by
calling either gss_sign or gss_seal
routines.
False - Per-message integrity service
unavailable.
time_rec integer, modify, optional
number of seconds for which the context
will remain valid. Specify NULL if not required.
delegated_cred_handle
gss_cred_id_t, modify
credential handle for credentials received from
context initiator. Only valid if deleg_flag in
ret_flags is true.
minor_status integer, modify
Mechanism specific status code.
- 25 -
\f
Function value:
GSS status code:
GSS_S_COMPLETE Successful completion
GSS_S_CONTINUE_NEEDED
Indicates that a token from the peer
application is required to complete the
context, and that gss_accept_sec_context must
be called again with that token.
GSS_S_DEFECTIVE_TOKEN
Indicates that consistency checks performed on
the input_token failed
GSS_S_DEFECTIVE_CREDENTIAL
Indicates that consistency checks performed on
the credential failed.
GSS_S_NO_CRED The supplied credentials were not valid
for context acceptance, or the credential handle
did not reference any credentials.
GSS_S_CREDENTIALS_EXPIRED
The referenced credentials have expired
GSS_S_BAD_BINDINGS
The input_token contains different channel
bindings to those specified via the
input_chan_bindings parameter
GSS_S_NO_CONTEXT
Indicates that the supplied context handle did
not refer to a valid context
GSS_S_BAD_SIG The input_token contains an invalid signature
GSS_S_OLD_TOKEN
The input_token was too old. This is a fatal
error during context establishment.
GSS_S_DUPLICATE_TOKEN
The input_token is valid, but is a duplicate
of a token already processed. This is a fatal
error during context establishment.
GSS_S_FAILURE Failure. See minor_status for more information
- 26 -
\f
3.5 gss_process_context_token
OM_uint32 gss_process_context_token (
OM_uint32* minor_status,
gss_ctx_id_t context_handle,
gss_buffer_t token_buffer)
Purpose:
Provides a way to pass a token to the security service.
Usually, tokens are associated either with context
establishment (when they would be passed to
gss_init_sec_context or gss_accept_sec_context) or with
per-message security service (when they would be passed to
gss_verify or gss_unseal). Occasionally, tokens will be
received at other times, and gss_process_context_token
allows such tokens to be passed to the underlying security
service for processing. GSSAPI implementation may use this
service to implement deletion of the security context.
Parameters:
context_handle gss_ctx_id_t, read
context handle of context on which token is to
be processed
token_buffer buffer, opaque, read
pointer to first byte of token to process
minor_status integer, modify
Implementation specific status code.
Function value:
GSS status code:
GSS_S_COMPLETE Successful completion
GSS_S_DEFECTIVE_TOKEN
Indicates that consistency checks performed on
the token failed
GSS_S_FAILURE Failure. See minor_status for more information
GSS_S_NO_CONTEXT
The context_handle did not refer to a valid
context
3.6 gss_delete_sec_context
OM_uint32 gss_delete_sec_context (
OM_uint32* minor_status,
gss_ctx_id_t context_handle,
gss_buffer_t output_token)
- 27 -
\f
Purpose:
Delete a security context. gss_delete_sec_context will
delete the local data structures associated with the
specified security context, and generate an output_token,
which when passed to the peer gss_process_context_token will
instruct it to do likewise. No further security services
may be obtained using the context specified by
context_handle.
Parameters:
minor_status integer, modify
Mechanism specific status code.
context_handle gss_ctx_id_t, read
context handle identifying context to delete.
output_token buffer, opaque, modify
token to be sent to remote application to
instruct it to also delete the context
Function value:
GSS status code:
GSS_S_COMPLETE Successful completion
GSS_S_FAILURE Failure, see minor_status for more information
GSS_S_NO_CONTEXT
No valid context was supplied
3.7 gss_context_time
OM_uint32 gss_context_time (
OM_uint32* minor_status,
gss_ctx_id_t context_handle,
OM_uint32* time_rec)
Purpose:
Determines the number of seconds for which the specified
context will remain valid.
- 28 -
\f
Parameters:
minor_status integer, modify
Implementation specific status code.
context_handle gss_ctx_id_t, read
Identifies the context to be interrogated.
time_rec integer, modify
Number of seconds that the context will remain
valid. If the context has already expired,
zero will be returned.
Function value:
GSS status code:
GSS_S_COMPLETE Successful completion
GSS_S_CONTEXT_EXPIRED
The context has already expired
GSS_S_CREDENTIALS_EXPIRED
The context is recognized, but associated
credentials have expired
GSS_S_NO_CONTEXT
The context_handle parameter did not identify
a valid context
3.8 gss_sign
OM_uint32 gss_sign (
OM_uint32* minor_status,
gss_ctx_id_t context_handle,
int qop_req,
gss_buffer_t message_buffer,
gss_buffer_t msg_token)
Purpose:
Generates a cryptographic signature for the supplied
message, and places the signature in a token for transfer to
the peer application. The qop_req parameter allows a choice
between several cryptographic algorithms, if supported by
the chosen mechanism.
Parameters:
minor_status integer, modify
Implementation specific status code.
- 29 -
\f
context_handle gss_ctx_id_t, read
identifies the context on which the message
will be sent
qop_req integer, read, optional
Specifies requested quality of protection.
Callers are encouraged, on portability grounds,
to accept the default quality of protection
offered by the chosen mechanism, which may be
requested by specifying GSS_C_QOP_DEFAULT for
this parameter. If an unsupported protection
strength is requested, gss_sign will return a
major_status of GSS_S_FAILURE.
message_buffer buffer, opaque, read
message to be signed
msg_token buffer, opaque, modify
buffer to receive token
Function value:
GSS status code:
GSS_S_COMPLETE Successful completion
GSS_S_CONTEXT_EXPIRED
The context has already expired
GSS_S_CREDENTIALS_EXPIRED
The context is recognized, but associated
credentials have expired
GSS_S_NO_CONTEXT
The context_handle parameter did not identify
a valid context
GSS_S_FAILURE Failure. See minor_status for more information.
3.9 gss_verify
OM_uint32 gss_verify (
OM_uint32* minor_status,
gss_ctx_id_t context_handle,
gss_buffer_t message_buffer,
gss_buffer_t token_buffer,
int* qop_state)
- 30 -
\f
Purpose:
Verifies that a cryptographic signature, contained in the
token parameter, fits the supplied message. The qop_state
parameter allows a message recipient to determine the
strength of protection that was applied to the message.
Parameters:
minor_status integer, modify
Mechanism specific status code.
context_handle gss_ctx_id_t, read
identifies the context on which the message
arrived
message_buffer buffer, opaque, read
message to be verified
token_buffer buffer, opaque, read
token associated with message
qop_state integer, modify
quality of protection gained from signature
Function value:
GSS status code:
GSS_S_COMPLETE Successful completion
GSS_S_DEFECTIVE_TOKEN
The token failed consistency checks
GSS_S_BAD_SIG The signature was incorrect
GSS_S_DUPLICATE_TOKEN
The token was valid, and contained a correct
signature for the message, but it had already
been processed
GSS_S_OLD_TOKEN
The token was valid, and contained a correct
signature for the message, but it is too old
GSS_S_UNSEQ_TOKEN
The token was valid, and contained a correct
signature for the message, but has been
verified out of sequence; an earlier token has
been signed or sealed by the remote application,
but not yet been processed locally.
GSS_S_CONTEXT_EXPIRED
The context has already expired
GSS_S_CREDENTIALS_EXPIRED
The context is recognized, but associated
credentials have expired
GSS_S_NO_CONTEXT
The context_handle parameter did not identify
a valid context
GSS_S_FAILURE Failure. See minor_status for more information.
- 31 -
\f
3.10 gss_seal
OM_uint32 gss_seal (
OM_uint32* minor_status,
gss_ctx_id_t context_handle,
int conf_req_flag,
int qop_req
gss_buffer_t input_message_buffer,
int* conf_state,
gss_buffer_t output_message_buffer)
Purpose:
Cryptographically signs and optionally encrypts the
specified input_message. The output_message contains both
the signature and the message. The qop_req parameter allows
a choice between several cryptographic algorithms, if
supported by the chosen mechanism.
Parameters:
minor_status integer, modify
Mechanism specific status code.
context_handle gss_ctx_id_t, read
identifies the context on which the message
will be sent
conf_req_flag boolean, read
True - Both confidentiality and integrity
services are requested
False - Only integrity service is requested
qop_req integer, read, optional
Specifies required quality of protection. A
mechanism-specific default may be requested by
setting qop_req to GSS_C_QOP_DEFAULT. If an
unsupported protection strength is requested,
gss_seal will return a major_status of
GSS_S_FAILURE.
- 32 -
\f
input_message_buffer
buffer, opaque, read
message to be sealed
conf_state boolean, modify
True - Confidentiality, data origin
authentication and integrity services
have been applied
False - Integrity and data origin services only
has been applied.
output_message_buffer
buffer, opaque, modify
buffer to receive sealed message
Function value:
GSS status code:
GSS_S_FAILURE Successful completion
GSS_S_CONTEXT_EXPIRED
The context has already expired
GSS_S_CREDENTIALS_EXPIRED
The context is recognized, but associated
credentials have expired
GSS_S_NO_CONTEXT
The context_handle parameter did not identify
a valid context
GSS_S_FAILURE Failure. See minor_status for more information.
3.11 gss_unseal
OM_uint32 gss_unseal (
OM_uint32* minor_status,
gss_ctx_id_t context_handle,
gss_buffer_t input_message_buffer,
gss_buffer_t output_message_buffer,
int* conf_state,
int* qop_state)
Purpose:
Converts a previously sealed message back to a usable form,
verifying the embedded signature. The conf_state parameter
indicates whether the message was encrypted; the qop_state
parameter indicates the strength of protection that was used
to provide the confidentiality and integrity services.
- 33 -
\f
Parameters:
minor_status integer, modify
Mechanism specific status code.
context_handle gss_ctx_id_t, read
identifies the context on which the message
arrived
input_message_buffer
buffer, opaque, read
sealed message
output_message_buffer
buffer, opaque, modify
buffer to receive unsealed message
conf_state boolean, modify
True - Confidentiality and integrity protection
were used
False - Inteegrity service only was used
qop_state integer, modify
quality of protection gained from signature
Function value:
GSS status code:
GSS_S_COMPLETE Successful completion
GSS_S_DEFECTIVE_TOKEN
The token failed consistency checks
GSS_S_BAD_SIG The signature was incorrect
GSS_S_DUPLICATE_TOKEN
The token was valid, and contained a correct
signature for the message, but it had already
been processed
GSS_S_OLD_TOKEN
The token was valid, and contained a correct
signature for the message, but it is too old
GSS_S_UNSEQ_TOKEN
The token was valid, and contained a correct
signature for the message, but has been
verified out of sequence; an earlier
token has been signed or sealed by the
remote application, but not yet been processed
locally.
GSS_S_CONTEXT_EXPIRED
The context has already expired
GSS_S_CREDENTIALS_EXPIRED
The context is recognized, but associated
credentials have expired
GSS_S_NO_CONTEXT
The context_handle parameter did not identify
a valid context
GSS_S_FAILURE Failure. See minor_status for more information.
- 34 -
\f
3.12 gss_display_status
OM_uint32 gss_display_status (
OM_uint32* minor_status,
int status_value,
int status_type,
gss_OID mech_type,
int* message_context,
gss_buffer_t status_string)
Purpose:
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
errors, applications may need to call gss_display_status
multiple times, each call generating a single text string.
The message_context parameter is used to indicate which
error message should be extracted from a given status_value;
message_context should be initialized to 0, and
gss_display_status will return a non-zero value if there are
further messages to extract.
Parameters:
minor_status integer, modify
Mechanism specific status code.
status_value integer, read
Status value to be converted
status_type integer, read
GSS_C_GSS_CODE - status_value is a GSS status
code
GSS_C_MECH_CODE - status_value is a mechanism
status code
mech_type Object ID, read, optional
Underlying mechanism (used to interpret a
minor status value) Supply GSS_C_NULL_OID to
obtain the system default.
- 35 -
\f
message_context integer, read/modify
Should be initialized to zero by caller
on first call. If further messages are
contained in the status_value parameter,
message_context will be non-zero on return,
and this value should be passed back to
subsequent calls, along with the same
status_value, status_type and mech_type
parameters.
status_string buffer, character string, modify
textual interpretation of the status_value
Function value:
GSS status code:
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.
3.13 gss_indicate_mechs
OM_uint32 gss_indicate_mechs (
OM_uint32* minor_status,
gss_OID_set* mech_set)
Purpose:
Allows an application to determine which underlying security
mechanisms are available.
Parameters:
minor_status integer, modify
Mechanism specific status code.
mech_set set of Object IDs, modify
set of implementation-supported mechanisms.
The returned gss_OID_set value will be a
pointer into static storage, and should be
treated as read-only by the caller.
Function value:
GSS status code:
GSS_S_COMPLETE Successful completion
- 36 -
\f
3.14 gss_compare_name
OM_uint32 gss_compare_name (
OM_uint32* minor_status,
gss_name_t name1,
gss_name_t name2,
int* name_equal)
Purpose:
Allows an application to compare two API-format names to
determine whether they refer to the same entity.
Parameters:
minor_status integer, modify
Mechanism specific status code.
name1 gss_name_t, read
API-format name
name2 gss_name_t, read
API-format name
name_equal boolean, modify
True - names refer to same entity
False - names refer to different entities
(strictly, the names are not known to
refer to the same identity).
Function value:
GSS status code:
GSS_S_COMPLETE Successful completion
GSS_S_BAD_NAMETYPE
The type contained within either name1 or
name2 was unrecognized, or the names were of
incomparable types.
GSS_S_BAD_NAME One or both of name1 or name2 was ill-formed
- 37 -
\f
3.15 gss_display_name
OM_uint32 gss_display_name (
OM_uint32* minor_status,
gss_name_t input_name,
gss_buffer_t output_name_buffer,
gss_OID* output_name_type)
Purpose:
Allows an application to obtain a textual representation of
an opaque API-format name for display purposes. The syntax
of a printable name is defined by the GSSAPI implementation.
Parameters:
minor_status integer, modify
Mechanism specific status code.
input_name gss_name_t, read
name to be displayed
output_name_buffer buffer, character-string, modify
buffer to receive textual name string
output_name_type Object ID, modify
The type of the returned name. The returned
gss_OID will be a pointer into static storage,
and should be treated as read-only by the caller
Function value:
GSS status code:
GSS_S_COMPLETE Successful completion
GSS_S_BAD_NAMETYPE
The type of input_name was not recognized
GSS_S_BAD_NAME
input_name was ill-formed
3.16 gss_import_name
OM_uint32 gss_import_name (
OM_uint32* minor_status,
gss_buffer_t input_name_buffer,
gss_OID input_name_type,
gss_name_t* output_name)
Purpose:
Convert a printable name to API format.
- 38 -
\f
Parameters:
minor_status integer, modify
Mechanism specific status code
input_name_buffer buffer, character-string, read
buffer containing printable name to convert
input_name_type Object ID, read, optional
Object Id specifying type of printable
name. Applications may specify either
GSS_C_NULL_OID to use a local system-specific
printable syntax, or an OID registered by the
GSSAPI implementation to name a particular
namespace.
output_name gss_name_t, modify
returned name in API format
Function value:
GSS status code
GSS_S_COMPLETE
GSS_S_BAD_NAMETYPE
The input_name_type was unrecognized
GSS_S_BAD_NAME The input_name parameter could not be
interpreted as a name of the specified type
3.17 gss_release_name
OM_uint32 gss_release_name (
OM_uint32* minor_status,
gss_name_t* name)
Purpose:
Free GSSAPI-allocated storage associated with an API format
name.
Parameters:
minor_status integer, modify
Mechanism specific status code
name gss_name_t, modify
The name to be deleted
Function value:
GSS status code
GSS_S_COMPLETE
GSS_S_BAD_NAME The name parameter did not contain a valid name
- 39 -
\f
3.18 gss_release_buffer
OM_uint32 gss_release_buffer (
OM_uint32* minor_status,
gss_buffer_t buffer)
Purpose:
Free storage associated with a buffer format name. The
storage must have been allocated by a GSSAPI routine. In
addition to freeing the associated storage, the routine will
zero the length field in the buffer parameter.
Parameters:
minor_status integer, modify
Mechanism specific status code
buffer buffer, modify
The storage associated with the buffer will be
deleted. The gss_buffer_desc object will not
be freed, but its length field will be zeroed.
Function value:
GSS status code
GSS_S_COMPLETE
3.19 gss_release_oid_set
OM_uint32 gss_release_oid_set (
OM_uint32* minor_status,
gss_OID_set* set)
Purpose:
Free storage associated with a gss_OID_set object. The
storage must have been allocated by a GSSAPI routine.
Parameters:
minor_status integer, modify
Mechanism specific status code
set Set of Object IDs, modify
The storage associated with the gss_OID_set
will be deleted.
Function value:
GSS status code
GSS_S_COMPLETE
- 40 -
\f
4 References
A. Generic Security Service Application Program Interface,
Internet-Draft; John Linn, Digital Equipment Corporation,
20 June 1991.
High-level definition of the GSSAPI services
B. OSI Object Management API Specification, Version 2.0 t
X.400 API Association & X/Open Company Limited,
24-August-1990
Specification of datatypes and routines for manipulating
information objects
Index
C
credentials, 5, 9, 16, 17, 19, 20, 23
default, 9, 18, 19, 23
G
GSS_C_ACCEPT, 17
GSS_C_AF_APPLETALK, 14
GSS_C_AF_BSC, 14
GSS_C_AF_CCITT, 13
GSS_C_AF_CHAOS, 13
GSS_C_AF_DATAKIT, 13
GSS_C_AF_DECnet, 13
GSS_C_AF_DLI, 13
GSS_C_AF_DSS, 14
GSS_C_AF_ECMA, 13
GSS_C_AF_HYLINK, 14
GSS_C_AF_IMPLINK, 13
GSS_C_AF_INET, 13
GSS_C_AF_LAT, 14
- 41 -
\f
GSS_C_AF_LOCAL, 13
GSS_C_AF_NBS, 13
GSS_C_AF_NS, 13
GSS_C_AF_NULLADDR, 14
GSS_C_AF_OSI, 14
GSS_C_AF_PUP, 13
GSS_C_AF_SNA, 13
GSS_C_AF_UNSPEC, 13
GSS_C_BOTH, 16
GSS_C_CONF_FLAG, 20, 24
GSS_C_DELEG_FLAG, 19, 20, 23
GSS_C_EMPTY_BUFFER., 8
GSS_C_GSS_CODE, 33
GSS_C_INITIATE, 17
GSS_C_MECH_CODE, 33
GSS_C_MUTUAL_FLAG, 19, 20, 23
GSS_C_NO_BUFFER, 14, 18, 20, 23
GSS_C_NO_CONTEXT, 19, 22
GSS_C_NO_CREDENTIAL, 15, 18, 19, 23
GSS_C_NULL_OID, 15, 19, 34, 37
GSS_C_NULL_OID_SET, 15, 16
GSS_C_QOP_DEFAULT, 28, 31
GSS_C_REPLAY_FLAG, 19, 20, 23
GSS_C_SEQUENCE_FLAG, 19, 20, 24
GSS_S_BAD_BINDINGS, 11, 14, 21, 24
GSS_S_BAD_MECH, 11, 17, 34
GSS_S_BAD_NAME, 11, 17, 21, 35, 36, 37, 38
GSS_S_BAD_NAMETYPE, 11, 17, 21, 35, 36, 37
GSS_S_BAD_SIG, 11, 21, 25, 29, 32
GSS_S_BAD_STATUS, 11, 34
GSS_S_CALL_BAD_STRUCTURE, 11
GSS_S_CALL_INACCESSIBLE_READ, 11
GSS_S_CALL_INACCESSIBLE_WRITE, 11
GSS_S_COMPLETE, 12, 17, 18, 21, 22, 24, 26, 27, 28, 29, 32,
34, 35, 36, 37, 38, 39
GSS_S_CONTEXT_EXPIRED, 11, 27, 28, 30, 31, 33
GSS_S_CONTINUE_NEEDED, 11, 18, 21, 22, 24
GSS_S_CREDENTIALS_EXPIRED, 11, 21, 24, 27, 28, 30, 31, 33
GSS_S_DEFECTIVE_CREDENTIAL, 11, 21, 24
GSS_S_DEFECTIVE_TOKEN, 11, 21, 24, 26, 29, 32
GSS_S_DUPLICATE_TOKEN, 11, 21, 25, 29, 32
GSS_S_FAILURE, 11, 12, 17, 22, 25, 26, 28, 30, 31, 33
GSS_S_NO_CONTEXT, 11, 21, 25, 26, 27, 28, 30, 31, 33
GSS_S_NO_CRED, 11, 18, 21, 24
GSS_S_OLD_TOKEN, 11, 21, 25, 29, 32
GSS_S_UNSEQ_TOKEN, 11, 29, 32
S
security context, 5, 10, 13, 18, 19, 20, 21, 22, 23, 25, 26,
27, 28, 29, 30, 32
- 42 -