Provided by: gss-man_1.0.3-2_all bug

NAME

       gss_add_cred - API function

SYNOPSIS

       #include <gss.h>

       OM_uint32  gss_add_cred(OM_uint32  *  minor_status, const gss_cred_id_t input_cred_handle,
       const gss_name_t desired_name, const gss_OID  desired_mech,  gss_cred_usage_t  cred_usage,
       OM_uint32     initiator_time_req,    OM_uint32    acceptor_time_req,    gss_cred_id_t    *
       output_cred_handle, gss_OID_set * actual_mechs, OM_uint32 * initiator_time_rec,  OM_uint32
       * acceptor_time_rec);

ARGUMENTS

       OM_uint32 * minor_status
                   (integer, modify) Mechanism specific status code.

       const gss_cred_id_t input_cred_handle
                   (gss_cred_id_t, read, optional) The credential
                     to which a credential-element will be added.  If
                     GSS_C_NO_CREDENTIAL is specified, the routine will compose the
                     new credential based on default behavior (see text).
                     Note that, while the credential-handle is not modified by
                     gss_add_cred(), the underlying credential will be modified if
                     output_credential_handle is NULL.

       const gss_name_t desired_name
                   (gss_name_t, read.)  Name of principal whose
                     credential should be acquired.

       const gss_OID desired_mech
                   (Object ID, read) Underlying security mechanism with
                     which the credential may be used.

       gss_cred_usage_t cred_usage
                   (gss_cred_usage_t, read) GSS_C_BOTH - Credential may
                     be used either to initiate or accept security contexts.
                     GSS_C_INITIATE - Credential will only be used to initiate
                     security contexts.  GSS_C_ACCEPT - Credential will only be used
                     to accept security contexts.

       OM_uint32 initiator_time_req
                   (Integer, read, optional) number of seconds
                     that the credential should remain valid for initiating security
                     contexts.  This argument is ignored if the composed credentials
                     are of type GSS_C_ACCEPT.  Specify GSS_C_INDEFINITE to request
                     that the credentials have the maximum permitted initiator
                     lifetime.

       OM_uint32 acceptor_time_req
                   (Integer, read, optional) number of seconds
                     that the credential should remain valid for accepting security
                     contexts.  This argument is ignored if the composed credentials
                     are of type GSS_C_INITIATE.  Specify GSS_C_INDEFINITE to request
                     that the credentials have the maximum permitted initiator
                     lifetime.

       gss_cred_id_t * output_cred_handle
                   (gss_cred_id_t, modify, optional) The returned
                     credential handle, containing the new credential-element and all
                     the credential-elements from input_cred_handle.  If a valid
                     pointer to a gss_cred_id_t is supplied for this parameter,
                     gss_add_cred creates a new credential handle containing all
                     credential-elements from the input_cred_handle and the newly
                     acquired credential-element; if NULL is specified for this
                     parameter, the newly acquired credential-element will be added to
                     the credential identified by input_cred_handle.  The resources
                     associated with any credential handle returned via this parameter
                     must be released by the application after use with a call to
                     gss_release_cred().

       gss_OID_set * actual_mechs
                   (Set of Object IDs, modify, optional) The complete
                     set of mechanisms for which the new credential is valid.  Storage
                     for the returned OID-set must be freed by the application after
                     use with a call to gss_release_oid_set(). Specify NULL if not
                     required.

       OM_uint32 * initiator_time_rec
                   (Integer, modify, optional) Actual number of
                     seconds for which the returned credentials will remain valid for
                     initiating contexts using the specified mechanism.  If the
                     implementation or mechanism does not support expiration of
                     credentials, the value GSS_C_INDEFINITE will be returned. Specify
                     NULL if not required

       OM_uint32 * acceptor_time_rec
                   (Integer, modify, optional) Actual number of
                     seconds for which the returned credentials will remain valid for
                     accepting security contexts using the specified mechanism.  If
                     the implementation or mechanism does not support expiration of
                     credentials, the value GSS_C_INDEFINITE will be returned. Specify
                     NULL if not required

