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.
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.
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.
[legal]
[privacy]
[GNU]
[policy]
[netiquette]
[sponsors]
[FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.