VMS Help
DCE_SECURITY, API Intro

 *Conan The Librarian (sorry for the slow response - running on an old VAX)

 NAME

   sec_intro - Application Program Interface to the DCE Security Service

 DESCRIPTION

   The Distributed Computing Environment (DCE) Security Service Application
   Program Interface (API) allows developers to create network services with
   complete access to all the authentication and authorization capabilities
   of DCE Security Service and facilities.

   The transaction of a network service generally consists of a client
   process requesting some action from a server process. The client may
   itself be a server, or a user, and the server may also be a client of
   other servers.  Before the targeted server executes the specified action,
   it must be sure of the client's identity, and it must know whether the
   client is authorized to request the service.

   The Security Service API consists of the following sets of Remote
   Procedure Calls (RPCs) used to communicate with various security-
   related services and facilities:

     +  rgy - Maintains the network registry of principal identities.

     +  era - Maintains extended registry attributes.

     +  login - Validates a principal's network identity and establish
                delegated identities.

     +  epa - Extracts privilege attributes from an opaque binding handle.

     +  acl - Implements an Access Control List (ACL) protocol for the
              authorization of a principal to network access and services.

     +  key - Provides facilities for the maintenance of account keys for
              daemon principals.

     +  id - Maps file system names to Universal Unique IDs (UUIDs).

     +  pwd_mgmt - Provides facilities for password management.

   All the calls in this API have names beginning with the sec_ prefix.
   These are the same calls used by various user-level tools provided as
   part of the DCE. For example, the sec_create_db tool is written with
   sec_rgy calls, acl_edit is written with sec_acl calls, and the login
   program, with which a user logs in to a DCE system, is written using
   sec_login calls.  Most sites will find the user-level tools adequate
   for their needs, and only must use the Security Service API to
   customize or replace the functionality of these tools.

   Though most of the calls in the Security Service API represent RPC
   transactions, code has been provided on the client side to handle much
   of the overhead involved with making remote calls. These "stubs" handle
   binding to the requested security server site, the marshalling of data
   into whatever form is needed for transmission, and other bookkeeping
   involved with these remote calls. An application programmer can use
   the Security Service interfaces as if they were composed of simple C
   functions.

   This reference page introduces each of the following APIs:

     +  Registry APIs

     +  Login APIs

     +  Extended Privilege Attributes APIs

     +  Extended Registry Attributes APIs

     +  ACL APIs

     +  Key Management APIs

     +  ID Mapping APIs

     +  Password Management APIs

   The section for each API is organized as follows:

     +  Synopsis

     +  Data Types

     +  Constants

     +  Files

  1 - REGISTRY_API_DATA_TYPES

 SYNOPSIS

   #include <dce/rgybase.h>

 DATA TYPES

   The following data types are used in sec_rgy_ calls:

   sec_rgy_handle_t
       A pointer to the registry server handle.  The registry server is
       bound to a handle with the sec_rgy_site_open() routine.

   sec_rgy_bind_auth_info_type_t
       A enumeration that defines whether or not the binding is
       authenticated.  This data type is used in conjunction with the
       sec_rgy_bind_auth_info_t data type to set up the authorization
       method and parameters for a binding.  The
       sec_rgy_bind_auth_info_type_t type consists of the following
       elements:

         +  sec_rgy_bind_auth_none-The binding is not authenticated.

         +  sec_rgy_bind_auth_dce-The binding uses DCE shared-secret
            key authentication.

   sec_rgy_bind_auth_info_t
       A discriminated union that defines authorization and authentication
       parameters for a binding.  This data type is used in conjunction
       with the sec_rgy_bind_auth_info_type_t data type to set up the
       authorization method and parameters for a binding.  The
       sec_rgy_bind_auth_info_t data type consists of the following
       elements:

       info_type A sec_rgy_bind_auth_info_type_t data type that specifies
                 whether or not the binding is authenticated. The contents
                 of the union depend on the value of
                 sec_rgy_bind_auth_info_type_t.

                 For unauthenticated bindings
                 (sec_rgy_bind_auth_info_type_t = sec_rgy_bind_auth_none),
                 no parameters are supplied.

                 For authenticated bindings
                 (sec_rgy_bind_auth_info_type_t = sec_rgy_bind_auth_dce),
                 the dce_info structure is supplied.

       dce_info  A structure that consists of the following elements:

                 authn_level
                           An unsigned 32 bit integer indicating the
                           protection level for RPC calls made using the
                           server binding handle.  The protection level
                           determines the degree to which authenticated
                           communications between the client and the
                           server are protected by the authentication
                           service specified by authn_svc.  If the RPC
                           runtime or the RPC protocol in the bound
                           protocol sequence does not support a specified
                           level, the level is automatically upgraded to
                           the next higher supported level.  The possible
                           protection levels are as follows:

                             +  rpc_c_protect_level_default - Uses the
                                default protection level for the specified
                                authentication service.  The default
                                protection level for DCE shared-secret key
                                authentication is
                                rpc_c_protect_level_pkt_value

                             +  rpc_c_protect_level_none - Performs no
                                authentication: tickets are not exchanged,
                                session keys are not established, client
                                PACs or names are not certified, and trans-
                                missions are in the clear.  Note that
                                although uncertified PACs should not be
                                trusted, they may be useful for debugging,
                                tracing, and measurement purposes.

                             +  rpc_c_protect_level_connect - Authenticates
                                only when the client establishes a rela-
                                tionship with the server.

                             +  rpc_c_protect_level_call - Authenticates
                                only at the beginning of each remote
                                procedure call when the server receives
                                the request.  This level does not apply
                                to remote procedure calls made over a
                                connection-based protocol sequence (that
                                is, ncacn_ip_tcp).  If this level is
                                specified and the binding handle uses a
                                connection-based protocol sequence, the
                                routine uses the rpc_c_protect_level_pkt
                                level instead.

                             +  rpc_c_protect_level_pkt - Ensures that
                                all data received is from the expected
                                client.

                             +  rpc_c_protect_level_pkt_integ - Ensures
                                and verifies that none of the data trans-
                                ferred between client and server has been
                                modified.  This is the highest protection
                                level that is guaranteed to be present in
                                the RPC runtime.

                             +  rpc_c_protect_level_pkt_privacy -
                                Authenticates as specified by all of the
                                previous levels and also encrypts each
                                RPC argument value.  This is the highest
                                protection level, but is not guaranteed
                                to be present in the RPC runtime.

                 authn_svc Specifies the authentication service to use.
                           The exact level of protection provided by the
                           authentication service is specified by
                           protect_level.  The supported authentication
                           services are as follows:

                             +  rpc_c_authn_none - No authentication:
                                no tickets are exchanged, no session keys
                                established, client PACs or names are not
                                transmitted, and transmissions are in the
                                clear.  Specify rpc_c_authn_none to turn
                                authentication off for remote procedure
                                calls made using this binding.

                             +  rpc_c_authn_dce_secret - DCE shared-secret
                                key authentication.

                             +  rpc_c_authn_default - Default authentica-
                                tion service.  The current default authen-
                                tication service is DCE shared-secret key;
                                therefore, specifying rpc_c_authn_default
                                is equivalent to specifying
                                rpc_c_authn_dce_secret .

                             +  rpc_c_authn_dce_public - DCE public key
                                authentication (reserved for future use).

                 authz_svc Specifies the authorization service implemented
                           by the server for the interface.  The validity
                           and trustworthiness of authorization data, like
                           any application data, is dependent on the
                           authentication service and protection level
                           specified.  The supported authorization services
                           are as follows:

                             +  rpc_c_authz_none - Server performs no
                                authorization. This is valid only if
                                authn_svc is set to rpc_c_authn_none,
                                specifying that no authentication is
                                being performed.

                             +  rpc_c_authz_name - Server performs
                                authorization based on the client
                                principal name.  This value cannot be
                                used if authn_svc is rpc_c_authn_none.

                             +  rpc_c_authz_dce - Server performs
                                authorization using the client's DCE
                                Privilege Attribute Certificate (PAC)
                                sent to the server with each remote
                                procedure call made with this binding.
                                Generally, access is checked against DCE
                                Access Control Lists (ACLs).

                 identity  A value of type sec_login_handle_t that
                           represents a complete login context.

   sec_timeval_sec_t
       A 32-bit integer containing the seconds portion of a UNIX timeval_t,
       to be used when expressing absolute dates.

   sec_timeval_t
       A structure containing the full UNIX time.  The structure contains
       two 32-bit integers that indicate seconds (sec) and microseconds
       (usec) since 0:00, January 1, 1970.

   sec_timeval_period_t
       A 32-bit integer expressing seconds relative to some well-known
       time.

   sec_rgy_acct_key_t
       Specifies how many parts (person, group, organization) of an account
       login name will be enough to specify a unique abbreviation for that
       account.

   sec_rgy_cursor_t
       A structure providing a pointer into a registry database.  This type
       is used for iterative operations on the registry information.  For
       example, a call to sec_rgy_pgo_get_members() might return the 10
       account names following the input sec_rgy_cursor_t position.  Upon
       return, the cursor position will have been updated, so the next call
       to that routine will return the next 10 names.  The components of
       this structure are not used by application programs.

   sec_rgy_pname_t
       A character string of length sec_rgy_pname_t_size.

   sec_rgy_name_t
       A character string of length sec_rgy_name_t_size.

   sec_rgy_login_name_t
       A structure representing an account login name.  It contains three
       strings of type sec_rgy_name_t:

       pname     The person name for the account.

       gname     The group name for the account.

       oname     The organization name for the account.

   sec_rgy_member_t
       A character string of length sec_rgy_name_t_size.  LI
       "sec_rgy_foreign_id_t" The representation of a foreign ID.  This
       structure contains two components:

       cell      A string of type uuid_t representing the UUID of the
                 foreign cell.

       principal A string of type uuid_t representing the UUID of the
                 principal.

   sec_rgy_sid_t
       A structure identifying an account.  It contains three fields:

       person    The UUID of the person part of the account.

       group     The UUID of the group part of the account.

       org       The UUID of the organization part of the account.

   sec_rgy_unix_sid_t
       A structure identifying an account with UNIX ID numbers.  It
       contains three fields:

       person    The UNIX ID of the person part of the account.

       group     The UNIX ID of the group part of the account.

       org       The UNIX ID of the organization part of the account.

   sec_rgy_domain_t
       This 32-bit integer specifies which naming domain a character string
       refers to: person, group, or organization.

   sec_rgy_pgo_flags_t
       A 32-bit bitset containing flags pertaining to registry entries.
       This type contains the following three flags:

       sec_rgy_pgo_is_an_alias
                 If set, indicates the registry entry is an alias of
                 another entry.

       sec_rgy_pgo_is_required
                 If set, the registry item is required and cannot be
                 deleted.  An example of a required account is the one
                 for the registry server itself.

       sec_rgy_pgo_projlist_ok
                 If the accompanying item is a person entry, this flag
                 indicates the person may have concurrent group sets.
                 If the item is a group entry, the flag means this group
                 can appear in a concurrent group set.  The flag is
                 undefined for organization items.

   sec_rgy_pgo_item_t
       The structure identifying a registry item.  It contains five com-
       ponents:

       id        The UUID of the registry item, in uuid_t form.

       unix_num  A 32-bit integer containing the UNIX ID number of the
                 registry item.

       quota     A 32-bit integer representing the maximum number of user-
                 defined groups the account owner can create.

       flags     A sec_rgy_pgo_flags_t bitset containing information about
                 the entry.

       fullname  A sec_rgy_pname_t character string containing a full name
                 for the registry entry.  For a person entry, this field
                 might contain the real name of the account owner.  For a
                 group, it might contain a description of the group.  This
                 is just a data field, and registry queries cannot search
                 on the fullname entry.

   sec_rgy_acct_admin_flags_t
       A 32-bit bitset containing administration flags used as part of the
       administrator's information for any registry account.  The set
       contains three flags:

       sec_rgy_acct_admin_valid
                 Specifies that the account is valid for login.

       sec_rgy_acct_admin_server
                 If set, the account's name can be used as a server name in
                 a ticket-granting ticket.

       sec_rgy_acct_admin_client
                 If set, the account's name can be used as a client name in
                 a ticket-granting ticket.

   Note that you can prevent the principal from being authenticated, by
   turning off both the sec_rgy_acct_admin_server and the
   sec_rgy_acct_admin_client flags.

   sec_rgy_acct_auth_flags_t
       A 32-bit bitset containing account authorization flags used to
       implement authentication policy as defined by the Kerberos Version
       5 protocol.  The set contains six flags:

       sec_rgy_acct_auth_post_dated
                 Allows issuance of post-dated certificates.

       sec_rgy_acct_auth_forwardable
                 Allows issuance of forwardable certificates.

       sec_rgy_acct_auth_tgt
                 Allows issuance of certificates based on Ticket-Granting
                 Ticket (TGT) authentication. If this flag is not set, a
                 client requesting a service may have to supply a password
                 directly to the server.

       sec_rgy_acct_auth_renewable
                 Allows issuance of renewable certificates.

       sec_rgy_acct_auth_proxiable
                 Allows issuance of proxiable certificates.

       sec_rgy_acct_auth_dup_session_key
                 Allows issuance of duplicate session keys.

   sec_rgy_acct_admin_t
       The portion of a registry account item containing components
       relevant to administrators.  This structure consists of the fields
       listed below.  Note that only expiration_date, good_since_date,
       flags, and authentication_flags can be modified by an administrator;
       the remaining fields are set by the Security server.

       creator   This field, in foreign_id_t format, identifies the
                 administrator who created the registry account.

       creation_date
                 Specifies the creation date of the account, in
                 sec_timeval_sec_t format.

       last_changer
                 Identifies the last person to change any of the account
                 information, in foreign_id_t format.

       change_date
                 Specifies the date of the last modification of the account
                 information, in sec_timeval_sec_t format.

       expiration_date
                 The date after which the account will no longer be valid.
                 In sec_timeval_sec_t format.

       good_since_date
                 The Kerberos Version 5 TGT revocation date.  TGTs issued
                 before this date will not be honored.  In
                 sec_timeval_sec_t format.

       flags     Administrative flags in sec_rgy_acct_admin_flags_t format.

       authentication_flags
                 Authentication flags in sec_rgy_acct_auth_flags_t format.

   sec_rgy_acct_user_flags_t
       A 32-bit bitset containing flags controlling user-modifiable
       information.  There is only one flag currently implemented.  If
       sec_rgy_acct_user_passwd_valid is set, it indicates the user pass-
       word is valid.  If it is not set, this flag prompts the user to
       change the password on the next login attempt.

   sec_rgy_acct_user_t
       A structure containing registry account information. The structure
       consists of the fields listed below.  Note that only the gecos,
       homedir, shell, and flags fields can be modified by the account
       owner or other authorized useer; the remaining fields are set by
       the Security server.

       gecos     This is a character string (in sec_rgy_pname_t format)
                 containing information about the account user.  It
                 generally consists of everything after the full name in
                 the UNIX gecos format.

       homedir   The login directory for the account user, in
                 sec_rgy_pname_t format.

       shell     The default shell for the account user, in sec_rgy_pname_t
                 format.

       passwd_version_number
                 An unsigned 32-bit integer, indicating the password
                 version number. This value is used as output only.

       passwd    The UNIX encrypted account password, in
                 sec_rgy_unix_passwd_buf_t format. This value is used as
                 output only.

       passwd_dtm
                 The date the password was established, in
                 sec_timeval_sec_t format.

       flags     Account user flags, in sec_rgy_acct_user_flags_t format.

   sec_rgy_plcy_pwd_flags_t
       A 32-bit bitset containing two flags about password policy:

       sec_rgy_plcy_pwd_no_spaces
                 If set, will not allow spaces in a password.

       sec_rgy_plcy_pwd_non_alpha
                 If set, requires at least one nonalphanumeric character in
                 the password.

   sec_rgy_plcy_t
       A structure defining aspects of registry account policy.  It
       contains five components:

       passwd_min_len
                 A 32-bit integer describing the minimum number of
                 characters in the account password.

       passwd_lifetime
                 The number of seconds after a password's creation until it
                 expires, in sec_timeval_period_t format.

       passwd_exp_date
                 The expiration date of the account password, in
                 sec_timeval_sec_t format.

       acct_lifespan
                 The number of seconds after the creation of an account
                 before it expires, in sec_timeval_period_t format.

       passwd_flags
                 Account password policy flags, in sec_rgy_plcy_pwd_flags_t
                 format.

   sec_rgy_plcy_auth_t
       This type describes authentication policy.  It is a structure
       containing two time periods, in sec_timeval_period_t format.
       One, max_ticket_lifetime, specifies the maximum length of the
       period during which a Ticket-Granting Ticket (TGT) will be valid.
       The other, max_renewable_lifetime, specifies the maximum length of
       time for which such a ticket may be renewed.  This authentication
       policy applies both to the registry as a whole as well as
       individual accounts.  The effective policy for a given account is
       defined to bethe more restrictive of the site and principal authen-
       tication policy.

   sec_rgy_properties_t
       A structure describing some registry properties.  It contains the
       following:

       read_version
                 A 32-bit integer describing the earliest version of the
                 secd software that can read this registry.

       write_version
                 A 32-bit integer describing the version of the secd soft-
                 ware that wrote this registry.

       minimum_ticket_lifetime
                 The minimum lifetime of an authentication certificate, in
                 sec_timeval_period_t format.

       default_certificate_lifetime
                 The "normal" lifetime of an an authentication certificate
                 (ticket-granting ticket in Kerberos parlance), in
                 sec_timeval_period_t format.  Processes may request
                 authentication certificates with longer lifetimes up to,
                 but not in excess of, the maximum allowable lifetime as
                 determined by the effective policy for the account.

       low_unix_id_person
                 The lowest UNIX number permissible for a person item in
                 the registry.

       low_unix_id_group
                 The lowest UNIX number permissible for a group item in
                 the registry.

       low_unix_id_org
                 The lowest UNIX number permissible for an organization
                 item in the registry.

       max_unix_id
                 The largest UNIX number permissible for any registry
                 entry.

       flags     Property flags, in sec_rgy_properties_flags_t format.

       realm     The name of the cell, in sec_rgy_name_t form, for which
                 this registry is the authentication service.

       realm_uuid
                 The UUID of the same cell.

   sec_rgy_properties_flags_t
       A 32-bit bitset, containing flags concerning registry properties:

       sec_rgy_prop_readonly
                 If set (TRUE), indicates that this registry is a query
                 site.

       sec_rgy_prop_auth_cert_unbound
                 If set (TRUE), the registry server will accept requests
                 from any site.

       sec_rgy_prop_shadow_passwd
                 If the shadow password flag is set (TRUE), the registry
                 server will not include the account password when
                 responding to a request for the user data from a
                 specified account. This helps minimize the risk of an
                 account password being intercepted while traveling over
                 the network.

       sec_rgy_prop_embedded_unix_id
                 Indicates that all UUIDs in this registry contain a UNIX
                 number embedded.  This implies that the UNIX numbers of
                 objects in the registry cannot be changed, since UUIDs are
                 immutable.

   sec_rgy_override_t
       A 32-bit integer used as a flag for registry override mode.
       Currently, its possible values are the constants
       sec_rgy_no_override and sec_rgy_override.  When this mode is
       enabled, override data supplied by the node administrator will
       replace some of the data gotten from the registry for a given
       person/account under certain conditions.  These conditions are
       as follows:

        1.  The registry permits the requested overrides to be set for
            this machine.

        2.  The override data is intended for person/account at hand.

       When the mode is "override off," data from the registry is returned
       to the end user or the application remains untouched.

   sec_rgy_mode_resolve_t
       A 32-bit integer used as a flag for resolve mode.  Currently, its
       possible values are the constants sec_rgy_no_resolve_pname and
       sec_rgy_resolve_pname.  When the mode is enabled, pathnames
       containing leading // (slashes) will be translated into a form
       understandable by the local machine's NFS.

   sec_rgy_unix_passwd_buf_t
       A character array of UNIX password strings.

 CONSTANTS

   The following constants are used in sec_rgy_ calls:

   sec_rgy_default_handle
       The value of an unbound registry server handle.

   sec_rgy_acct_key_t Constants
       The following 32-bit integer constants are used with the
       sec_rgy_acct_key_t data type:

       sec_rgy_acct_key_none
       Invalid key.

       sec_rgy_acct_key_person
       The person name alone is enough.

       sec_rgy_acct_key_group
       The person and group names are both necessary for the account
       abbreviation.

       sec_rgy_acct_key_org
       The person, group, and organization names are all necessary.

       sec_rgy_acct_key_last
       Key values must be less than this constant.

   sec_rgy_pname_t_size
       The maximum number of characters in a sec_rgy_pname_t.

   sec_rgy_name_t_size
       The maximum number of characters in a sec_rgy_name_t.

   sec_rgy_domain_t Constants
       The following 32-bit integer constants are the possible values of
       the sec_rgy_domain_t data type:

       sec_rgy_domain_person
                 The name in question refers to a person.

       sec_rgy_domain_group
                 The name in question refers to a group.

       sec_rgy_domain_org
                 The name in question refers to an organization.

    sec_rgy_pgo_flags_t
       A 32-bit constant equal to a variable of type sec_rgy_pgo_flags_t
       with no flags set.

   sec_rgy_quota_unlimited
       A 32-bit integer.  Set the quota field of the sec_rgy_pgo_item_t
       type to this constant to override the registry quota limitation.

   sec_rgy_acct_admin_flags_t
       A 32-bit integer.  This is the value of the
       sec_rgy_acct_admin_flags_t bitset when none of its flags are set.

   sec_rgy_acct_auth_flags_none
       A 32-bit integer.  This is the value of the
       sec_rgy_acct_auth_flags_t bitset when none of its flags are set.

   sec_rgy_acct_user_flags_t
       A 16-bit integer.  This is the value of the
       sec_rgy_acct_user_flags_t bitset when none of its flags are set.

   sec_rgy_plcy_pwd_flags_t
       A 16-bit integer.  This is the value of the
       sec_rgy_policy_pwd_flags_t bitset when none of its flags are set.

   sec_rgy_properties_flags_t
       A 16-bit integer.  This is the value of the
       sec_rgy_properties_flags_t bitset when none of its flags are set.

   sec_rgy_override
       A 32-bit integer, which turns registry override mode on.  When this
       mode is enabled, override data supplied by the node administrator
       will replace some of the data gotten from the registry for a given
       person/account under certain conditions.

   sec_rgy_no_override
       A 32-bit integer, which turns off registry override mode.

   sec_rgy_resolve_pname
       A 32-bit integer, which turns on registry resolve mode.  When the
       mode is enabled, pathnames containing leading // (slashes) will be
       translated into a form understandable by the local machine's NFS.

   sec_rgy_no_resolve_pname
       A 32-bit integer, which turns off registry resolve mode.

 FILES

   SYS$COMMON:[DCE$LIBRARY]RGYBASE.IDL
             The idl file from which rgybase.h was derived.

  2 - EXTENDED_REGISTRY_ATTRIBUTE_DATA_TYPES

 SYNOPSIS

   #include <dce/sec_attr_base.h>

   DATA TYPES

   The following data types are used in sec_rgy_attr calls:

   sec_attr_twr_ref_t
       A pointer to a tower.  This data type is used with the
       sec_attr_twr_set_t data type to allow a client to pass an
       unallocated array of towers, which the server must allocate.
       Both data types are used in conjunction with the
       sec_attr_bind_type_t data type.

   sec_attr_twr_set_t
       A structure that defines an array of towers. This data type is used
       with the sec_attr_twr_ref_t data type to allow a client to pass an
       unallocated array of towers, which the server must allocate.  Both
       data types are used in conjunction with the sec_attr_bind_type_t
       data type.  The sec_attr_twr_set_t structure consists of the
       following elements:

       count     An unsigned 32-bit integer specifying the number of towers
                 in the array.

       towers[]  An array of pointers (of type sec_attr_twr_ref_t) to
                 towers.

   sec_attr_bind_type_t
       A 32-bit integer that specifies the type of binding used by an
       attribute interface.  The data type (which is used in conjunction
       with the sec_attr_binding_t data type) uses the following constants:

       sec_attr_bind_type_string
                 An RPC string binding.

       sec_attr_bind_type_twrs
                 A DCE protocol tower representation of a bindings.

       sec_attr_bind_type_svrname
                 A name in rpc_c_ns_syntax format that identifies a CDS
                 entry containing the server's binding information. This
                 constant has the following structure:

                 name_syntax
                           Must be rpc_c_ns_syntax_dce to specify that DCE
                           naming rules are used to specify name.

                 name      A pointer to a name of a CDS entry in
                           rpc_c_ns_syntax_dce syntax.

   sec_attr_binding_t
       A discriminated union that supplies information to generate a
       binding handle for a attribute trigger.  This data type, which is
       used in conjunction with the sec_attr_bind_info_t data type, is
       composed of the following elements:

       bind_type A value of type sec_attr_bind_type_t that defines the type
                 of binding used by an attribute interface. The contents of
                 tagged union (below) depend on the value of
                 sec_attr_bind_type_t.

       tagged_union
                 A tagged union specifying the binding handle.  The
                 contents of the tagged union depend on the value of
                 bind_type as follows:

 If bind_type is...          Then tagged_union is...
 __________________________________________________________________________
 sec_attr_bind_type_string   A pointer to an unsigned 32-bit character
                             string specifying an attribute's RPC string
                             binding.
 __________________________________________________________________________
 sec_attr_bind type_twrs     An attribute's tower binding representation of
                             type sec_attr_twr_set_t.
 __________________________________________________________________________
 sec_attr_bind_svrname       A pointer to a name of type
                             sec_attr_bind_type_t that specifies a Cell
                             Directory Service entry containing an
                             attribute trigger's binding information.

   sec_attr_binding_p_t
       A pointer to a sec_attr_binding_t union.

   sec_attr_bind_auth_info_type_t
       An enumeration that defines whether or not the binding is authenti-
       cated.  This data type is used in conjunction with the
       sec_attr_bind_auth_info_t data type to set up the authorization
       method and parameters for an RPC binding. The
       sec_attr_bind_auth_info_type_t type consists of the following
       elements:

         +  sec_attr_bind_auth_none-The binding is not authenticated.

         +  sec_attr_bind_auth_dce-The binding uses DCE shared-secret
            key authentication.

   sec_attr_bind_auth_info_t
       A discriminated union that defines authorization and authentication
       parameters for a binding. This data type is used in conjunction with
       the sec_attr_bind_auth_info_type_t data type to set up the
       authorization method and parameters for an RPC binding. The
       sec_attr_bind_auth_info_t data type consists of the following
       elements:

       info_type A sec_attr_bind_auth_info_type_t data type that specifies
                 whether or not the binding is authenticated. The contents
                 of tagged union (below) depend on the value of
                 sec_attr_bind_auth_info_type_t.

       tagged_union
                 A tagged union specifying the method of authorization and
                 the authorization parameters. For unauthenticated bindings
                 (sec_attr_bind_auth_info_type_t = sec_attr_bind_auth_none)
                 no parameters are supplied. For authenticated bindings
                 (sec_attr_bind_auth_info_type_t = sec_attr_bind_auth_dce),
                 the following union is supplied:

                 svr_princ_name
                           A pointer to a character string that specifies
                           the principal name of the server referenced by
                           the binding handle.

                 protect_level
                           An unsigned 32 bit integer indicating the
                           protection level for RPC calls made using the
                           server binding handle.  The protection level
                           determines the degree to which authenticated
                           communications between the client and the
                           server are protected by the authentication
                           service specified by authn_svc.

                           If the RPC runtime or the RPC protocol in the
                           bound protocol sequence does not support a
                           specified level, the level is automatically
                           upgraded to the next higher supported level.
                           The possible protection levels are as follows:

                             +  rpc_c_protect_level_default - Uses the
                                default protection level for the specified
                                authentication service.  The default
                                protection level for DCE shared-secret
                                key authentication is
                                rpc_c_protect_level_pkt_value

                             +  rpc_c_protect_level_none - Performs no
                                authentication: tickets are not exchanged,
                                session keys are not established, client
                                PACs or names are not certified, and
                                transmissions are in the clear.  Note that
                                although uncertified PACs should not be
                                trusted, they may be useful for debugging,
                                tracing, and measurement purposes.

                             +  rpc_c_protect_level_connect - Authenticates
                                only when the client establishes a
                                relationship with the server.

                             +  rpc_c_protect_level_call - Authenticates
                                only at the beginning of each remote
                                procedure call when the server receives
                                the request.  This level does not apply
                                to remote procedure calls made over a
                                connection-based protocol sequence (that
                                is, ncacn_ip_tcp).  If this level is
                                specified and the binding handle uses a
                                connection-based protocol sequence, the
                                routine  uses the rpc_c_protect_level_pkt
                                level instead.

                             +  rpc_c_protect_level_pkt - Ensures that all
                                data received is from the expected client.

                             +  rpc_c_protect_level_pkt_integ - Ensures
                                and verifies that none of the data trans-
                                ferred between client and server has been
                                modified.  This is the highest protection
                                level that is guaranteed to be present in
                                the RPC runtime.

                             +  rpc_c_protect_level_pkt_privacy -
                                Authenticates as specified by all of the
                                previous levels and also encrypts each
                                RPC argument value.  This is the highest
                                protection level, but is not guaranteed
                                to be present in the RPC runtime.

                 authn_svc Specifies the authentication service to use.
                           The exact level of protection provided by the
                           authentication service is specified by
                           protect_level.  The supported authentication
                           services are as follows:

                             +  rpc_c_authn_none - No authentication:
                                no tickets are exchanged, no session keys
                                established, client PACs or names are not
                                transmitted, and transmissions are in the
                                clear.  Specify rpc_c_authn_none to turn
                                authentication off for remote procedure
                                calls made using this binding.

                             +  rpc_c_authn_dce_secret - DCE shared-secret
                                key authentication.

                             +  rpc_c_authn_default - Default authentica-
                                tion service.  The current default authen-
                                tication service is DCE shared-secret key;
                                therefore, specifying rpc_c_authn_default
                                is equivalent to specifying
                                rpc_c_authn_dce_secret.

                             +  rpc_c_authn_dce_public - DCE public key
                                authentication (reserved for future use).

                 authz_svc Specifies the authorization service implemented
                           by the server for the interface.  The validity
                           and trustworthiness of authorization data, like
                           any application data, is dependent on the
                           authentication service and protection level
                           specified.  The supported authorization services
                           are as follows:

                             +  rpc_c_authz_none - Server performs no
                                authorization. This is valid only if
                                authn_svc is set to rpc_c_authn_none,
                                specifying that no authentication is
                                being performed.

                             +  rpc_c_authz_name - Server performs
                                authorization based on the client
                                principal name.  This value cannot be
                                used if authn_svc is rpc_c_authn_none.

                             +  rpc_c_authz_dce - Server performs
                                authorization using the client's DCE
                                Privilege Attribute Certificate (PAC)
                                sent to the server with each remote
                                procedure call made with this binding.
                                Generally, access is checked against DCE
                                Access Control Lists (ACLs).

   sec_attr_bind_info_t
       A structure that specifies attribute trigger binding information.
       This data type, which is used in conjunction with the
       sec_attr_schema_entry_t data type, contains of the following
       elements:

       auth_info The binding authorization information of type
                 sec_attr_bind_auth_info_t.

       num_bindings
                 An unsigned 32-bit integer specifying the number of
                 binding handles in bindings.

       bindings  An array of sec_attr_binding_t data types that specify
                 binding handles.

   sec_attr_bind_info_p_t
       A pointer to a sec_attr_bind_info_t union.

   sec_attr_encoding_t
       An enumerator that contains attribute encoding tags used to define
       the legal encodings for attribute values. The data type, which is
       used in conjunction with the sec_attr_value_t and
       sec_attr_schema_entry_t data types, consists of the following
       elements:

       sec_attr_enc_any
                 The attribute value can be of any legal encoding type.
                 This encoding tag is legal only in a schema entry.  An
                 attribute entry must contain a concrete encoding type.

       sec_attr_enc_void
                 The attribute has no value.  It is simple a marker that is
                 either present or absent.

       sec_attr_enc_printstring
                 The attribute value is a printable IDL string in DCE
                 Portable Character Set.

       sec_attr_enc_printstring_array
                 The attribute value is an array of printstrings.

       sec_attr_enc_integer
                 The attribute value is a signed 32-bit integer.

       sec_attr_enc_bytes
                 The attribute value is a string of bytes.  The string is
                 assumed to be a pickle or some other self describing type.
                 (See also the sec_attr_enc_bytes_t data type.)

       sec_attr_enc_confidential_bytes
                 The attribute value is a string of bytes that have been
                 encrypted in the key of the principal object to which the
                 attribute is attached. The string is assumed to be a
                 pickle or some other self describing type.  This encoding
                 type is useful only when attached to a principal object,
                 where it is decrypted and encrypted each time the
                 principal's password changes.  (See also the
                 sec_attr_enc_bytes_t data type.)

       sec_attr_enc_i18n_data
                 The attribute value is an "internationalized" string of
                 bytes with a tag identifying the OSF registered codeset
                 used to encode the data.  (See also the
                 sec_attr_i18n_data_t data type.)

       sec_attr_enc_uuid
                 The attribute is a value of type uuid_t, a DCE UUID.

       sec_attr_enc_attr_set
                 The attribute value is an attribute set, a vector of
                 attribute UUIDs used to associate multiple related
                 attribute instances which are members of the set.
                 (See also the sec_attr_enc_attr_set_t data type.)

       sec_attr_enc_binding
                 The attribute value is a sec_attr_bind_info_t data type
                 that specifies DCE server binding information.

       sec_attr_enc_trig_binding
                 This encoding type is returned by rs_attr_lookup call. It
                 informs the client agent of the trigger binding informa-
                 tion of an attribute with a query trigger.

   Unless sec_attr_enc_void or sec_attr_enc_any is specified, the attribute
   values must conform to the attribute's encoding type.

   sec_attr_enc_bytes_t
       A structure that defines the length of attribute encoding values for
       attributes encoded as sec_attr_enc_bytes and
       sec_attr_enc_confidential_bytes. The structure, which is used in
       conjunction with the sec_attr_value_t data type, consists of:

                 An unsigned 32-bit integer that defines the data length.

       data[]    An array of bytes specifying the length of attribute
                 encoding data.

   sec_attr_i18n_data_t
       A structure that defines the codeset used for attributes encoded as
       sec_attr_enc_il8n_data and the length of the attribute encoding
       values.  The structure, which is used in conjunction with the
       sec_attr_value_t data type, consists of:

                 An unsigned 32-bit identifier of a codeset registered with
                 the Open Software Foundation.

                 An unsigned 32-bit integer that defines the data length.

       data[]    An array of bytes specifying the length of attribute
                 encoding data.

   sec_attr_enc_attr_set_t
       A structure that that supplies the UUIDs of each member of an
       attribute set. The structure, which is used in conjunction with
       the sec_attr_value_t data type, consists of:

       num_members
                 An unsigned 32-bit integer specifying the total number of
                 attribute's in the set.

       members[] An array containing values of type uuid_t, the UUID of
                 each member in the set.

   sec_attr_enc_printstring_t
       A structure that contains a printstring.

   sec_attr_enc_printstring_p_t
       A pointer to a sec_attr_enc_printstring_t structure.

   sec_attr_enc_str_array_t
       A structure that defines a printstring array.  It consists of:

       num_strings
                 An unsigned 32-bit integer specifying the number of
                 strings in the array.

       strings[] An array of pointers (of type
                 sec_attr_enc_print_string_p_t) to printstrings.

   sec_attr_value_t
       A discriminated union that defines attribute values.  The union,
       which is used in conjunction with the sec_attr_t data type,
       consists of the following elements:

       attr_encoding
                 A sec_attr_encoding_t data type that defines attribute
                 encoding. The contents of tagged union (below) depend
                 on the value of sec_attr_encoding_t.

       tagged_union
                 A tagged union whose contents depend on attr_encoding as
                 follows:

    If attr_encoding is...            Then tagged_union is...
    _______________________________________________________________________
    sec_attr_enc_void                 NULL
    _______________________________________________________________________
    sec_attr_enc_printstring          A pointer to printstring
    _______________________________________________________________________
    sec_attr_enc_printstring_array    A pointer to an array of
                                      printstrings
    _______________________________________________________________________
    sec_attr_enc_integer              signed_int, a 32-bit signed integer
    _______________________________________________________________________
    sec_attr_enc_bytes                bytes, a pointer to a structure of
                                      type sec_attr_enc_bytes_t
    _______________________________________________________________________
    sec_attr_enc_confidential_bytes   bytes, a pointer to a structure of
                                      type sec_attr_enc_bytes_t
    _______________________________________________________________________
    sec_attr_enc_i18n_data            idata, a pointer to a structure of
                                      type sec_attr_i18n_data_t
    _______________________________________________________________________
    sec_attr_end_uuid                 uuid, a value of type uuid_t
    _______________________________________________________________________
    sec_attr_enc_attr_set             attr_set, a pointer to a structure of
                                      type sec_attr_enc_attr_set_t
    _______________________________________________________________________
    sec_attr_enc_binding              binding, a pointer to a structure of
                                      type sec_attr_binding_info_t

   sec_attr_t
       A structure that defines an attribute.  The structure consists of:

       attr_id   A value of type uuid_t, the UUID of the attribute.

       attr_value
                 A value of type sec_attr_value_t.

   sec_attr_acl_mgr_info_t
       A structure that contains the access control information defined in
       a schema entry for an attribute.  The structure, which is used in
       conjunction with the sec_attr_schema_entry_t data type, consists of
       the following elements:

       acl_mgr_type
                 The value of type uuid_t that specifies the UUID of the
                 ACL manager type that supports the object type to which
                 the attribute can be attached.  This field provides a
                 well-defined context for evaluating the permission bits
                 needed to operate on the attribute. The following table
                 lists the ACL Manager types for registry objects.

     Registry Object   ACL Manager Type                       Valid
     Type                                                     Permissions
     ____________________________________________________________________
     principal         06ab9320-0191-11ca-a9e8-08001e039d7d   rcDnfmaug
     ____________________________________________________________________
     group             06ab9640-0191-11ca-a9e8-08001e039d7d   rctDnfmM
     ____________________________________________________________________
     organization      06ab9960-0191-11ca-a9e8-08001e039d7d   rctDnfmM
     ____________________________________________________________________
     directory         06ab9c80-0191-11ca-a9e8-08001e039d7d   rcidDn
     ____________________________________________________________________
     policy            06ab8f10-0191-11ca-a9e8-08001e039d7d   rcma
     ____________________________________________________________________
     replist           2ac24970-60c3-11cb-b261-08001e039d7d   cidmAI

       query_permset
                 Data of type sec_acl_permset_t that defines the permission
                 bits needed to access the attribute's value.

       update_permset
                 Data of type sec_acl_permset_t that defines the permission
                 bits needed to update the attribute's value.

       test_permset
                 Data of type sec_acl_permset_t that defines the permission
                 bits needed to test the attribute's value.

       delete_permset
                 Data of type sec_acl_permset_t that defines the permission
                 bits needed to delete an attribute instance.

   sec_attr_acl_mgr_info_p_t
       A pointer to a sec_attr_acl_mgr_info_t structure.

   sec_attr_acl_mgr_info_set_t
       A structure that defines an attribute's ACL manager set.  The
       structure consists of the following elements:

       num_acl_mgrs
                 An unsigned 32-bit integer that specifies the number of
                 ACL managers in the ACL manager set.

       mgr_info[]
                 An array of pointers of type sec_attr_mgr_info_p_t that
                 define the ACL manager types in the ACL manager set and
                 the permission sets associated with the ACL manager type.

   sec_attr_intercell_action_t
       An enumerator that specifies the action that should be taken by the
       Privilege Service when it reads acceptable attributes from a foreign
       cell.  A foreign attribute is acceptable only if there is either a
       schema entry for the foreign cell or if
       sec_attr_intercell_act_accept is set to true.

       This enumerator, which is used in conjunction with the
       sec_attr_schema_entry_t data type, is composed of the following ele-
       ments:

       sec_attr_intercell_act_accept
                 If the unique flag in the sec_attr_schema_entry_t data
                 type is not set on, retain the attribute. If the unique
                 flag is set on, retain the attribute only if its value
                 is unique among all attribute instances of the same
                 attribute type within the cell.

       sec_attr_intercell_act_reject
                 Discard the input attribute.

       sec_attr_intercell_act_evaluate
                 Use the binding information in the trig_binding field of
                 this sec_attr_schema_entry_t data type to make a
                 sec_attr_trig_query call to a trigger server.  That server
                 determines whether to retain the attribute value, discard
                 the attribute value, or map the attribute to another
                 value(s).

   sec_attr_trig_type_t
       Specifies the trigger type, a flag that determines whether an
       attribute trigger should be invoked for query operations.  The
       data type, which is used in conjunction with the
       sec_attr_schema_entry_t data type, uses the following constants:

                 The attribute trigger server is invoked for query opera-
                 tions.

       sec_attr_trig_type_query
                 The attribute trigger server is invoked for update opera-
                 tions.

   sec_attr_schema_entry_t
       A structure that defines a complete attribute entry for the schema
       catalog. The entry is identified by both a unique string name and a
       unique attribute UUID.  Although either can either can be used as a
       retrieval key, the string name should be used for interactive access
       to the attribute and the UUID for programmatic access. The attribute
       UUID is used to identify the semantics defined for the attribute
       type in the schema.

       The sec_attr_schema_entry_t data type consists of the following ele-
       ments:

       attr_name A pointer to the attribute name.

       attr_id   A value of type uuid_t that identifies the attribute type.

       attr_encoding
                 An enumerator of type sec_attr_encoding_t that specifies
                 the attribute's encoding.

       acl_mgr_set
                 A structure of type sec_attr_acl_mgr_info_set_t that
                 specifies the ACL manager types that support the objects
                 on which attributes of this type can be created and the
                 permission bits supported by that ACL manager type.

       schema_entry_flags
                 An unsigned integer of type sec_attr_sch_entry_flags_t
                 that defines bitsets for the following flags:

                 unique    When set on, this flag indicates that each
                           instance of this attribute type must have a
                           unique value within the cell for the object
                           type implied by the ACL Manager type. If this
                           flag is not set on, uniqueness checks are not
                           performed for attribute writes.

                 multi_valued
                           When set on, this flag indicates that this
                           attribute type may be multi-valued; in other
                           words, multiple instances of the same
                           attribute type can be attached to a single
                           registry object. If this flag is not set on,
                           only one instance of this attribute type can
                           be attached to an object.

                 reserved  When set on, this flag prevents the schema entry
                           from being deleted through any interface or by
                           any user.   If this flag is not set on, the
                           entry can be deleted by any authorized
                           principal.

                 use_defaults
                           When set on, the system-defined default
                           attribute value will be returned on a client
                           query if an instance of this attribute does
                           not exist on the queried object.  If this
                           flag is not set on, system defaults are not
                           used.

       intercell_action
                 An enumerator of type sec_attr_intercell_action_t that
                 specifies how the Privilege Service will handle
                 attributes from a foreign cell.

       trig_types
                 A flag of type sec_attr_trig_type_t that specifies whether
                 whether a trigger can perform update or query operations.

       trig_binding
                 A pointer to a structure of type sec_attr_bind_info_t that
                 supplies the attribute trigger binding handle.

       scope     A pointer to a string that defines the objects to which
                 the attribute can be attached.

       comment   A pointer to a string that contains general comments about
                 the attribute.

   sec_attr_schema_entry_parts_t
       A 32-bit bitset containing flags that specify the schema entry
       fields that can be modified on a schema entry update operation.
       This data type contains the following flags:

       sec_attr_schema_part_name
                 If set, indicates that the attribute name (attr_name) can
                 be changed.

       sec_attr_schema_part_reserved
                 If set, indicates that the setting of the flag that deter-
                 mines whether or not the schema entry can be deleted
                 (reserved) can be changed.

       sec_attr_schema_part_defaults
                 If set, indicates that the flag that determines whether or
                 not a query for a non-existent attribute will not result
                 in a search for a system default (apply_default) can be
                 changed.

       sec_attr_schema_part_trig_bind
                 If set, indicates that the trigger's binding information
                 (trig_binding) can be changed.

       sec_attr_schema_part_comment
                 If set, indicates whether or not comments associated with
                 the schema entry (comment) can be changed.

   sec_attr_component_name_t
       A pointer to a character string used to further specify the object
       to which the attribute is attached. (Note that this data type is
       analogous to the sec_acl_component_name_t data type in the ACL
       interface.)

   sec_attr_cursor_t
       A structure that provides a pointer into a registry database and is
       used for multiple database operations.

       This cursor must minimally represent the object indicated by
       xattrschema in the schema interfaces, or component_name in the
       attribute interfaces.  The cursor may additionally represent an
       entry within that schema or an attribute instance on that component.

   sec_attr_srch_cursor_t
       A structure that provides a pointer into a registry database and is
       used for multiple database operations.  The cursor must minimally
       represent the list of all objects managed by this server that
       possess the search attributes specified in the
       sec_attr_srch_cursor_init routine. It may additionally represent
       a given object within this list as well as attribute instance(s)
       possessed by that object.

   sec_attr_trig_cursor_t
       A structure that provides an attribute trigger cursor for inter-
       active operations.  The structure consists of the following
       elements:

       source    A value of type uuid_t that provides a UUID to identify
                 the server that initialized the cursor.

       object_handle
                 A signed 32 bit integer that identifies the object
                 (specified by xattrschema in the schema interface or
                 component_name in the attribute interface) upon which
                 the operation is being performed.

       entry_handle
                 A signed 32 bit integer that identifies the current entry
                 (schema_entry in the schema interface or attribute
                 instance in the attribute interface) for the operation.

       valid     A boolean field with the following values:

                   +  true (1) - Indicates an initialized cursor.

                   +  false (0) - Indicates an uninitialized cursor.

   sec_attr_trig_timeval_sec_t
       A 32-bit integer containing the seconds portion of a UNIX timeval_t,
       to be used when expressing absolute dates.

 FILES

   SYS$COMMON:[DCE$LIBRARY]SEC_ATTR_BASE.IDL
             The idl file from which sec_attr_base.h was derived.

   CONSTANTS

   The following constants are used in sec_attr calls:

   sec_attr_bind_auth_dce
       The binding uses DCE shared-secret key authentication.

   sec_attr_bind_auth_none
       The binding is not authenticated.

   sec_attr_bind_type_string
       The attribute uses an rpc string binding.

   sec_attr_bind_type_svrname
       The attribute uses a name in rpc_c_ns_syntax format that identifies
       a CDS entry containing the server's binding information. This
       constant has the following structure:

       name_syntax
                 Must be rpc_c_ns_syntax_dce to specify that DCE naming
                 rules are used to specify name.

       name      A pointer to a name of a CDS entry in rpc_c_ns_syntax_dce
                 syntax.

   sec_attr_bind_type_twr
       The attribute uses a DCE protocol tower binding representation.

   sec_attr_trig_type_t Constants
       The following 32-bit constants are used with the
       sec_attr_trig_type_t data type:

           sec_attr_trig_type_query  The trigger server can perform only
                                     query operations.

           sec_attr_trig_type_update The trigger server can perform only
                                     update operations.

   sec_attr_intercell_action_t Constants
       The following constants are used with the
       sec_attr_intercell_action_t data type

       sec_attr_intercell_act_accept
           If the unique flag in the sec_attr_schema_entry_t data type is
           not set on, retain attributes from a foreign cell. If the unique
           flag is set on, retain the foreign attribute only if its value
           is unique among all attribute instances of the same attribute
           type within the cell.

       sec_attr_intercell_act_reject
           Discard attributes from a foreign cell.

       sec_attr_intercell_act_evaluate
           A trigger server determines whether to retain foreign
           attributes, discard foreign attributes, or map foreign
           attribute to another value(s).

   sec_attr_schema_entry_parts_t Constants
       The following constants are used with the
       sec_attr_schema_entry_parts_t data type:

       sec_attr_schema_part_name
           Indicates that the attribute name can be changed in an schema
           update operation.

       sec_attr_schema_part_reserved
           Indicates that the setting of the reserved flag can be changed
           in a schema entry update.

       sec_attr_schema_part_defaults
           Indicates that the apply_default flag can be changed in a schema
           entry update operation.

       sec_attr_schema_part_trig_bind
           Indicates that trigger binding information can be changed in a
           schema entry update operation.

       sec_attr_schema_part_comment
           Indicates that comments associated with the schema entry can be
           changed in a schema entry update.

  3 - LOGIN_API_DATA_TYPES

 SYNOPSIS

   #include <dce/sec_login.h>

   DATA TYPES

   The following data types are used in sec_login_ calls:

   sec_login_handle_t
       This is an opaque pointer to a data structure representing a
       complete login context. The context includes a principal's network
       credentials, as well as other account information. The network
       credentials are also referred to as the principal's "ticket-granting
       ticket."

   sec_login_flags_t
       A 32-bit set of flags describing restrictions on the use of a
       principal's validated network credentials. Currently, only one flag
       is implemented, and the set can take on the following two values:

       sec_login_no_flags
                 No special flags are set.

       sec_login_credentials_private
                 Restricts the validated network credentials to the current
                 process. If this flag is not set, it is permissible to
                 share credentials with descendents of current process.

   sec_login_auth_src_t
       An enumerated set describing how the login context was authorized.
       The possible values are:

       sec_login_auth_src_network
                 Authentication accomplished through the normal network
                 authority. A login context authenticated this way will
                 have all the network credentials it ought to have.

       sec_login_auth_src_local
                 Authentication accomplished via local data. Authentication
                 occurs locally if a principal's account is tailored for
                 the local machine, or if the network authority is
                 unavailable.  Since login contexts authenticated locally
                 have no network credentials, they may not be used for
                 network operations.

       sec_login_auth_src_overridden
                 Authentication accomplished via the override facility.

   sec_login_passwd_t
       The sec_login_get_pwent() call will return a pointer to a "password"
       structure, which depends on the underlying registry structure.  In
       most cases, the structure will look like that supported by Berkeley
       4.4BSD and OSF/1, which looks like this:

            struct passwd {
                char    *pw_name;           * user name *
                char    *pw_passwd;         * encrypted password *
                int     pw_uid;             * user uid *
                int     pw_gid;             * user gid *
                time_t  pw_change;          * password change time *
                char    *pw_class;          * user access class *
                char    *pw_gecos;          * Honeywell login info *
                char    *pw_dir;            * home directory *
                char    *pw_shell;          * default shell *
                time_t  pw_expire;          * account expiration *
            };

   sec_passwd_rec_t
       A structure containing either a plaintext password or a preencrypted
       buffer of password data.  The sec_passwd_rec_t structure consists of
       three components:

       version_number
                 The version number of the password.

       pepper    A character string combined with the password before an
                 encryption key is derived from the password.

       key       A structure consists of the following components:

                 key_type
                     The key type can be the following:

                     sec_passwd_plain
                           Indicates that a printable string of data is
                           stored in plain.

                     sec_passwd_des
                           Indicates that an array of data is stored in
                           des_key.

                 tagged_union
                     A structure specifying the password.  The value of
                     the structure depends on key_type.  If key_type is
                     sec_passwd_plain, structure contains plain, a
                     character string.  If key_type is sec_passwd_des,
                     the structure contains des_key, a DES key of type
                     sec_passwd_des_key_t.

   CONSTANTS

   The following constants are used in sec_login_ calls:

   sec_login_default_handle
       The value of a login context handle before setup or validation.

   sec_login_flags_t Constants
       The following two constants are used with the sec_login_flags_t
       type.

       sec_login_no_flags
                 No special flags are set.

       sec_login_credentials_private
                 Restricts the validated network credentials to the current
                 process. If this flag is not set, it is permissible to
                 share credentials with descendents of current process.

   sec_login_remote_uid
       Used in the sec_login_passwd_t structure for users from remote
       cells.

   sec_login_remote_gid
       Used in the sec_login_passwd_t structure for users from remote
       cells.

 FILES

   SYS$COMMON:[DCE$LIBRARY]SEC_LOGIN.IDL
             The idl file from which sec_login.h was derived.

  4 - EXTENDED_PRIVILEGE_ATTRIBUTE_API_DATA_TYPES

 SYNOPSIS

   #include <dce/id_epac.h>

   #include <dce/nbase.h>

   DATA TYPES

   The following data types are used in Extended Privilege Attribute calls
   and in the sec_login_cred calls that implement extended privilege
   attributes.

   sec_cred_cursor_t
       A structure that provides an input/output cursor used to iterate
       through a set of delegates in the sec_cred_get_delegate() or
       sec_login_cred_get_delegate() calls.  This cursor is initialized by
       the sec_cred_initialize_cursor() or sec_login_cred_init_cursor()
       call.

   sec_cred_attr_cursor_t
       A structure that provides an input/output cursor used to iterate
       through a set of extended attributes in the
       sec_cred_get_extended_attributes() call.  This cursor is initialized
       by the sec_cred_initialize_attr_cursor() call.

   sec_id_opt_req_t
       A structure that specifies application-defined optional
       restrictions.  The sec_id_opt_req_t data type is composed of the
       following elements:

       restriction_len
                 An unsigned 16-bit integer that defines the size of the
                 restriction data.

       restrictions
                 A pointer to a byte_t that contains the restriction data.

   sec_rstr_entry_type_t
       An enumerator that specifies the entry types for delegate and target
       restrictions. This data type is used in conjunction with the
       sec_id_restriction_t data type where the specific UUID(s), if
       appropriate, are supplied. It consists of the following components:

       sec_rstr_e_type_user
                 The target is a local principal identified by UUID. This
                 type conforms with the POSIX 1003.6 standard.

       sec_rstr_e_type_group
                 The target is a local group identified by UUID. This type
                 conforms with the POSIX 1003.6 standard.

       sec_rstr_e_type_foreign_user
                 The target is a foreign principal identified by principal
                 and cell UUID.

       sec_rstr_e_type_foreign_group
                 The target is a foreign group identified by group and cell
                 UUID.

       sec_rstr_e_type_foreign_other
                 The target is any principal that can authenticate to the
                 foreign cell identified by UUID.

       sec_rstr_e_type_any_other
                 The target is any principal that can authenticate to any
                 cell, but is not identified in any other type entry.

       sec_rstr_e_type_no_other
                 No pincipal can act as a target or delegate.

   sec_id_restriction_t
       A discriminated union that defines delegate and target restrictions.
       The union, which is used in conjunction with the
       sec_restriction_set_t data type, consists of the following elements:

       entry_type
                 A sec_rstr_entry_type_t that defines the ACL entry types
                 for delegate and target restrictions. The value of
                 tagged_union depends on the value of entry_type.

       tagged_union
                 A tagged union whose contents depend on entry_type as fol-
                 lows:

         If entry_type is...             Then tagged_union is...
         ________________________________________________________________
         sec_rstr_e_type_any_other       NULL
         ________________________________________________________________
         sec_rstr_e_type_foreign_other   foreign_id that identifies
                                         the foreign cell.
         ________________________________________________________________
         sec_rstr_e_type_user            id, a sec_id_t that
         sec_rstr_e_type_group           identifies the user or group.
         ________________________________________________________________
         sec_rstr_e_type_foreign_user    foreign_id, a sec_id_foreign_t
         sec_rstr_e_type_foreign_group   that identifies the foreign user
                                         or group.

   sec_id_restriction_set_t
       A structure that that supplies delegate and target restrictions. The
       structure consists of:

       num_restrictions
                 A 16-bit unsigned integer that defines the number of
                 restrictions in restrictions.

       restrictions
                 A pointer to a sec_id_restriction_t that contains the res-
                 trictions.

   sec_id_compatibility_mode_t
       A unsigned 16 bit integer that defines the compatibility between
       current and pre-1.1 servers. The data type uses the following con-
       stants:

       sec_id_compat_mode_none
                 Compatibility mode is off.

       sec_id_compat_mode_initiator
                 Compatibility mode is on.  The 1.0 PAC data extracted from
                 the EPAC of the chain initiator.

       sec_id_compat_mode_caller
                 Compatibility mode is on. The 1.0 PAC data extracted from
                 the last delegate in the delegation chain.

   sec_id_delegation_type_t
       An unsigned 16 bit integer that defines the delegation type.  The
       data type uses the following constants:

       sec_id_deleg_type_none
                 Delegation is not allowed.

       sec_id_deleg_type_traced
                 Traced delegation is allowed.

       sec_id_deleg_type_impersonation
                 Simple (impersonation) delegation is allowed.

   sec_id_pa_t
       An structure that contains pre-1.1 PAC data extracted from an EPAC
       of a current version server.  This data type, which is used for
       compatibility with pre-1.1 servers, consists of the following
       elements:

       realm     A value of type sec_id_t that contains the UUID that
                 identifies the cell in which the principal associated
                 with the PAC exists.

       principal A value of type sec_id_t that contains the UUID of the
                 principal.

       group     A value of type sec_id_t that contains the UUID of the
                 principal's primary group.

       num_groups
                 An unsigned 16-bit integer that specifies the number of
                 groups in the principal's groupset.

       groups    An array of  pointers to sec_id_ts that contain the UUIDs
                 of the each group in the principal's groupset.

       num_foreign_groupsets
                 An unsigned 16-bit integer that specifies the number of
                 foreign groups for the principal's groupset.

       foreign_groupsets
                 An array of pointers to sec_id_ts that contain the UUIDs
                 of the each group in the  principal's groupset.

   sec_id_pac_t
       An structure that contains a pre-1.1 PAC.  This data type, which is
       used as output of the sec_cred_get_v1_pac call, consists of the
       following elements:

       pac_type  A value of type sec_id_pac_format_t that can be used to
                 describe the PAC format.

       authenticated
                 A boolean field that indicates whether or not the PAC is
                 authenticated (obtained from an authenticated source).
                 FALSE indicates that the PAC is not authenticated.  No
                 authentication protocol was used in the rpc that trans-
                 mitted the identity of the caller. TRUE indicates that
                 the PAC is authenticated.

       realm     A value of type sec_id_t that contains the UUID that
                 identifies the cell in which the principal associated
                 with the PAC exists.

       principal A value of type sec_id_t that contains the UUID of the
                 principal.

       group     For local principals, a value of type sec_id_t that
                 contains the UUID of the principal's primary group.

       num_groups
                 An unsigned 16-bit integer that specifies the number of
                 groups in the principal's groupset.

       groups    An array of pointers to sec_id_ts that contain the UUIDs
                 of the each group in the  principal's groupset.

       num_foreign_groups
                 An unsigned 16-bit integer that specifies the number of
                 foreign groups in the principal's groupset.

       foreign_groups
                 An array of pointers to sec_id_ts that contain the UUIDs
                 of the each foreign group in the principal's groupset.

   sec_id_pac_format_t
       An enumerator that can be used to describe the PAC format.

   sec_id_t
       A structure that contains UUIDs for principals, groups, or organiza-
       tions and an optional printstring name. Since a UUID is an handle
       for the object's identity, the sec_id_t data type is the basic unit
       for identifying principals, groups, and organizations.

       Because the printstring name is dynamically allocated, this datatype
       requires a destructor function. Generally, however, the sec_id_t is
       embedded in other data types (ACLs, for example), and these data-
       types have a destructor function to release the printstring storage.
       The sec_id_t data type is composed of the following elements:

       uuid      A value of type uuid_t, the UUID of the principal, group,
                 or organization.

       name      A pointer to a character string containing the name of the
                 principal, group, or organization.

   sec_id_foreign_t
       A structure that contains UUIDs for principals, groups, or organiza-
       tions for objects in a foreign cell and the UUID that identifies the
       foreign cell. The sec_id_foreign_t data type is composed of the
       following elements:

       id        A value of type sec_id_t that contains the UUIDs of the
                 objects from the foreign cell.

       realm     A value of type sec_id_t that contains the UUID of the
                 foreign cell.

   sec_id_foreign_groupset_t
       A structure that contains UUIDs for set of groups in a foreign
       cell and the UUID that identifies the foreign cell.  The
       sec_id_foreign_groupset_t data type is composed of the following
       elements:

       realm     A value of type sec_id_t that contain the UUID of the
                 foreign cell.

       num_groups
                 An unsigned 16-bit integer specifying the number of group
                 UUIDs in groups.

       groups    A printer to a sec_id_t that contains the UUIDs of the
                 groupset from the foreign cell.

   CONSTANTS

   The following constants are used in the Extended Privilege Attribute
   calls and in the the sec_login calls that implement extended privilege
   attributes:

   sec_id_compat_mode_none
       Compatibility mode is off.

   sec_id_compat_mode_initiator
       Compatibility mode is on.  The 1.0 PAC data extracted from the EPAC
       of the chain initiator.

   sec_id_compat_mode_caller
       Compatibility mode is on. The 1.0 PAC data extracted from the last
       delegate in the delegation chain.

   sec_id_deleg_type_none
       Delegation is not allowed.

   sec_id_deleg_type_traced
       Traced delegation is allowed.

   sec_id_deleg_type_impersonation
       Simple (impersonation) delegation is allowed.

   sec_rstr_e_type_user
       The delegation target is a local principal identified by UUID. This
       type conforms with the POSIX 1003.6 standard.

   sec_rstr_e_type_group
       The delegation target is a local group identified by UUID. This type
       conforms with the POSIX 1003.6 standard.

   sec_rstr_e_type_foreign_user
       The delegation target is a foreign principal identified by principal
       and cell UUID.

   sec_rstr_e_type_foreign_group
       The delegation target is a foreign group identified by group and
       cell UUID.

   sec_rstr_e_type_foreign_other
       The delegation target is any principal that can authenticate to the
       foreign cell identified by UUID.

   sec_rstr_e_type_any_other
       The delegation target is any principal that can authenticate to any
       cell, but is not identified in any other type entry.

   sec_rstr_e_type_no_other
       No principal can act as a target or delegate.

 FILES

   SYS$COMMON:[DCE$LIBRARY]SEC_CRED.IDL
             The idl file from which sec_cred.h was derived.

   SYS$COMMON:[DCE$LIBRARY]ID_EPAC.IDL
             The idl file from which id_epac.h was derived.

   SYS$COMMON:[DCE$LIBRARY]NBASE.IDL
             The idl file from which nbase.h was derived.

  5 - ACL_API_DATA_TYPES

 SYNOPSIS

   #include <dce/aclbase.h>

 Data Types

   The following data types are used in sec_acl_ calls:

   sec_acl_handle_t
       A pointer to an opaque handle bound to an ACL that is the subject
       of a test or examination.  The handle is bound to the ACL with
       sec_acl_bind().  An unbound handle has the value
       sec_acl_default_handle.

   sec_acl_posix_semantics_t
       A flag that indicates which, if any, POSIX ACL semantics an ACL
       manager supports.  The following constants are defined for use
       with the sec_acl_posix_semantics_t data type:

       sec_acl_posix_no_semantics
                 The manager type does not support POSIX semantics.

       sec_acl_posix_mask_obj
                 The manager type supports the mask_obj entry type and
                 POSIX 1003.6 Draft 12 ACL mask entry semantics.

   sec_acl_t
       This data type is the fundamental type for the ACL manager
       interfaces.  The sec_acl_t type contains a complete access control
       list, made up of a list of entry fields (type sec_acl_entry_t).
       The default cell identifies the authentication authority for
       simple ACL entries (foreign entries identify their own foreign
       cells).  The sec_acl_manager_type identifies the manager to
       interpret this ACL.  The sec_acl_t type is a structure containing
       the following fields:

       default_realm
                 A structure of type sec_acl_id_t, this identifies the UUID
                 and (optionally) the name of the default cell.

       sec_acl_manager_type
                 Contains the UUID of the ACL manager type.

       num_entries
                 An unsigned 32-bit integer containing the number of ACL
                 entries in this ACL.

       sec_acl_entries
                 An array containing num_entries pointers to different ACL
                 entries, each of type sec_acl_entry_t.

   sec_acl_p_t
       This data type, simply a pointer to a sec_acl_t, is for use with the
       sec_acl_list_t data type.

   sec_acl_list_t
       This data type is a structure containing an unsigned 32-bit integer
       num_acls that describes the number of ACLs indicated by its
       companion array of pointers, sec_acls, of type sec_acl_p_t.

   sec_acl_entry_t
       The sec_acl_entry_t type is a structure made up of the following
       components:

       perms     A set of flags of type sec_acl_permset_t that describe the
                 permissions granted for the principals identified by this
                 ACL entry.  Note that if a principal matches more than one
                 ACL entry, the effective permissions will be the most
                 restrictive combination of all the entries.

       entry_info
                 A structure containing two members:

                 entry_type
                           A flag of type sec_acl_entry_type_t, indicating
                           the type of ACL entry.

                 tagged_union
                           A tagged union whose contents depend on the type
                           of the entry.

   The types of entries indicated by entry_type can be the following:

       sec_acl_e_type_user_obj
           The entry contains permissions for the implied user object. This
           type is described in the POSIX 1003.6 standard.

       sec_acl_e_type_group_obj
           The entry contains permissions for the implied group object.
           This type is described in the POSIX 1003.6 standard.

       sec_acl_e_type_other_obj
           The entry contains permissions for principals not otherwise
           named through user or group entries.  This type is described
           in the POSIX 1003.6 standard.

       sec_acl_e_type_user
           The entry contains a key that identifies a user.  This type is
           described in the POSIX 1003.6 standard.

       sec_acl_e_type_group
           The entry contains a key that identifies a group.  This type is
           described in the POSIX 1003.6 standard.

       sec_acl_e_type_mask_obj
           The entry contains the maximum permissions for all entries other
           than mask_obj, unauthenticated, user_obj, other_obj.

       sec_acl_e_type_foreign_user
           The entry contains a key that identifies a user and the foreign
           realm.

       sec_acl_e_type_foreign_group
           The entry contains a key that identifies a group and the foreign
           realm.

       sec_acl_e_type_foreign_other
           The entry contains a key that identifies a foreign realm.  Any
           user that can authenticate to the foreign realm will be allowed
           access.

       sec_acl_e_type_any_other
           The entry contains permissions to be applied to any accessor who
           can authenticate to any realm, but is not identified in any
           other entry (except sec_acl_e_type_unauthenticated).

       sec_acl_e_type_unauthenticated
           The entry contains permissions to be applied when the accessor
           does not pass authentication procedures.  A privilege attribute
           certificate will indicate that the caller's identity is not
           authenticated.  The identity is used to match against the
           standard entries, but the access rights are masked by this mask.
           If this mask does not exist in an ACL, the ACL is assumed to
           grant no access and all unauthenticated access attempts will be
           denied.

           Great care should be exercised when allowing unauthenticated
           access to an object.  Almost by definition, unauthenticated
           access is very easy to spoof.  The presence of this mask on
           an ACL essentially means that anyone can get at least as much
           access as allowed by the mask.

       sec_acl_e_type_extended
           The entry contains additional "pickled" data.  This kind of
           entry cannot be interpreted, but can be used by an out-of-date
           client when copying an ACL from one manager to another
           (assuming that the two managers each understand the data).

   The contents of the tagged union depend on the entry type.

   For the following entry types, the union contains a UUID and an optional
   print string (called entry_info.tagged_union.id with type sec_id_t) for
   an identified local principal, or for an identified foreign realm.

         + sec_acl_e_type_user

         + sec_acl_e_type_group

         + sec_acl_type_foreign_other

   For the following entry types, the union contains two UUIDs and optional
   print strings (called entry_info.tagged_union.foreign_id with type
   sec_id_foreign_t) for an identified foreign principal and its realm.

         + sec_acl_e_type_foreign_user

         + sec_acl_e_type_foreign_group

   For an extended entry (sec_acl_e_type_extended), the union contains
   entry_info.tagged_union.extended_info, a pointer to an information block
   of type sec_acl_extend_info_t.

   sec_acl_permset_t
       A 32-bit set of permission flags.  The flags currently represent the
       conventional file system permissions (read, write, execute) and the
       extended DFS permissions (owner, insert, delete).  The "unused"
       flags represent permissions that can only be interpreted by the
       manager for the object.  For example, sec_acl_perm_unused_00000080
       may mean to one ACL manager that withdrawals are allowed, and to
       another ACL manager that rebooting is allowed.

       The following constants are defined for use with the
       sec_acl_permset_t data type:

       sec_acl_perm_read
                 The ACL allows read access to the protected object.

       sec_acl_perm_write
                 The ACL allows write access to the protected object.

       sec_acl_perm_execute
                 The ACL allows execute access to the protected object.

       sec_acl_perm_control
                 The ACL allows the ACL itself to be modified.

       sec_acl_perm_insert
                 The ACL allows insert access to the protected object.

       sec_acl_perm_delete
                 The ACL allows delete access to the protected object.

       sec_acl_perm_test
                 The ACL allows access to the protected object only to the
                 extent of being able to test for existence.

       The bits from 0x00000080 to 0x80000000 are not used by the
       conventional ACL permission set.  Constants of the form
       sec_acl_perm_unused_00000080 have been defined so application
       programs can easily use these bits for extended ACLs.

   sec_acl_extend_info_t
       This is an extended information block, provided for future
       extensibility.  Primarily, this allows an out-of-date client to
       read an ACL from a newer manager and apply it to another (up-to-
       date) manager.  The data cannot be interpreted by the out-of-date
       client without access to the appropriate "pickling" routines
       (that presumably are unavailable to such a client).

       In general, ACL managers should not accept ACLs that contain entries
       the manager does not understand.  The manager clearly cannot perform
       the security service requested by an uninterpretable entry, and it
       is considered a security breach to lead a client to believe that the
       manager is performing a particular class of service if the manager
       cannot do so.

       The data structure is made up of the following components:

       extension_type
                 The UUID of the extension type.

       format_label
                 The format of the label, in ndr_format_t form.

       num_bytes An unsigned 32-bit integer indicating the number of bytes
                 containing the "pickled" data.

       pickled_data
                 The byte array containing the "pickled" data.

   sec_acl_type_t
       The sec_acl_type_t type differentiates among the various types of
       ACLs an object can possess.  Most file system objects will only
       have one ACL controlling the access to that object, but objects
       that control the creation of other objects (sometimes referred to
       as "containers") may have more.  For example, a directory can have
       three different ACLs: the directory ACL, controlling access to the
       directory; the initial object (or default object) ACL, which serves
       as a mask when creating new objects in the directory; and the
       initial directory (or default directory) ACL, which serves as a
       mask when creating new directories (containers).

       The sec_acl_type_t is an enumerated set containing one of the
       following values:

       sec_acl_type_object
                 The ACL refers to the specified object.

       sec_acl_type_default_object
                 The ACL is to be used when creating objects in the
                 container.

       sec_acl_type_default_container
                 The ACL is to be used when creating nested containers.

   The following values are defined but not currently used.  They are
   available for application programs that may create an application-
   specific ACL definition.

       sec_acl_type_unspecified_3

       sec_acl_type_unspecified_4

       sec_acl_type_unspecified_5

       sec_acl_type_unspecified_6

       sec_acl_type_unspecified_7

   sec_acl_printstring_t
       A sec_acl_printstring_t structure contains a printable representa-
       tion for a permission in a sec_acl_permset_t permission set. This
       allows a generic ACL editing tool to be used for application-
       specific ACLs.  The tool need not know the printable representation
       for each permission bit in a given permission set.  The
       sec_acl_get_printstring() function will query an ACL manager for
       the print strings of the permissions it supports.

       The structure consists of three components:

       printstring
                 A character string of maximum length
                 sec_acl_printstring_len describing the printable
                 representation of a specified permission.

       helpstring
                 A character string of maximum length
                 sec_acl_printstring_help_len containing some text that may
                 be used to describe the specified permission.

       permissions
                 A sec_acl_permset_t permission set describing the
                 permissions that will be represented with the specified
                 print string.

   sec_acl_component_name_t
       This type is a pointer to a character string, to be used to specify
       the entity a given ACL is protecting.

   CONSTANTS

   The following constants are used in sec_acl_ calls:

   sec_acl_default_handle
       The value of an unbound ACL manager handle.

   sec_rgy_acct_key_t Constants
       The following 32-bit integer constants are used with the
       sec_rgy_acct_key_t data type:

       sec_rgy_acct_key_none
                 Invalid key.

       sec_rgy_acct_key_person
                 The person name alone is enough.

       sec_rgy_acct_key_group
                 The person and group names are both necessary for the
                 account abbreviation.

       sec_rgy_acct_key_org
                 The person, group, and organization names are all
                 necessary.

       sec_rgy_acct_key_last
                 Key values must be less than this constant.

   sec_rgy_pname_t_size
       The maximum number of characters in a sec_rgy_pname_t.

   sec_acl_permset_t Constants
       The following constants are defined for use with the
       sec_acl_permset_t data type:

       sec_acl_perm_read
                 The ACL allows read access to the protected object.

       sec_acl_perm_write
                 The ACL allows write access to the protected object.

       sec_acl_perm_execute
                 The ACL allows execute access to the protected object.

       sec_acl_perm_owner
                 The ACL allows owner-level access to the protected object.

       sec_acl_perm_insert
                 The ACL allows insert access to the protected object.

       sec_acl_perm_delete
                 The ACL allows delete access to the protected object.

       sec_acl_perm_test
                 The ACL allows access to the protected object only to the
                 extent of being able to test for existence.

       sec_acl_perm_unused_00000080 - sec_acl_perm_unused_0x80000000
                 The bits from 0x00000080 to 0x80000000 are not used by
                 the conventional ACL permission set.  Constants have
                 been defined so application programs can easily use
                 these bits for extended ACLs.

   sec_acl_printstring_len
       The maximum length of the printable representation of an ACL permis-
       sion.  (See sec_acl_printstring_t.)

   sec_acl_printstring_help_len
       The maximum length of a help message to be associated with a
       supported ACL permission. (See sec_acl_printstring_t.)

 FILES

   SYS$COMMON:[DCE$LIBRARY]ACLBASE.IDL
       The idl file from which aclbase.h was derived.

  6 - KEY_MANAGEMENT_API_DATA_TYPES

 NOTES
   Key management operations that take a keydata argument expect a pointer
   to a sec_passwd_rec_t structure, and those that take a keytype argument
   (void *) expect a pointer to a sec_passwd_type_t.  Key management
   operations that yield a keydata argument as output set the pointer to
   an array of sec_passwd_rec_t.  (The array is terminated by an element
   with a key type of sec_passwd_none.)

   Operations that take a keydata argument expect a pointer to a
   sec_passwd_rec_t structure.  Operations that yield a keydata argument
   as output set the pointer to an array of sec_passwd_rec_t.  (The array
   is terminated by an element with key type sec_passwd_none.) Operations
   that take a keytype argument (void *) expect a pointer to a
   sec_passwd_type_t.

 SYNOPSIS

   #include <dce/keymgmt.h>

   DATA TYPES

       An enumerated set describing the currently supported key types.  The
       possible values are:

                 Indicates no key types are supported.

                 Indicates that the key is a printable string of data.

                 Indicates that the key is DES encrypted data.

   sec_passwd_rec_t
       A structure containing either a plaintext password or a preencrypted
       buffer of password data.  The sec_passwd_rec_t structure consists of
       three components:

       version_number
                 The version number of the password.

       pepper    A character string combined with the password before an
                 encryption key is derived from the password.

       key       A structure consists of the following components:

                 key_type
                     The key type can be the following:

                     sec_passwd_plain
                           Indicates that a printable string of data is
                           stored in plain.

                     sec_passwd_des
                           Indicates that an array of data is stored in
                           des_key.

                 tagged_union
                     A structure specifying the password.  The value of
                     the structure depends on key_type.  If key_type is
                     sec_passwd_plain, structure contains plain, a
                     character string.  If key_type is sec_passwd_des,
                     the structure contains des_key, a DES key of type
                     sec_passwd_des_key_t.

   sec_passwd_version_t
       An unsigned 32-bit integer that defines the password version number.
       You can supply a version number or a 0 for no version number.  If
       you supply the constant sec_passwd_c_version_none, the Security
       service supplies a system-generated version number.

       A 32-bit unsigned integer whose purpose is to indicate the authenti-
       cation service in use, since a server may have different keys for
       different levels of security. The possible values of this data type
       and their meanings are as follows:

       rpc_c_authn_none
                 No authentication.

       rpc_c_authn_dce_private
                 DCE private key authentication (an implementation of the
                 Kerberos system).

       rpc_c_authn_dce_public
                 DCE public key authentication (reserved for future use).

 Constants
   There are no constants specially defined for use with the key management
   API.

 FILES

   SYS$COMMON:[DCE$LIBRARY]KEYMGMT.IDL
       The idl file from which keymgmt.h was derived.

  7 - ID_MAPPING_API_DATA_TYPES

 SYNOPSIS

   #include <dce/secidmap.h>

   DATA TYPES

   No special data types are defined for the ID Mapping API.

   CONSTANTS

   No special constants are defined for the ID Mapping API.

 FILES

   SYS$COMMON:[DCE$LIBRARY]SECIDMAP.IDL
       The idl file from which secidmap.h was derived.

  8 - PASSWORD_MANAGEMENT_API_DATA_TYPES

 SYNOPSIS

   #include <dce/sec_pwd_mgmt.h>

   DATA TYPES

   The following data types are used in sec_pwd_mgmt_ calls:

       A pointer to an opaque handle consisting of password management
       information about a principal. It is returned by
       sec_pwd_mgmt_setup().

   CONSTANTS

   There are no constants specially defined for use with the Password
   Management API.

 FILES

   SYS$COMMON:[DCE$LIBRARY]SEC_PWD_MGMT.IDL
       The idl file from which sec_pwd_mgmt.h was derived.
  Close     HLB-list     TLB-list     Help  

[legal] [privacy] [GNU] [policy] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.