DESCRIPTION

       Adds  a  credential-element  to a credential.  The credential-element is identified by the
       name of the principal to which it refers.  GSS-API implementations  must  impose  a  local
       access-control  policy  on  callers  of  this routine to prevent unauthorized callers from
       acquiring credential-elements to which they are not entitled. This routine is not intended
       to  provide  a  "login  to  the  network"  function,  as such a function would involve the
       creation of new mechanism-specific authentication data, rather  than  merely  acquiring  a
       GSS-API  handle  to  existing  data.   Such  functions,  if required, should be defined in
       implementation-specific extensions to the API.

       If desired_name is GSS_C_NO_NAME, the call is interpreted as a request to add a credential
       element  that  will  invoke  default  behavior  when  passed to gss_init_sec_context() (if
       cred_usage is GSS_C_INITIATE or GSS_C_BOTH) or gss_accept_sec_context() (if cred_usage  is
       GSS_C_ACCEPT or GSS_C_BOTH).

       This  routine is expected to be used primarily by context acceptors, since implementations
       are likely to provide mechanism-specific ways of obtaining GSS-API  initiator  credentials
       from  the  system  login  process.   Some  implementations  may  therefore not support the
       acquisition of GSS_C_INITIATE or GSS_C_BOTH credentials via gss_acquire_cred for any  name
       other  than  GSS_C_NO_NAME,  or  a  name produced by applying either gss_inquire_cred to a
       valid credential, or gss_inquire_context to an active context.

       If credential acquisition is time-consuming for a mechanism, the mechanism may  choose  to
       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; thus a call of gss_inquire_cred
       immediately following the call of gss_add_cred must return valid credential data, and  may
       therefore incur the overhead of a deferred credential acquisition.

       This   routine   can   be   used  to  either  compose  a  new  credential  containing  all
       credential-elements of the original in addition to the  newly-acquire  credential-element,
       or  to add the new credential- element to an existing credential. If NULL is specified for
       the output_cred_handle parameter argument, the new credential-element will be added to the
       credential  identified  by  input_cred_handle;  if  a  valid  pointer is specified for the
       output_cred_handle parameter, a new credential handle will be created.

       If GSS_C_NO_CREDENTIAL is specified as the input_cred_handle, gss_add_cred will compose  a
       credential  (and  set  the  output_cred_handle  parameter  accordingly)  based  on default
       behavior.  That is, the call will have the same effect as if  the  application  had  first
       made  a call to gss_acquire_cred(), specifying the same usage and passing GSS_C_NO_NAME as
       the desired_name parameter to obtain  an  explicit  credential  handle  embodying  default
       behavior,   passed   this   credential   handle  to  gss_add_cred(),  and  finally  called
       gss_release_cred() on the first credential handle.

       If GSS_C_NO_CREDENTIAL  is  specified  as  the  input_cred_handle  parameter,  a  non-NULL
       output_cred_handle must be supplied.

RETURN VALUE

       `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_DUPLICATE_ELEMENT`:  The  credential  already contains an element for the requested
       mechanism with overlapping usage and validity period.

       `GSS_S_CREDENTIALS_EXPIRED`: The required credentials could not be added because they have
       expired.

       `GSS_S_NO_CRED`: No credentials were found for the specified name.

REPORTING BUGS

       Report   bugs   to   <bug-gss@gnu.org>.    GNU   Generic   Security   Service  home  page:
       http://www.gnu.org/software/gss/      General      help      using      GNU      software:
       http://www.gnu.org/gethelp/

COPYRIGHT

       Copyright © 2003-2013 Simon Josefsson.
       Copying  and distribution of this file, with or without modification, are permitted in any
       medium without royalty provided the copyright notice and this notice are preserved.

SEE ALSO

       The full documentation for gss is maintained as a Texinfo manual.  If  the  info  and  gss
       programs are properly installed at your site, the command

              info gss

       should give you access to the complete manual.