home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_a_c / draft-ietf-cat-xgssapi-acc-cntrl-02.txt < prev    next >
Text File  |  1997-03-24  |  52KB  |  1,395 lines

  1. Internet-Draft                                                         
  2.                                                       Tom Parker , ICL 
  3.                                                    Denis Pinkas  , Bull
  4. IETF Common Authentication Technology WG 
  5. <draft-ietf-cat-xgssapi-acc-cntrl-02.txt>                March 25, 1997
  6.     
  7.     
  8.     
  9.              Extended Generic Security Service APIs: XGSS-APIs 
  10.                  Access control and delegation extensions 
  11.     
  12.     
  13. 1. STATUS OF THIS MEMO 
  14.     
  15.    This document is an Internet Draft. Internet Drafts are working 
  16.    documents of the Internet Engineering Task Force (IETF), its Areas, 
  17.    and its Working Groups. Note that other groups may also distribute 
  18.    working documents as Internet Drafts. Internet Drafts are draft 
  19.    documents valid for a maximum of six months. Internet Drafts may be 
  20.    updated, replaced, or obsoleted by other documents at any time. It 
  21.    is not appropriate to use Internet Drafts as reference material or 
  22.    to cite them other than as a "working draft" or "work in progress." 
  23.    Please check the I-D abstract listing contained in each Internet 
  24.    Draft directory to learn the current status of this or any other 
  25.    Internet Draft. 
  26.     
  27.    Comments on this document should be sent to "cat-ietf@MIT.EDU", the 
  28.    IETF Common Authentication Technology WG discussion list. 
  29.     
  30. 2. ABSTRACT 
  31.     
  32.    The Generic Security Service Application Program Interface (GSS- 
  33.    API), as defined in RFC-1508, provides security services to callers 
  34.    in a generic fashion, supportable with a range of underlying 
  35.    mechanisms and technologies and hence allowing source-level 
  36.    portability of applications to different environments. It defines 
  37.    GSS-API services and primitives at a level independent of underlying 
  38.    mechanism and programming language environment. 
  39.     
  40.    The GSSAPI allows a caller application to authenticate a principal 
  41.    identity associated with a peer application, to delegate rights to a 
  42.    peer, and to apply security services such as confidentiality and 
  43.    integrity on a per-message basis. 
  44.     
  45.    The primitives of the GSS-API do not currently allow support of 
  46.    security attributes other than a single identity and do not allow 
  47.    fine control of delegation. 
  48.     
  49.    The additional primitives described in this document provide support 
  50.    for: 
  51.     
  52.    * the exchange of a variety of security attributes, and the 
  53.    construction of authorization functions using these attributes, 
  54.    including delegated ones, (attribute handling support functions), 
  55.  
  56.  
  57. Parker, Pinkas       Document Expiration: 25 September, 1997  [Page 1]
  58. Internet-Draft                                          March 25 , 1997
  59.  
  60.    * fine control over delegation by allowing specification of the 
  61.    delegation method, the acceptor(s) of a security context, their type 
  62.    and the restrictions that may apply (acceptor control and support 
  63.    functions). 
  64.     
  65. 3. SECURITY ATTRIBUTES 
  66.     
  67.    A security attribute is defined as: 
  68.     
  69.     SecAttribute ::= { 
  70.           attributeType     OBJECT IDENTIFIER, 
  71.           definingAuthority OCTET STRING        OPTIONAL, 
  72.           securityValue     OCTET STRING } 
  73.      
  74.      attributeType 
  75.       
  76.      Defines the type of the attribute. Attributes of the same type 
  77.      have the same authorization semantics. 
  78.       
  79.      definingAuthority 
  80.       
  81.      It indicates the authority responsible for defining the value 
  82.      within the attribute type. Some policies demand that multiple 
  83.      sources of values for a given attribute type be supported (e.g. a 
  84.      policy accepting attribute values defined outside the security 
  85.      domain), These policies give rise to a risk of value clashes. The 
  86.      definingAuthority field is used to separate these values. When not 
  87.      present, the value defaults to the name of the authority that 
  88.      issued the attribute. 
  89.       
  90.      securityValue 
  91.       
  92.      The value of the security attribute. Its syntax is determined by 
  93.      the attribute type. 
  94.     
  95.    Security attributes are composed of principal attributes and of 
  96.    qualifier attributes. 
  97.     
  98. 3.1. PRINCIPAL ATTRIBUTES 
  99.     
  100.    Principal attributes are composed of security privileges and 
  101.    miscellaneous attributes. 
  102.     
  103. 3.1.1. PRIVILEGES ATTRIBUTES 
  104.     
  105.    Security privileges are defined as security attributes attached to a 
  106.    principal, and only usable for access control purposes. Ones defined 
  107.    here are: access identity, group memberships, clearance and 
  108.    capability. The use of OBJECT IDENTIFIERS allows for other types to 
  109.    be standardised. 
  110.     
  111.  
  112.  
  113.  
  114.  
  115. Parker, Pinkas       Document Expiration: 25 September, 1997  [Page 2]
  116. Internet-Draft                                          March 25 , 1997
  117.  
  118. 3.1.2. MISCELLANEOUS ATTRIBUTES 
  119.     
  120.    Miscellaneous attributes are defined as security attributes attached 
  121.    to a principal, which are not security privileges. They are used for 
  122.    a variety of purposes. Ones defined here are: the domain name of the 
  123.    issuer of the security attributes, an audit identity, restrictions 
  124.    and validity time periods. 
  125.     
  126. 3.2. QUALIFIER ATTRIBUTES 
  127.     
  128.    Qualifier attributes describe the context acceptors for which 
  129.    controls are to apply. Ones defined here are: acceptor name and 
  130.    application trust group. 
  131.     
  132. 3.3. ATTRIBUTES DEFINITIONS 
  133.     
  134. 3.3.1. PRIVILEGE ATTRIBUTES 
  135.     
  136.    A privilege attribute is attached to a principal and is only usable 
  137.    for access control purposes. Privileges are defined under the OID: 
  138.     
  139.    privilege-attribute    OBJECT IDENTIFIER ::= 
  140.    { iso(1) identified-organisation(3) icd-ecma(012) technical-report(1) 
  141.    security-in-open-systems(046) privilege-attribute(4) } 
  142.     
  143. 3.3.1.1. ROLE ATTRIBUTE 
  144.     
  145.    The role attribute represents the principal's role. The type of this 
  146.    attribute is: 
  147.     
  148.    { privilege-attribute 1 } 
  149.     
  150.    The type and the value of this attribute can be set and returned. 
  151.     
  152. 3.4.1.2. ACCESS IDENTITY 
  153.     
  154.    The access identity represents an identity to be used for access 
  155.    control purposes. A security context or a credential may not contain 
  156.    more than a single access identity for a given principal. This attri- 
  157.    bute does not need to be present. The type of this attribute is : 
  158.     
  159.    { privilege-attribute 2 } 
  160.     
  161.    The type and the value of this attribute can be set and returned. 
  162.     
  163. 3.4.1.3. PRIMARY GROUP 
  164.     
  165.    The primary group represents a uniquely prominent group to which a 
  166.    principal belongs. A security context or a credential may not 
  167.    contain more than one primary group for a given principal. The type 
  168.    of this attribute is : 
  169.     
  170.    { privilege-attribute 3 } 
  171.  
  172.  
  173. Parker, Pinkas        Document Expiration: 25 September, 1997  [Page 3]
  174. Internet-Draft                                          March 25 , 1997
  175.  
  176.     
  177.    The type and the value of this attribute can be set and returned. 
  178.     
  179. 3.4.1.4. GROUP 
  180.     
  181.    A group represents a characteristic common to several principals. 
  182.    A security context or a credential may contain more than one group 
  183.    for a given principal. The type of this attribute is : 
  184.     
  185.    { privilege-attribute 4 } 
  186.     
  187.    The type and the value of this attribute can be set and returned. 
  188.     
  189. 3.4.1.5. CAPABILITY 
  190.     
  191.    A capability nominates a resource and the operation(s) that can be 
  192.    performed on that resource. The type of this attribute is : 
  193.     
  194.    { privilege-attribute 5 } 
  195.     
  196.    The type and the value of this attribute can be set and returned. 
  197.     
  198. 3.3.2. MISCELLANEOUS ATTRIBUTES 
  199.     
  200.    Miscellaneous attributes are defined under the OID: 
  201.     
  202.    misc-attributeOBJECT IDENTIFIER ::= 
  203.    { iso(1) identified-organisation(3) icd-ecma(012) technical-report(1) 
  204.    security-in-open-systems(046) misc-attribute(3) } 
  205.     
  206. 3.4.2.1. AUDIT IDENTITY 
  207.     
  208.    The access identity represents the principal's identity to be used 
  209.    for audit purposes. The type of this attribute is : 
  210.     
  211.    { misc-attribute 2 } 
  212.     
  213.    Only the type of this attribute can be set and both the type and the 
  214.    value can be returned. 
  215.     
  216. 3.4.2.2. ISSUER DOMAIN NAME 
  217.     
  218.    The issuer domain name represents the name of the domain that has 
  219.    issued the security attributes. It cannot be set by a call to 
  220.    GSS_Set_cred_attributes. The type of this attribute is : 
  221.     
  222.    { misc-attribute 10 } 
  223.     
  224.    Only the type of this attribute can be set and both the type and the 
  225.    value can be returned. This attribute may always be returned by a 
  226.    call to GSS_Get_cred_attributes. 
  227.     
  228.  
  229.  
  230.  
  231. Parker, Pinkas        Document Expiration: 25 September, 1997  [Page 4]
  232. Internet-Draft                                          March 25 , 1997
  233.  
  234. 3.4.2.3. VALIDITY PERIODS 
  235.     
  236.    The validity periods represent a list of the time periods within 
  237.    which the security attributes are valid. The type of this attribute 
  238.    is : 
  239.     
  240.    { misc-attribute 11 } 
  241.     
  242.    The type and the values of this attribute can be set and returned. 
  243.     
  244. 3.4.2.4. OPTIONAL RESTRICTIONS 
  245.     
  246.    The Optional restrictions represent restrictions that apply to the 
  247.    security context. The context may be accepted, even if the  
  248.    application is unable to understand the optional restrictions. 
  249.    The type of this attribute is : 
  250.     
  251.    { misc-attribute 12 } 
  252.     
  253.    The type and the values of this attribute can be set and returned. 
  254.     
  255. 3.4.2.5. MANDATORY RESTRICTIONS 
  256.     
  257.    The mandatory restrictions represent restrictions that apply to the 
  258.    security context. The context must not be accepted if the 
  259.    application is unable to understand the mandatory restrictions. The 
  260.    type of this attribute is : 
  261.     
  262.    { misc-attribute 13 } 
  263.     
  264.    The type and the values of this attribute can be set and returned. 
  265.     
  266. 3.3.3. QUALIFIER ATTRIBUTES 
  267.     
  268.    Qualifier attributes are security attributes which define which 
  269.    applications are authorized to be a security context acceptor. In 
  270.    addition to the qualifier attribute it is possible to specify 
  271.    whether delegation is authorized or not for the context acceptor. 
  272.     
  273.    Qualifier attributes describe the context acceptors for which 
  274.    controls are to apply. Qualifier attributes are defined under the 
  275.    OID: 
  276.     
  277.    qualifier-attribute    OBJECT IDENTIFIER ::= 
  278.    { iso(1) identified-organisation(3) icd-ecma(012) technical-report(1) 
  279.    security-in-open-systems(046) qualifier-attribute(5) } 
  280.     
  281. 3.4.3.1. ACCEPTOR NAME 
  282.     
  283.    An acceptor name represents the name of an application that can 
  284.    potentially accept the security context. The type of this attribute 
  285.    is : 
  286.     
  287.  
  288.  
  289. Parker, Pinkas        Document Expiration: 25 September, 1997  [Page 5]
  290. Internet-Draft                                          March 25 , 1997
  291.  
  292.    { qualifier-attribute 1 } 
  293.     
  294. 3.4.3.2. APPLICATION TRUST GROUP 
  295.     
  296.    An application trust group represents a group of acceptors, defined 
  297.    by the security administrator, that mutually trust each other not to 
  298.    spoof each others' identity. The type of this attribute is : 
  299.     
  300.    { qualifier-attribute 2 } 
  301.     
  302. 4. ATTRIBUTE SET REFERENCE 
  303.     
  304.    Attribute set references are defined under the OID: 
  305.     
  306.    attribute-set-reference     OBJECT IDENTIFIER ::= 
  307.    { iso(1) identified-organisation(3) icd-ecma(012) technical-report(1) 
  308.    security-in-open-systems(046) attribute-set-reference (9) 
  309.     
  310.    An Attribute set reference is used to select a set of security 
  311.    attributes and acceptor controls according to policy. At present 
  312.    only a role name is defined. 
  313.     
  314. 4.1. ROLE NAME 
  315.     
  316.    The role name is an attribute set reference used to select a set of 
  317.    security attributes. The type of this attribute is : 
  318.     
  319.    { attribute-set-reference 1 } 
  320.     
  321.    The type and the values of this reference can only be set. 
  322.     
  323. 6. INTERFACE DESCRIPTIONS 
  324.     
  325.    The interfaces are split between attribute handling support 
  326.    functions and context acceptor control and support functions. 
  327.     
  328. 6.1. ATTRIBUTE HANDLING SUPPORT FUNCTIONS 
  329.     
  330.    Three attribute handling support functions are defined : 
  331.     
  332. 6.1.1. GSS_Set_cred_attributes 
  333.     
  334.    To enable a GSS-API context initiator to specify security 
  335.    attributes, i.e. security privileges and miscellaneous security 
  336.    attributes to be included in the caller credentials in order to 
  337.    become part of a security context. 
  338.     
  339. 6.1.2. GSS_Get_sec_attributes 
  340.     
  341.    To extract security attributes, either from a GSS-API context, or 
  342.    from a credential handle. Both privilege attributes and 
  343.    miscellaneous attributes can be retrieved. The function can be 
  344.    invoked either by a context initiator or by a context acceptor. When 
  345.  
  346.  
  347. Parker, Pinkas        Document Expiration: 25 September, 1997  [Page 6]
  348. Internet-Draft                                          March 25 , 1997
  349.  
  350.    applied to a GSS-API context and invoked by a context acceptor, if 
  351.    delegation is being used, the privilege and miscellaneous attributes 
  352.    which are returned and only those of the initiator, i.e. the 
  353.    initiator of the delegation chain. 
  354.     
  355. 6.2. CONTEXT ACCEPTOR SUPPORT FUNCTION 
  356.     
  357.    There is a single function. 
  358.     
  359. 6.2.1. GSS_Get_received_creds 
  360.     
  361.    To extract credential handles from a GSS-API context (established 
  362.    with GSS_Accept_sec_context function). This is only applicable for 
  363.    some forms of delegation supporting multiple incoming credentials, 
  364.    and can only be invoked by a context acceptor. A call to 
  365.    GSS_Get_received_creds is an intermediary step for an acceptor, 
  366.    before extracting the security attributes of each set of credentials 
  367.    with a call to GSS_Get_sec_attributes. The credential handles are 
  368.    ordered. They start with the credentials of the first initiator and 
  369.    finish with the the credentials of the immediate invoker. 
  370.     
  371. 6.3. CONTEXT ACCEPTOR CONTROL FUNCTIONS 
  372.     
  373.    These functions enable a GSS-API context initiator to impose 
  374.    constraints on the security context to be established via 
  375.    GSS_Init_sec_context function, and enable a GSS-API context acceptor 
  376.    to retrieve the control information that applies to a security 
  377.    context established using the GSS_Accept_sec_context function, and 
  378.    to build credentials from others. 
  379.     
  380.    Three context acceptor control functions are defined: 
  381.     
  382. 6.3.1. GSS_Set_cred_controls function 
  383.     
  384.    To enable a GSS-API context initiator to specify acceptor controls 
  385.    to be included in the caller's credentials in order to be part of a 
  386.    security context. The controls determine the context acceptors with 
  387.    which valid security contexts can be established using the 
  388.    associated credentials, and whether they can act only as targets 
  389.    only, delegates only as or as delegate/targets. 
  390.     
  391.      * an acceptor designated as being a target only may use the 
  392.      privileges attributes in the received credentials when authorising 
  393.      access to its own protected resources and may not forward them. 
  394.       
  395.      * an acceptor designated as being a delegate only may use the 
  396.      privilege attributes in the received credentials to forward them 
  397.      but should not use them when authorising access to its own 
  398.      protected resources. 
  399.       
  400.        Note:    Only the acceptor system's AEF (Access Enforcement 
  401.        Facility as described in ISO/IEC 10181-3: The Access Control 
  402.        Framework) can prevent an acceptor permitting access based on 
  403.  
  404.  
  405. Parker, Pinkas        Document Expiration: 25 September, 1997  [Page 7]
  406. Internet-Draft                                          March 25 , 1997
  407.  
  408.        attributes not intended for it. However it is not in the 
  409.        interests of an acceptor or its AEF to permit access to 
  410.        resources under their control on the basis of attributes that 
  411.        are explicitly stated as not being appropriate. 
  412.       
  413.      * an acceptor designated as being both a target and a delegate may 
  414.      use the privilege attributes in the received credentials when 
  415.      authorising access to its own protected resources and may also 
  416.      forward them. 
  417.     
  418.    Restrictions over the operations that are authorised under the 
  419.    context can also be specified. 
  420.     
  421. 6.3.2. GSS_Get_sec_controls function 
  422.     
  423.    To enable a GSS-API context initiator or a GSS-API context acceptor 
  424.    to extract acceptor control information either from a credential 
  425.    handle or from a security context. 
  426.     
  427. 6.3.3. GSS_Compound_creds function 
  428.     
  429.    To enable a delegate (which is acting as a GSS-API target for a 
  430.    context initiator, and as a GSS-API context initiator for another 
  431.    delegate or target) to build new credentials made from received 
  432.    credentials and its own credentials. 
  433.     
  434. 7. DETAILED DESCRIPTION OF THE CALLS 
  435.     
  436. 7.1. ATTRIBUTE HANDLING CALLS 
  437.     
  438. 7.1.1. GSS_Set_cred_attributes call 
  439.     
  440.    Input : 
  441.     
  442.    - cred_handle                OCTET STRING, 
  443.    - required_attributes        SET OF SecAttribute, 
  444.    - new_cred_req               BOOLEAN 
  445.    - commit_cred_req            BOOLEAN 
  446.     
  447.    Output : 
  448.     
  449.    - output_cred_handle    OCTET STRING 
  450.     
  451.    Return major_status code: 
  452.     
  453.    - GSS_S_COMPLETE             indicates that the nominated 
  454.                                 attributes are permitted to 
  455.                                 the caller and have been set. 
  456.    - GSS_S_CREDENTIALS_EXPIRED  indicates that the specified 
  457.                                 credentials have expired. 
  458.    - GSS_S_DEFECTIVE_CREDENTIAL indicates that defective 
  459.                                 credentials have been detected. 
  460.    - GSS_S_FAILURE              indicates a failure,unspecified 
  461.                                 at the GSS-API level. 
  462.  
  463. Parker, Pinkas        Document Expiration: 25 September, 1997  [Page 8]
  464. Internet-Draft                                          March 25 , 1997
  465.  
  466.  
  467.    - GSS_S_UNAUTHORIZED         indicates that the function, or 
  468.                                 an argument of the function was 
  469.                                 not authorised. 
  470.    - GSS_S_UNAVAILABLE          indicates that the operation is 
  471.                                 not supported. 
  472.     
  473.    This function enables a caller to request a set of privileges and 
  474.    miscellaneous attributes, optionally replacing existing credentials 
  475.    or creating a new set. The effect of this interface is not 
  476.    cumulative, the requested attributes replace any existing attributes 
  477.    in the credentials claimed. 
  478.     
  479.    Parameters for GSS_Set_cred_attributes: 
  480.     
  481.    cred_handle 
  482.     
  483.    Handle for credentials claimed, cred_handle refers to an 
  484.    authenticated principal. Supply NULL to use default credentials. 
  485.     
  486.    required_attributes 
  487.     
  488.    A set of required privilege and miscellaneous attributes. NULL 
  489.    specifies default attributes to be requested. Otherwise, only the 
  490.    privilege and miscellaneous attributes specified will be present. 
  491.     
  492.    If a specified attribute is provided with a NULL value field, the 
  493.    value allocated to the attribute will be the default for the 
  494.    specified attribute available to the authenticated principal 
  495.    according to the prevailing security policy. Otherwise the value 
  496.    specified will be that present. If a value specified clashes with 
  497.    policy, an error is returned. 
  498.     
  499.    If an attribute set reference (e.g.a role name) is specified as a 
  500.    single attribute required, and policy permits the principal to use 
  501.    it, it will be used as an attribute set reference to select a set of 
  502.    attributes and acceptor controls according to policy. 
  503.     
  504.    If an attribute set reference (e.g.a role name) is specified along 
  505.    with other required attributes, and policy permits the principal to 
  506.    use the role name, the attributes potentially available for the 
  507.    authenticated principal are taken from a set compounded of the 
  508.    principal's authorised attributes, and the attributes associated 
  509.    with the role name. 
  510.     
  511.    new_cred_req 
  512.     
  513.    TRUE for a new credentials set, FALSE replaces the original. 
  514.     
  515.    commit_cred_req 
  516.     
  517.    TRUE for immediate attribute acquisition, FALSE for deferred 
  518.    attribute acquisition. 
  519.  
  520.  
  521. Parker, Pinkas        Document Expiration: 25 September, 1997  [Page 9]
  522. Internet-Draft                                          March 25 , 1997
  523.  
  524.     
  525.    output_cred_handle 
  526.     
  527.    The credentials handle for the changed or new credentials. 
  528.    GSS_Set_cred_attributes produces a modified version of the input 
  529.    credentials (cred_handle). The original credentials are changed if 
  530.    new_cred_req is FALSE, otherwise the output_cred_handle references a 
  531.    new, and different, copy of the original input credentials (which 
  532.    remain untouched). GSS_Release_cred can be used when the caller is 
  533.    finished with any new credentials created by this function. 
  534.     
  535. 7.1.2. GSS_Get_sec_attributes call 
  536.     
  537.    Input : 
  538.     
  539.    - cred_handle                OCTET STRING, 
  540.    - context_handle             INTEGER, 
  541.    - attribute_types_required   SET OF OBJECT IDENTIFIER 
  542.     
  543.    Output : 
  544.     
  545.    - priv_attributes            SET OF SecAttribute 
  546.    - misc_attributes            SET OF SecAttribute 
  547.    - other_cred_present         BOOLEAN 
  548.     
  549.    Return major_status code : 
  550.     
  551.    - GSS_S_COMPLETE             indicates that retrieval of 
  552.                                 attributes is supported and 
  553.                                 that all, some, or none of the 
  554.                                 requested attribute types have 
  555.                                 been returned. 
  556.    - GSS_S_CONTEXT_EXPIRED      indicates that the specified 
  557.                                 security 
  558.                                 context has expired. 
  559.    - GSS_S_CREDENTIALS_EXPIRED  indicates that the specified 
  560.                                 credentials have expired. 
  561.    - GSS_S_DEFECTIVE_CREDENTIAL indicates that defective 
  562.                                 credentials have been detected. 
  563.    - GSS_S_FAILURE              indicates a failure, 
  564.                                 unspecified at the GSS-API 
  565.                                 level. 
  566.    - GSS_S_UNAVAILABLE          indicates that the operation is 
  567.                                 not supported. 
  568.     
  569.    This function can be used by context initiators and context 
  570.    acceptors to query attributes in credentials or security contexts. 
  571.    If the credentials or security context represents a delegation 
  572.    chain, attributes are retrieved only from the initiator of the 
  573.    chain. If the attribute_types_required parameter is not supplied, 
  574.    then all attribute types are returned. This option could allow 
  575.    clients of this interface to query all attributes and pass privilege 
  576.    attributes to a separate authorization service to make a decision. 
  577.  
  578.  
  579. Parker, Pinkas        Document Expiration: 25 September, 1997 [Page 10]
  580. Internet-Draft                                          March 25 , 1997
  581.  
  582.    To obtain security attributes from intermediates in a delegation 
  583.    chain, the caller should first call GSS_Get_received_creds (see 
  584.    section 5.2.1 and section 6.2.1). 
  585.     
  586.    Parameters for GSS_Get_sec_attributes: 
  587.     
  588.    cred_handle 
  589.     
  590.    Handle to credentials, cred_handle refers to an authenticated 
  591.    principal. Supply NULL to use default credentials, or a context 
  592.    handle. Note that NULL, without a context handle, is only used for 
  593.    obtaining the caller's own attributes. 
  594.     
  595.    context_handle 
  596.     
  597.    GSS-API security context handle, context_handle refers to an 
  598.    established security context. Context_handle is ignored if a non- 
  599.    NULL cred_handle is presented. (Note: it is typically only necessary 
  600.    to use a context_handle parameter rather than cred_handle for the 
  601.    case when a security context is emitted by gss_accept_sec_context, 
  602.    but not with an accompanying set of delegated credentials). 
  603.     
  604.    attribute_types_required 
  605.     
  606.    A set of security attribute types. If the default (NULL) is 
  607.    specified, then all miscellaneous and privilege attribute types are 
  608.    returned. 
  609.     
  610.    This standard does not specify which attributes must be supported, 
  611.    but some common security attributes are defined in section 2. 
  612.     
  613.    priv_attributes 
  614.     
  615.    A set of privilege attributes. Response is conditional on the 
  616.    "attribute_types_required" input. 
  617.     
  618.    misc_attributes 
  619.     
  620.    A set of miscellaneous attributes. Response is conditional on the 
  621.    "attribute_types_required" input. 
  622.     
  623.    other_cred_present 
  624.     
  625.    TRUE when the caller is a context acceptor querying a security 
  626.    context and when more than one set of credentials is present. If 
  627.    interested in the other credential(s), the caller should next call 
  628.    GSS_Get_received_creds, 
  629.     
  630.    FALSE when either the caller is a context initiator or when the 
  631.    caller is a context acceptor querying a security context and when no 
  632.    other credential is present. 
  633.     
  634. 7.2. CONTEXT ACCEPTOR SUPPORT FUNCTION 
  635.  
  636.  
  637. Parker, Pinkas        Document Expiration: 25 September, 1997 [Page 11]
  638. Internet-Draft                                          March 25 , 1997
  639.  
  640.     
  641. 7.2.1. GSS_Get_received_creds call 
  642.     
  643.    Input : 
  644.     
  645.    - context_handle             INTEGER, 
  646.     
  647.    Output : 
  648.     
  649.    - received_creds             SEQUENCE OF OCTET STRING 
  650.     
  651.    Return major_status code : 
  652.     
  653.    - GSS_S_COMPLETE             indicates that the requested 
  654.                                 delegate 
  655.                                 credentials were retrieved. 
  656.    - GSS_S_CONTEXT_EXPIRED      indicates that the specified 
  657.                                 security 
  658.                                 context has expired. 
  659.    - GSS_S_FAILURE              indicates a failure, 
  660.                                 unspecified at the GSS-API 
  661.                                 level. 
  662.    - GSS_S_UNAUTHORIZED         indicates that the function, or 
  663.                                 an argument of the function was 
  664.                                 not authorised. 
  665.    - GSS_S_UNAVAILABLE          indicates that the operation is 
  666.                                 not supported. 
  667.     
  668.    This function supports the retrieval of all credentials received by 
  669.    an acceptor. It is intended for context acceptors that require not 
  670.    only the initiator's credentials, but also delegates' credentials, 
  671.    to apply their local security policy. A typical example is the 
  672.    retrieval of delegate credentials to subsequently obtain delegate 
  673.    privilege attributes (using GSS_Get_sec_attributes) for use in 
  674.    authorization decisions. 
  675.     
  676.    Parameters for GSS_Get_received_creds: 
  677.     
  678.    context_handle 
  679.     
  680.    GSS-API security context handle, context_handle refers to a security 
  681.    context that is part of an established association. A default 
  682.    context is assumed if no context_handle is supplied. 
  683.     
  684.    received_creds 
  685.     
  686.    Contains an ordered list of credentials for the original initiator 
  687.    and for each of the intermediate delegates (if any) between the 
  688.    original initiator and this context acceptor, the first of these 
  689.    being the credentials of the original initiator, and the last being 
  690.    of the immediately preceding delegate. It is expected that the 
  691.    normal use for such credentials would merely be inspection via 
  692.    GSS_Get_sec_attributes as most known mechanisms would not permit 
  693.  
  694.  
  695. Parker, Pinkas        Document Expiration: 25 September, 1997 [Page 12]
  696.  
  697. Internet-Draft                                          March 25 , 1997
  698.  
  699.    such delegate credentials to be directly used for initiating further 
  700.    security contexts. Note that it is the caller's responsibility to 
  701.    free any received credentials returned from gss_get_received_creds 
  702.    via gss_release_cred. 
  703.     
  704. 7.3. ACCEPTOR CONTROL HANDLING CALLS 
  705.     
  706.    The following construct is used in both the GSS_Set_cred_controls 
  707.    and GSS_Get_sec_controls calls: 
  708.     
  709.    AcceptorControl ::=  SEQUENCE { 
  710.         targetOnly        SEQUENCE OF SecAttribute OPTIONAL, 
  711.         delegateOnly      SEQUENCE OF SecAttribute OPTIONAL, 
  712.         delegateTarget    SEQUENCE OF SecAttribute OPTIONAL, 
  713.         delegationMode    DelegationMode OPTIONAL,} 
  714.     
  715.    DelegationMode ::=  ENUMERATED { 
  716.         default           (0), 
  717.         simple            (1), 
  718.         composite         (2), 
  719.         traced            (3),} 
  720.     
  721.    The fields targetOnly, delegateOnly and delegateTarget specify one 
  722.    or several qualifier attributes describing the acceptors (as 
  723.    targets, delegates or delegate/targets) for which controls are to 
  724.    apply. 
  725.     
  726.      * the targetOnly specifies that the qualifier(s) are identifying 
  727.      one or more targets, none of which may use the credentials as a 
  728.      delegate. 
  729.       
  730.      *   the delegateOnly choice specifies that the qualifier(s) are 
  731.      identifying one or more delegates, none of which should use the 
  732.      privilege attributes in the credentials when authorising access to 
  733.      their own protected resources, but which may use the received 
  734.      credentials as a delegate. 
  735.       
  736.      *   the delegateTarget choice specifies that the qualifier is 
  737.      identifying one or more delegate/targets any of which can use the 
  738.      received credentials as a delegate and can also use the privileges 
  739.      attributes in the the credentials when authorising access to its 
  740.      own protected resources. 
  741.     
  742.    delegationMode 
  743.     
  744.    Indicates the mode of delegation required. 
  745.     
  746.    Currently three delegation modes and one default are specified: 
  747.     
  748.    - default: whatever mode of delegation has been set as default (this 
  749.    may be no delegation). 
  750.     
  751.    - simple: only the original initiator's credentials have to be 
  752.  
  753.  
  754.  
  755. Parker, Pinkas        Document Expiration: 25 September, 1997 [Page 13]
  756. Internet-Draft                                          March 25 , 1997
  757.  
  758.    forwarded in the security context being established, 
  759.     
  760.    - composite: the credentials of the original initiator and of the 
  761.    immediate caller have to be forwarded, 
  762.     
  763.    - traced: the credentials of the original initiator, of all the 
  764.    delegates, including the immediate caller have to be forwarded. 
  765.     
  766.     
  767. 7.3.1. GSS_Set_cred_controls call 
  768.     
  769.    Input : 
  770.     
  771.    - cred_handle                OCTET STRING, 
  772.    - required_acceptor_control  AcceptorControl, 
  773.    - replace_old_controls       BOOLEAN 
  774.    - new_cred_req               BOOLEAN 
  775.    - commit_cred_req            BOOLEAN 
  776.     
  777.    Output : 
  778.     
  779.    - output_cred_handle         OCTET STRING 
  780.     
  781.    Return major_status code: 
  782.     
  783.    - GSS_S_COMPLETE             indicates that the controls 
  784.                                 have been set. 
  785.    - GSS_S_CREDENTIALS_EXPIRED  indicates that the specified 
  786.                                 credentials have expired. 
  787.    - GSS_S_DEFECTIVE_CREDENTIAL indicates that defective 
  788.                                 credentials have been detected. 
  789.    - GSS_S_FAILURE              indicates a failure, 
  790.                                 unspecified at the GSS-API 
  791.                                 level. 
  792.    - GSS_S_UNAUTHORIZED         indicates that the function, or 
  793.                                 an argument of the function was 
  794.                                 not authorised. 
  795.    - GSS_S_UNAVAILABLE          indicates that the operation is 
  796.                                 not supported. 
  797.     
  798.    This function supports requests to set context acceptor controls, 
  799.    optionally replacing existing credentials controls or creating a new 
  800.    set of credentials with new controls. The effect of this interface 
  801.    is either cumulative or not depending on the value of the 
  802.    replace_old_controls parameter. 
  803.     
  804.    Parameters for GSS_Set_cred_controls: 
  805.     
  806.    cred_handle 
  807.     
  808.    Handle for credentials claimed, it refers to an authenticated 
  809.    principal. Supply NULL to use default credentials. 
  810.     
  811.  
  812.  
  813.  
  814. Parker, Pinkas        Document Expiration: 25 September, 1997 [Page 14]
  815. Internet-Draft                                          March 25 , 1997
  816.  
  817.    required_acceptor_control 
  818.     
  819.    The control settings required. 
  820.     
  821.    replace_old_controls 
  822.     
  823.    TRUE to replace acceptor controls existing in original credentials. 
  824.    FALSE to specify additional controls. 
  825.     
  826.    new_cred_req 
  827.     
  828.    TRUE for a new credentials set, FALSE to modify the original. 
  829.     
  830.    commit_cred_req 
  831.     
  832.    TRUE for immediate action, FALSE for deferred action. 
  833.     
  834.    output_cred_handle 
  835.     
  836.    GSS_Set_cred_controls produces a modified version of the input 
  837.    credentials (cred_handle). The original credentials are directly 
  838.    changed if duplicate_cred_req is FALSE, otherwise the 
  839.    output_cred_handle references a new, and potentially different, copy 
  840.    of the original input credentials (which remain untouched). 
  841.    gss_release_cred can be used when the caller is finished with any 
  842.    new credentials created by this function. 
  843.     
  844. 7.3.2. GSS_Get_sec_controls call 
  845.     
  846.    Input : 
  847.     
  848.    - cred_handle                OCTET STRING, 
  849.    - context_handle             INTEGER, 
  850.     
  851.    Output : 
  852.     
  853.    - acceptor_controls          SET OF AcceptorControl, 
  854.     
  855.    Return major_status code : 
  856.     
  857.    - GSS_S_COMPLETE             indicates that the acceptor 
  858.                                 control 
  859.                                 information has been returned 
  860.    - GSS_S_CREDENTIALS_EXPIRED  indicates that the specified 
  861.                                 credentials have expired. 
  862.    - GSS_S_DEFECTIVE_CREDENTIAL indicates that defective 
  863.                                 credentials have been detected. 
  864.    - GSS_S_FAILURE              indicates a failure, 
  865.                                 unspecified at the GSS-API 
  866.                                 level. 
  867.    - GSS_S_UNAVAILABLE          indicates that the operation is 
  868.                                 not supported. 
  869.     
  870.  
  871.  
  872. Parker, Pinkas        Document Expiration: 25 September, 1997 [Page 15]
  873. Internet-Draft                                          March 25 , 1997
  874.  
  875.    This function enables a caller to enquire the current value of the 
  876.    acceptor controls in the specified credentials or context. 
  877.    This function can be used by context initiators and context 
  878.    acceptors to query acceptor controls in credentials or security 
  879.    contexts. 
  880.     
  881.    Parameters for GSS_Get_sec_controls: 
  882.     
  883.    cred_handle 
  884.     
  885.    Handle to credentials. It refers to an authenticated principal. 
  886.    Supply NULL to use default credentials, or a context handle. 
  887.     
  888.    context_handle 
  889.     
  890.    GSS-API security context handle, context_handle refers to a security 
  891.    context that is part of an established association. Context_handle 
  892.    is ignored if a non-NULL cred_handle is presented. (Note: it is 
  893.    typically only necessary to use a context_handle parameter rather 
  894.    than cred_handle for the case when a security context is emitted by 
  895.    gss_accept_sec_context, but not with an accompanying set of 
  896.    delegated credentials). 
  897.     
  898.    acceptor_controls 
  899.     
  900.    A set of acceptor controls. Acceptor controls are described in 
  901.    section 6.2. 
  902.     
  903. 7.3.3. GSS_Compound_creds call 
  904.     
  905.    Input : 
  906.     
  907.    - delegated_cred_handle      OCTET STRING 
  908.    - cred_handle                OCTET STRING, 
  909.     
  910.    Output : 
  911.     
  912.    - cred_handle_new            OCTET STRING 
  913.     
  914.    Return major_status code : 
  915.     
  916.      GSS_S_COMPLETE             indicates that the credentials 
  917.                                 were successfully compounded 
  918.    - GSS_S_CREDENTIALS_EXPIRED  indicates that one or more of 
  919.                                 the specified credentials have 
  920.                                 expired. 
  921.    - GSS_S_DEFECTIVE_CREDENTIAL indicates that defective 
  922.                                 credentials have been detected. 
  923.    - GSS_S_FAILURE              indicates a failure, 
  924.                                 unspecified at the GSS-API 
  925.                                 level. 
  926.    - GSS_S_UNAVAILABLE          indicates that the operation is 
  927.                                 not supported. 
  928.  
  929.  
  930. Parker, Pinkas        Document Expiration: 25 September, 1997 [Page 16]
  931. Internet-Draft                                          March 25 , 1997
  932.  
  933.     
  934.    Parameters for gss_compound_cred: 
  935.     
  936.    delegated_cred_handle 
  937.     
  938.    A handle to the credentials being delegated, it refers to one or 
  939.    several authenticated principals. 
  940.     
  941.    cred_handle 
  942.     
  943.    A handle to claimed credentials of the caller, cred_handle refers to 
  944.    an authenticated principal. 
  945.     
  946.    cred_handle_new 
  947.     
  948.    A handle to the compounded set of credentials. 
  949.     
  950. 8. C-LANGUAGE BINDINGS 
  951.     
  952.    This section specifies C language bindings for the extended GSS-API 
  953.    functions. 
  954.     
  955. 8.1. DATA TYPES AND CALLING CONVENTIONS 
  956.     
  957.    The following data types : 
  958.     
  959.    ·    OM_uint32, 
  960.    ·    gss_buffer_t, 
  961.    ·    gss_OID, 
  962.    ·    gss_OID_set, 
  963.    ·    gss_cred_id_t, 
  964.    ·    gss_ctx_id_t, 
  965.     
  966.    are defined in [RFC-1508], along with the calling conventions. 
  967.     
  968. 8.1.1. SECURITY ATTRIBUTES 
  969.     
  970.    A security attribute (see section 2) has the following data 
  971.    structure: 
  972.     
  973.    typedef struct gss_sec_attr_desc  { 
  974.           gss_OID              attribute_type; 
  975.           gss_buffer_t         defining_authority; 
  976.                                /* specify GSS_C_NO_BUFFER when 
  977.                                non present */ 
  978.           gss_buffer_t         security_value; 
  979.           } gss_sec_attr; 
  980.     
  981. 8.1.2. SECURITY ATTRIBUTE SETS 
  982.     
  983.    A set of security attributes has the following structure: 
  984.     
  985.  
  986.  
  987.  
  988. Parker, Pinkas        Document Expiration: 25 September, 1997 [Page 17]
  989. Internet-Draft                                          March 25 , 1997
  990.  
  991.    typedef struct gss_sec_attr_set_desc  { 
  992.           OM_uint32               attribute_count; 
  993.           gss_sec_attr*           attributes; 
  994.           } gss_sec_attr_set; 
  995.     
  996.    The attribute_count field contains the number of security attributes 
  997.    in the set. 
  998.     
  999. 8.1.3. CREDENTIALS LIST 
  1000.     
  1001.    A list of credentials has the following structure: 
  1002.     
  1003.    typedef struct  { 
  1004.           OM_uint3                cred_count; 
  1005.           gss_cred_id_t*          cred_list; 
  1006.           } gss_cred_list; 
  1007.     
  1008.    The cred_count field contains the number of credentials in the list. 
  1009.     
  1010. 8.1.4. ACCEPTOR CONTROL 
  1011.     
  1012.    Acceptor control has the following structure: 
  1013.     
  1014.    typedef struct gss_acceptor_control_desc  { 
  1015.           gss_sec_attr      target_only; 
  1016.                             /* specify GSS_C_NULL_SEC_ATTR when 
  1017.                             non present */ 
  1018.           gss_sec_attr      delegate_only; 
  1019.                             /* specify GSS_C_NULL_SEC_ATTR when 
  1020.                             non present */ 
  1021.           gss_sec_attr      delegate_target; 
  1022.                             /* specify GSS_C_NULL_SEC_ATTR when 
  1023.                             non present */ 
  1024.           OM_uint32         delegation_mode; 
  1025.                             /* specify NULL when non present */ 
  1026.           } gss_acceptor_control; 
  1027.     
  1028. 8.1.5. ACCEPTOR CONTROL SET 
  1029.     
  1030.    A set of Acceptor Control has the following structure : 
  1031.     
  1032.    typedef struct gss_control_set_desc  { 
  1033.           OM_uint32               control_count; 
  1034.           gss_acceptor_control*   acceptor_controls; 
  1035.           } gss_control_set; 
  1036.     
  1037.    The control_count field contains the number of acceptor controls in 
  1038.    the set. 
  1039.     
  1040. 8.1.6. IDENTIFIER 
  1041.     
  1042.    Identifiers have the following data structure: 
  1043.     
  1044.  
  1045.  
  1046. Parker, Pinkas        Document Expiration: 25 September, 1997 [Page 18]
  1047. Internet-Draft                                          March 25 , 1997
  1048.  
  1049.    typedef struct  { 
  1050.           gss_type_en             id_type 
  1051.           gss_value               id_value; 
  1052.           } gss_id; 
  1053.     
  1054.    Where id_type identifies the syntax within the Identifier type: 
  1055.    typedef enum  { 
  1056.           gss_oid_t,              /* for OID */ 
  1057.           gss_integer,            /* for Integer */ 
  1058.           gss_string,             /* for character string */ 
  1059.           gss_uuid,               /* for DCE UUID */ 
  1060.           gss_buffer_t;           /* for gss_buffer */ 
  1061.           } gss_type_en; 
  1062.     
  1063.    And where id_value is the actual value of the data of type 
  1064.    Identifier: 
  1065.     
  1066.    struct union  { 
  1067.           gss_OID                 OID; 
  1068.           OM_uint32*              integer; 
  1069.           char*                   string; 
  1070.           uuid_t*                 uuid; 
  1071.           gss_buffer_t            buffer; 
  1072.           } gss_value; 
  1073.     
  1074.    This C type is applicable for the following types of attribute: 
  1075.    access identity, primary group, capability, audit identity, issuer 
  1076.    domain name, and role name. 
  1077.     
  1078.    When one of these attributes is handled in a call, the 
  1079.    security_value field of the gss_sec_attr structure for this 
  1080.    attribute contains a pointer to the gss_id structure. 
  1081.     
  1082. 8.1.7. IDENTIFIER SET 
  1083.     
  1084.    Identifier sets have the following data structure: 
  1085.     
  1086.    typedef struct gss_id_set_desc  { 
  1087.           OM_uint32               id_count; 
  1088.           gss_id*                 ids; 
  1089.           } gss_id_set; 
  1090.     
  1091.    The id_count field contains the number of Identifiers in the set. 
  1092.     
  1093.    This C type is applicable for the following types of attribute: 
  1094.    group, role, optional restrictions, mandatory restrictions, acceptor 
  1095.    name and application trust group. 
  1096.     
  1097.    When one of these attributes is handled in a call, the 
  1098.    security_value field of the gss_sec_attr structure for this 
  1099.    attribute contains a pointer to the gss_id_set structure. 
  1100.     
  1101.  
  1102.  
  1103.  
  1104. Parker, Pinkas        Document Expiration: 25 September, 1997 [Page 19]
  1105. Internet-Draft                                          March 25 , 1997
  1106.  
  1107. 8.1.8. TIME PERIOD 
  1108.     
  1109.    A time period has the following structure: 
  1110.     
  1111.    typedef struct gss_time_period_desc  { 
  1112.         time_t           start_time; 
  1113.                          /* NULL for unconstrained start time */ 
  1114.         time_t           end_time; 
  1115.                          /* NULL for unconstrained end time */ 
  1116.         } gss_time_period; 
  1117.     
  1118. 8.1.9. TIME PERIODS LIST 
  1119.     
  1120.    Time period lists have the following data structure: 
  1121.     
  1122.    typedef struct gss_period_list _desc  { 
  1123.         OM_uint32                 period_count; 
  1124.         gss_time_period*          periods; 
  1125.         } gss_period_list; 
  1126.     
  1127.    The period_count field contains the number of time periods in the 
  1128.    list. 
  1129.     
  1130.    This C type is applicable for the miscellaneous attribute: time 
  1131.    period. 
  1132.     
  1133.    When a list of time periods is returned by a GSS_Get_sec_attributes 
  1134.    call, or set by a GSS_Set_cred_attributes call, the security_value 
  1135.    field of the gss_sec_attr structure in gss_sec_attr_set contains a 
  1136.    pointer to the gss_period_list_structure. 
  1137.     
  1138. 8.2. XGSS-API ROUTINE DESCRIPTIONS 
  1139.     
  1140. 8.2.1. gss_set_cred_attributes 
  1141.     
  1142.    /* set attributes values in credentials */ 
  1143.    OM_uint32 gss_set_cred _attributes ( 
  1144.           gss_cred_id_t           cred_handle,                /* IN */ 
  1145.           gss_sec_attr_set        required_attributes,        /* IN */ 
  1146.           OM_uint32               new_cred_req,               /* IN */ 
  1147.           OM_uint32               commit_cred_req,            /* IN */ 
  1148.           OM_uint32*              minor_status,               /* OUT*/ 
  1149.           gss_cred_id_t*          output_cred_handle);        /* OUT*/ 
  1150.     
  1151. 8.2.2. gss_get_sec_attributes 
  1152.     
  1153.    /* get attributes associated with credentials or security context */ 
  1154.    OM_uint32 gss_get_sec_attributes ( 
  1155.           gss_cred_id_t           cred_handle,                /* IN */ 
  1156.           gss_ctx_id_t            context_handle,             /* IN */ 
  1157.           gss_OID_set             attribute_types_required,   /* IN */ 
  1158.           OM_uint32*              minor_status,               /* OUT*/ 
  1159.           gss_sec_attr_set**      priv_attributes,            /* OUT*/ 
  1160.  
  1161.  
  1162. Parker, Pinkas        Document Expiration: 25 September, 1997 [Page 20]
  1163. Internet-Draft                                          March 25 , 1997
  1164.  
  1165.           gss_sec_attr_set**      misc_attributes);           /* OUT*/ 
  1166.           OM_uint32               other_cred_present          /* OUT*/ 
  1167.     
  1168. 8.2.3. gss_get_received_creds 
  1169.     
  1170.    /* get received credentials associated with a security context */ 
  1171.    OM_uint32 gss_get_received_creds ( 
  1172.           gss_ctx_id_t            context_handle,             /* IN */ 
  1173.           OM_uint32*              minor_status,               /* OUT*/ 
  1174.           gss_cred_list**         received_creds);            /* OUT*/ 
  1175.     
  1176. 8.2.4. gss_set_cred_controls 
  1177.     
  1178.    /* Set acceptor controls in credentials for context establishment 
  1179.    */ 
  1180.    OM_uint32 gss_set_cred_controls ( 
  1181.           gss_cred_id_t           cred_handle,                /* IN */ 
  1182.           gss_ control_set        required_control,           /* IN */ 
  1183.           OM_uint32               replace_old_controls,       /* IN */ 
  1184.           OM_uint32               new_cred_req,               /* IN */ 
  1185.           OM_uint32               commit_cred_req,            /* IN */ 
  1186.           OM_uint32*              minor_status,               /* OUT*/ 
  1187.           gss_cred_id_t*          output_cred_handle);        /* OUT*/ 
  1188.     
  1189. 8.2.5. gss_get_sec_controls 
  1190.     
  1191.    /* set context acceptor controls on credentials */ 
  1192.    OM_uint32 gss_get_sec_controls ( 
  1193.           gss_cred_id_t           cred_handle,                /* IN */ 
  1194.           gss_ctx_id_t            context_handle,             /* IN */ 
  1195.           OM_uint32*              minor_status,               /* OUT*/ 
  1196.           gss_control_set*        acceptor_controls);         /* OUT*/ 
  1197.     
  1198. 8.2.6. gss_compound_cred 
  1199.     
  1200.    /* compound credentials for delegation */ 
  1201.    OM_uint32 gss_compound_cred ( 
  1202.           gss_cred_id_t           delegated_cred_handle,      /* IN */ 
  1203.           gss_cred_id_t           cred_handle,                /* IN */ 
  1204.           OM_uint32*              minor_status,               /* OUT*/ 
  1205.           gss_cred_id_t           cred_handle_new);           /* OUT*/ 
  1206.     
  1207. 9. ACKNOWLEDGEMENTS 
  1208.     
  1209.    Acknowledgements are due to the following people : Eric Baize, 
  1210.    Belinda Fairthorne, Stephen Farell, Jacques Lebastard and Tom Parker 
  1211.    for providing material for the construction of this document and/or 
  1212.    providing useful inputs. 
  1213.     
  1214. 10. SECURITY CONSIDERATIONS 
  1215.     
  1216.    Security issues are discussed throughout this memo. 
  1217.     
  1218.  
  1219.  
  1220. Parker, Pinkas        Document Expiration: 25 September, 1997 [Page 21]
  1221. Internet-Draft                                          March 25 , 1997
  1222.  
  1223. 11. REFERENCES 
  1224.     
  1225.    [RFC 1508] Generic Security Service API, J Linn, 
  1226.               September 1993 
  1227.     
  1228.    [RFC 1509] Generic Security Service API : C-bindings, J Wray, 
  1229.               September 1993 
  1230.     
  1231. 12. AUTHORS'S ADDRESSES 
  1232.  
  1233.    Tom Parker         Internet email: t.a.parker@win0199.wins.icl.co.uk 
  1234.    ICL Enterprises                           Telephone: +44.1344.472169 
  1235.    59 Old Road,                               Fax     : +44.1249.822703 
  1236.    Derry Hill, 
  1237.    Calne, 
  1238.    Wiltshire  SN11 9NF, 
  1239.    United Kingdom 
  1240.  
  1241.    Denis Pinkas                 Internet email: D.Pinkas@frcl.bull.fr 
  1242.    Bull                                  Telephone: +33 1 30 80 34 87 
  1243.    Rue Jean-Jaures                             Fax: +33 1 30 80 33 21 
  1244.    BP 68 
  1245.    78340 Les Clayes-sous-Bois 
  1246.    FRANCE 
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272.  
  1273.  
  1274.  
  1275.  
  1276.  
  1277.  
  1278. Parker, Pinkas        Document Expiration: 25 September, 1997 [Page 22]
  1279. Internet-Draft                                          March 25 , 1997
  1280.  
  1281. 13. CONTENT LIST 
  1282. 1. STATUS OF THIS MEMO                                           1 
  1283. 2. ABSTRACT                                                      1 
  1284. 3. SECURITY ATTRIBUTES                                           2 
  1285.      3.1. PRINCIPAL ATTRIBUTES                                   2 
  1286.            3.1.1. PRIVILEGES ATTRIBUTES                          2 
  1287.            3.1.2. MISCELLANEOUS ATTRIBUTES                       3 
  1288.      3.2. QUALIFIER ATTRIBUTES                                   3 
  1289.      3.3. ATTRIBUTES DEFINITIONS                                 3 
  1290.            3.3.1. Privilege attributes                           3 
  1291.               3.3.1.1. Role attribute                            3 
  1292.               3.4.1.2. Access identity                           3 
  1293.               3.4.1.3. Primary group                             3 
  1294.               3.4.1.4. Group                                     4 
  1295.               3.4.1.5. Capability                                4 
  1296.            3.3.2. Miscellaneous attributes                       4 
  1297.               3.4.2.1. Audit identity                            4 
  1298.               3.4.2.2. Issuer domain name                        4 
  1299.               3.4.2.3. Validity periods                          5 
  1300.               3.4.2.4. Optional restrictions                     5 
  1301.               3.4.2.5. Mandatory restrictions                    5 
  1302.            3.3.3. QUALIFIER ATTRIBUTES                           5 
  1303.               3.4.3.1. Acceptor name                             5 
  1304.               3.4.3.2. Application trust group                   6 
  1305. 4. ATTRIBUTE SET REFERENCE                                       6 
  1306.      4.1. ROLE NAME                                              6 
  1307. 6. INTERFACE DESCRIPTIONS                                        6 
  1308.      6.1. ATTRIBUTE HANDLING SUPPORT FUNCTIONS                   6 
  1309.            6.1.1. GSS_Set_cred_attributes                        6 
  1310.            6.1.2. GSS_Get_sec_attributes                         6 
  1311.      6.2. CONTEXT ACCEPTOR SUPPORT FUNCTION                      7 
  1312.            6.2.1. GSS_Get_received_creds                         7 
  1313.      6.3. CONTEXT ACCEPTOR CONTROL FUNCTIONS                     7 
  1314.            6.3.1. GSS_Set_cred_controls function                 7 
  1315.            6.3.2. GSS_Get_sec_controls function                  8 
  1316.            6.3.3. GSS_Compound_creds function                    8 
  1317. 7. DETAILED DESCRIPTION OF THE CALLS                             8 
  1318.      7.1. Attribute handling calls                               8 
  1319.            7.1.1. GSS_Set_cred_attributes call                   8 
  1320.            7.1.2. GSS_Get_sec_attributes call                   10 
  1321.      7.2. CONTEXT ACCEPTOR SUPPORT FUNCTION                     11 
  1322.            7.2.1. GSS_Get_received_creds call                   12 
  1323.      7.3. ACEPTOR CONTROL handling calls                        13 
  1324.            7.3.1. GSS_Set_cred_controls call                    14 
  1325.            7.3.2. GSS_Get_sec_controls call                     15 
  1326.            7.3.3. GSS_Compound_creds call                       16 
  1327. 8. C-LANGUAGE BINDINGS                                          17 
  1328.      8.1. DATA TYPES AND CALLING CONVENTIONS                    17 
  1329.            8.1.1. Security attributes                           17 
  1330.            8.1.2. Security attribute sets                       17 
  1331.            8.1.3. Credentials list                              18 
  1332.            8.1.4. Acceptor control                              18 
  1333.            8.1.5. Acceptor control set                          18 
  1334.  
  1335.  
  1336. Parker, Pinkas        Document Expiration: 25 September, 1997 [Page 23]
  1337. Internet-Draft                                          March 25 , 1997
  1338.  
  1339.            8.1.6. Identifier                                    18 
  1340.            8.1.7. Identifier set                                19 
  1341.            8.1.8. Time period                                   20 
  1342.            8.1.9. Time periods list                             20 
  1343.      8.2. XGSS-API ROUTINE DESCRIPTIONS                         20 
  1344.            8.2.1. gss_set_cred_attributes                       20 
  1345.            8.2.2. gss_get_sec_attributes                        20 
  1346.            8.2.3. gss_get_received_creds                        21 
  1347.            8.2.4. gss_set_cred_controls                         21 
  1348.            8.2.5. gss_get_sec_controls                          21 
  1349.            8.2.6. gss_compound_cred                             21 
  1350. 9. ACKNOWLEDGEMENTS                                             21 
  1351. 10. SECURITY CONSIDERATIONS                                     21 
  1352. 11. REFERENCES                                                  22 
  1353. 12. AUTHORS'S ADDRESSES                                         22 
  1354. 13. CONTENT LIST                                                23 
  1355.     
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394. Parker, Pinkas        Document Expiration: 25 September, 1997 [Page 24]
  1395.