This chapter specifies the RPC interfaces supporting RS (or Registry) Editors. These interfaces are:
The APIs that correspond to these RPC interfaces are specified in
Recall that, by definition, RS Editors are just RPC clients
that invoke the operations defined in this chapter to access and
manipulate (via the RS server and its ACL managers) the
RS datastore items. (See
Note that the RS supports some RPC interfaces other than those specified in this chapter (they are specified in subsequent chapters).
The RS regards its datastore items as protected objects, so it
supports the rdacl RPC interface, and its ACLs can be managed
via ACL Editors. The RS supports seven kinds of protected objects,
each of which is managed by a single ACL Manager Type (see
will be controlled by the cell administrator. The DCE security services will not interpret or assign meaning to these bits other than what is implied by their inclusion in a schema entry.
Information on Extended Registry Attributes can be found in
The ACL Manager Type UUIDs of these five ACL Managers are as follows:
Manager Type | ACL Manager Type UUID |
---|---|
Policy | 06ab8f10-0191-11ca-a9e8-08001e039d7d |
Directory | 06ab9c80-0191-11ca-a9e8-08001e039d7d |
Principal | 06ab9320-0191-11ca-a9e8-08001e039d7d |
Group | 06ab9640-0191-11ca-a9e8-08001e039d7d |
Organisation | 06ab9960-0191-11ca-a9e8-08001e039d7d |
Replist | 2ac24970-60c3-11cb-b261-08001e039d7d |
Attr_schema | 755cd9ce-ded3-11cc-8d0a-080009353559 |
The permissions supported by the RS's ACL Managers are
as follows (see also
Manager Type | Supported Permissions | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
r | c | i | d | t | D | n | f | m | a | u | g | M | A | I | {O-Z} | |
Policy | r | c | m | a | A | ERA | ||||||||||
Directory | r | c | i | d | D | n | ERA | |||||||||
Principal | r | c | D | n | f | m | a | u | g | ERA | ||||||
Group | r | c | t | D | n | f | m | M | ERA | |||||||
Organization | r | c | t | D | n | f | m | M | ERA | |||||||
Replist | c | i | d | m | A | I | ERA | |||||||||
Attr_schema | r | c | i | d | m | M | ERA |
The ACLE Types supported by the RS's ACL Managers are as follows:
This is illustrated in the following two tables:
Manager Type | Supported ACLE Types | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
UO | U | GO | G | O | FU | FG | FO | AO | UN | E | |
Policy | U | G | O | FU | FG | FO | AO | UN | E | ||
Directory | U | G | O | FU | FG | FO | AO | UN | E | ||
Principal | UO | U | G | O | FU | FG | FO | AO | UN | E | |
Group | U | GO | G | O | FU | FG | FO | AO | UN | E | |
Organization | U | G | O | FU | FG | FO | AO | UN | E | ||
Replist | U | G | O | FU | FG | FO | AO | UN | E | ||
Attr_schema | U | G | O | FU | FG | FO | AO | UN | E |
The meanings of the abbreviations of the ACLE types given in this
and the preceeding table can be found in
the representation of the sec_acl_entry_type_t data type in
Manager Type | Supported Delegation ACLE Types | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
UOD | UD | FUD | GOD | GD | FGD | OD | FOD | AOD | |||
Policy | UOD | UD | FUD | GOD | GD | FGD | OD | FOD | AOD | ||
Directory | UOD | UD | FUD | GOD | GD | FGD | OD | FOD | AOD | ||
Principal | UOD | UD | FUD | GOD | GD | FGD | OD | FOD | AOD | ||
Group | UOD | UD | FUD | GOD | GD | FGD | OD | FOD | AOD | ||
Organization | UOD | UD | FUD | GOD | GD | FGD | OD | FOD | AOD | ||
Replist | UOD | UD | FUD | GOD | GD | FGD | OD | FOD | AOD | ||
Attr_schema | UOD | UD | FUD | GOD | GD | FGD | OD | FOD | AOD |
Disclose an item's information.
Modify an item's ACL.
Insert into a directory.
Delete from a directory.
Test a principal's membership in a group or organisation.
Delete an item.
Modify name of an item.
Modify the (human-friendly) "full name" (or other annotation).
Modify management information.
Modify authentication information.
Modify user information.
Add a principal to a group.
Add or delete principals from a group or organisation.
Administer the RS.
Initialise replica list.
Generic ERA support only. Not interpreted or assigned
meaning by DCE Security Services (controlled by
cell administrator).
These are marked by an "ERA" in
Support ERA Serviceability information for the RS.
The required rights for successful invocation of RS RPC interface operations (and therefore of the routines based on them) are specified in context in the remaining sections of this chapter.
This section specifies (in IDL/NDR) common data types and constants used in the RS's RPC interfaces.
The bitset data type represents a 32-bit flag word.
The sec_timeval_t data type consists of a structure
containing the full UNIX time. The structure contains two
32-bit integers that indicate seconds (sec) and
microseconds (usec) since 00:00.00 January 1, 1970 AD.
For example, the short PGO name foo/bar in the context of the PGO
principal domain (sec_rgy_domain_person, which has associated
stringname person-see
The characters of sec_rgy_pname_t are to be taken from the DCE Portable Character Set.
Its fields are the following:
Principal name associated with the account (subordinate to the sec_rgy_domain_person domain).
Group name (subordinate to the sec_rgy_domain_group domain).
Organisation name (subordinate to the sec_rgy_domain_org domain).
Its fields are the following:
The object UUID of the RS server,
identifying the RS server/datastore for which a cursor is meaningful.
Position in the datastore of the RS server indicated by source. Its use is RS server/datastore implementation-dependent, in the sense that only the RS server indicated by source can interpret it. In particular, unless specified otherwise in DCE, any implied ordering of the various kinds of data in the RS datastore (for example, the order in which data is returned by multiple invocations of an operation that takes a cursor as in input/output parameter) is also implementation-dependent (for example, alphabetical by principal name, chronological by creation time, random, and so on).
If 0 (FALSE), this cursor represents the initial position of an RS datastore; if non-0 (TRUE), a non-initial position (as determined by source and position) is indicated. Clients must set valid to 0 the first time a cursor is used, to initiate an RS datastore retrieval request; after this initial request, clients must treat a cursor as an opaque data object (that is, not accessing any of its fields), interpretable only by the RS server indicated by source.
-
-
typedef struct {
uuid_t site_id;
sec_timeval_sec_t person_dtm;
sec_timeval_sec_t group_dtm;
sec_timeval_sec_t org_dtm;
} rs_cache_data_t;
Its fields are the following (see
The object UUID of the RS server to which this modification time information pertains.
Time of last deletion (or change) of name, UUID or local-ID, to a PGO item in the principal domain.
Time of last deletion (or change) of name, UUID or local-ID, to a PGO item in the group domain.
Time of last deletion (or change) of name, UUID or local-ID, to a PGO item in the organisation domain.
-
-
typedef void *sec_rgy_handle_t;
This section specifies (in IDL/NDR) the RS's rs_bind RPC interface.
The following are common data types and constants used in the rs_bind interface.
Its fields are the following:
The number of elements in the towers[] array.
The actual vector (of size num_towers) of (pointers to) RPC protocol towers. (For the IDL definition of the twr_p_t data type, see Appendix N, IDL Data Type Declarations, of the referenced Open Group DCE 1.1 RPC Specification.)
The interface UUID and version number for the rs_bind interface
are given by the following:
The
The rpc_handle parameter identifies the RS server (called the bound server in this section).
The cellname parameter indicates the bound server's cell.
The update_site parameter indicates whether the bound server is an update server or not: if non-0 (TRUE), the bound server is an update server; if 0 (FALSE), it is only a query (non-update) server.
The update_site_name parameter indicates the cell-relative RS binding stringname (relative to the cell cellname) of an update server in the cell cellname.
The semantics of the update_site_id parameter are
unspecified in this revision of DCE.
The update_site_twrs parameter indicates the protocol tower set of an update server in the cell cellname.
The status parameter returns the status of the operation.
Required rights: None.
This section specifies (in IDL/NDR) the RS's rs_policy RPC interface.
The following are common data types and constants used in the rs_policy interface.
The sec_timeval_period_t data type measures time intervals in seconds.
The sec_rgy_properties_flags_t data type is a flag word
representing attributes of an RS server/datastore.
The following values are currently registered:
All certificates (tickets and privilege tickets) generated at this RS site
are to be usable at any client site; that is, are not bound to the host
from which the client requested the certificate-they contain no
client addresses; see
No (protected) passwords are to be transmitted remotely.
(Note that the (protected) passwords in question are those
relevant to local operating systems-the passwords relevant
to the Login Facility specified by DCE are not stored in
the RS datastore.) The following are the operations that
honour this property:
The UUIDs of principals (except for KDS principals), groups and
organisations contain embedded local-IDs (see
The sec_rgy_properties_t data type represents the attributes
of the RS's Policy item.
Its fields are the following:
The semantics of this field are currently unspecified (it is intended that when it is specified, it will denote a property of the underlying RS datastore, indicating the earliest version of the RS software that can correctly read the datastore). Implementations must set it to 1.
The semantics of this field are currently unspecified (it is intended that when it is specified, it will denote a property of the underlying RS datastore, indicating the earliest version of the RS software that can correctly write the datastore). Implementations must set it to 1.
Cell-wide minimum period of time for which a ticket
is to be valid. In the case of the Kerberos authentication
service (which is the only authentication service currently
supported), "ticket" here is interpreted as "Kerberos
ticket" (see
Cell-wide default period of time for which a certificate
is to be valid. In the case of Kerberos authentication,
"certificate" here is interpreted as "Kerberos
ticket-granting-ticket", and this field is the same as
the cell-wide default ticket-granting-ticket lifetime
listed in
The minimum local-ID that the RS will assign to a newly created principal.
The minimum local-ID that the RS will assign to a newly created group.
The minimum local-ID that the RS will assign to
a newly created organisation.
The maximum local-ID that the RS will assign to any newly created entity (in any PGO domain).
Flag word.
Name of the cell to which the RS belongs (and holds the security information for).
UUID of cell to which RS belongs.
Quota for unauthenticated users. Concerning the general
definition of quotas in the RS datastore, see
The sec_rgy_plcy_pwd_flags_t data type is a flag word
indicating password policy restrictions.
The following values are currently registered:
Password must not contain the space character.
Password must contain a non-alphabetic character.
Its fields are the following:
The minimum allowable length, in characters (or, equivalently, bytes) for a password. Currently, this value is intended to be enforced by client-side password changing utilities, not by the RS server (this may change in future releases).
The lifetime for a password (or, equivalently, a long-term key). Its value must be >= 0. Currently, this value is intended to be enforced by client-side login utilities, not by the RS server (this may change in future releases). See next item.
The lifetime for a password (or, equivalently, a long-term key). Its value must be >= 0. Currently, this value is intended to be enforced by client-side login utilities, not by the RS server (this may change in future releases).
The time at which an account's password will expire (that is, after
which logging in to this account will be granted only after the
password has been changed), denoted here as acct-passwd-exp-time,
is intended to be calculated by the client-side login code via the
following algorithm, where passwd_lifetime and
passwd_exp_date are from the effective policy for the
account (determined by choosing the strictest (smallest, earliest)
policy parameters from the account's organisation policy and its
cell policy), and where acct-passwd-last-update (whose value
must be >= 0) is the time of the most recent change of the
account's password, or equivalently, long-term key (thus, it is
the same as passwd_dtm in
The value of acct-passwd-exp-time must be >= 0; the value 0 indicates that the password/key does not expire.
The length of time an account is valid. Its value must be >= 0. Currently, this value is intended to be enforced by client-side login utilities, not by the RS server (this may change in future releases).
The time at which an account will expire (that is, after which
logging in to this account will be denied), denoted here
acct-exp-time, is intended to be calculated by the
client-side login code via the following algorithm, where
acct_lifespan is from the effective policy for the
account (see previous item for definition of this), and where
creation_date and expiration_date (both of whose
values must be >= 0) are from the account's administrative
information (see
The value of acct-exp-time must be >= 0; the value 0 indicates that the account does not expire.
Flag word.
Its fields are the following:
Maximum ticket lifetime.
In the case of Kerberos authentication, "ticket" here is
interpreted as "Kerberos ticket" (see
Maximum renewable ticket lifetime. In the case of Kerberos
authentication, "ticket" here is interpreted as "Kerberos
ticket" (see
Values:
const unsigned32 sec_rgy_not_implemented = 0x17122073;
const unsigned32 sec_rgy_bad_domain = 0x17122074;
const unsigned32 sec_rgy_object_exists = 0x17122075;
const unsigned32 sec_rgy_name_exists = 0x17122076;
const unsigned32 sec_rgy_unix_id_changed = 0x17122077;
const unsigned32 sec_rgy_is_an_alias = 0x17122078;
const unsigned32 sec_rgy_no_more_entries = 0x17122079;
const unsigned32 sec_rgy_object_not_found = 0x1712207a;
const unsigned32 sec_rgy_server_unavailable = 0x1712207b;
const unsigned32 sec_rgy_not_member_group = 0x1712207c;
const unsigned32 sec_rgy_not_member_org = 0x1712207d;
const unsigned32 sec_rgy_not_member_group_org = 0x1712207e;
const unsigned32 sec_rgy_incomplete_login_name = 0x1712207f;
const unsigned32 sec_rgy_passwd_invalid = 0x17122080;
const unsigned32 sec_rgy_not_authorized = 0x17122081;
const unsigned32 sec_rgy_read_only = 0x17122082;
const unsigned32 sec_rgy_bad_alias_owner = 0x17122083;
const unsigned32 sec_rgy_bad_data = 0x17122084;
const unsigned32 sec_rgy_cant_allocate_memory = 0x17122085;
const unsigned32 sec_rgy_dir_not_found = 0x17122086;
const unsigned32 sec_rgy_dir_not_empty = 0x17122087;
const unsigned32 sec_rgy_bad_name = 0x17122088;
const unsigned32 sec_rgy_dir_could_not_create = 0x17122089;
const unsigned32 sec_rgy_dir_move_illegal = 0x1712208a;
const unsigned32 sec_rgy_quota_exhausted = 0x1712208b;
const unsigned32 sec_rgy_foreign_quota_exhausted = 0x1712208c;
const unsigned32 sec_rgy_no_more_unix_ids = 0x1712208d;
const unsigned32 sec_rgy_uuid_bad_version = 0x1712208e;
const unsigned32 sec_rgy_key_bad_version = 0x1712208f;
const unsigned32 sec_rgy_key_version_in_use = 0x17122090;
const unsigned32 sec_rgy_key_bad_type = 0x17122091;
const unsigned32 sec_rgy_crypt_bad_type = 0x17122092;
const unsigned32 sec_rgy_bad_scope = 0x17122093;
const unsigned32 sec_rgy_object_not_in_scope = 0x17122094;
const unsigned32 sec_rgy_cant_authenticate = 0x17122095;
const unsigned32 sec_rgy_alias_not_allowed = 0x17122096;
const unsigned32 sec_rgy_bad_chksum_type = 0x17122097;
const unsigned32 sec_rgy_bad_integrity = 0x17122098;
const unsigned32 sec_rgy_key_bad_size = 0x17122099;
const unsigned32 sec_rgy_mkey_cant_read_stored = 0x1712209a;
const unsigned32 sec_rgy_mkey_bad_stored = 0x1712209b;
const unsigned32 sec_rgy_mkey_bad = 0x1712209c;
const unsigned32 sec_rgy_bad_handle = 0x1712209d;
const unsigned32 sec_rgy_s_pgo_is_required = 0x1712209e;
const unsigned32 sec_rgy_host_context_not_avail = 0x1712209f;
const unsigned32 sec_rgy_mkey_file_io_failed = 0x171220a0;
const unsigned32 sec_rgy_tower_rebind_failed = 0x171220a1;
const unsigned32 sec_rgy_site_not_absolute = 0x171220a2;
const unsigned32 sec_rgy_bad_nameservice_name = 0x171220a3;
const unsigned32 sec_rgy_log_entry_out_of_range = 0x171220a4;
const unsigned32 sec_rgy_era_pwd_mgmt_auth_type = 0x171220a5;
const unsigned32 sec_rgy_passwd_too_short = 0x171220a6;
const unsigned32 sec_rgy_passwd_non_alpha = 0x171220a7;
const unsigned32 sec_rgy_passwd_spaces = 0x171220a8;
Descriptions:
Operation not (or not yet) implemented.
Operation not supported on specified domain.
Object already exists.
Name already exists.
Local ID changed on an alias add.
Query returned an alias but aliases were not allowed to satisfy
the query (see
No more matching entries.
Registry object not found.
Registry server unavailable.
User is not member of specified group.
User is not member of specified organisation.
User is not member of specified group and organisation.
Incomplete login name specification.
Invalid password.
User is not authorised to update record.
Registry is read only; updates are not allowed.
PGO alias entry has an invalid owner.
Invalid data record.
Unable to allocate memory.
Directory not found.
Directory not empty.
Illegal PGO or directory name.
Unable to create directory.
Directory move not allowed.
Principal quota exhausted.
Foreign quota for realm exhausted.
Local ID space for domain has been exhausted.
UUID version invalid.
Key version number out of range.
Key version number currently in use.
Key type not supported.
Encrypt/decrypt type not supported.
Scope doesn't name existing directory or PGO.
Object found was not in scope.
Can't establish authentication to security server.
Can't add alias for this name or principal (for example, krbtgt).
Checksum type not supported.
Data integrity error.
Invalid size for key data.
Can't read stored master key.
Stored master key is bad.
Supplied master key is bad.
Bad security context handle.
PGO/account is required and can't be deleted.
Login context of local host principal not available.
Master key file I/O operation failed.
No usable tower entries.
Registry site name must be absolute.
Invalid nameservice name.
Invalid log entry module or operation.
Authorization type for pwd_mgmt_binding ERA binding cannot be none.
Password is too short.
Passwords must contain at least one non-alphanumeric character.
Passwords must contain at least one non-blank character.
The interface UUID and version number for the rs_policy
interface are given by the following:
The
The rpc_handle parameter identifies the RS server.
The properties parameter indicates the RS Policy's properties.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has Read (r) permission on the RS Policy object.
The
The rpc_handle parameter identifies the RS server.
The properties parameter indicates the RS Policy's properties.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has Management Info (m) permission on the RS's Policy object.
The
The rpc_handle parameter identifies the RS server.
The organization parameter indicates the
organisation whose policy information is to be retrieved;
or, if NULL, the RS Policy's policy information is indicated.
(If non-NULL, this string is interpreted as a short PGO name,
subordinate to the organisation naming domain-see
The policy_data parameter indicates the retrieved policy information.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has Read (r) permission on the object specified by the organization parameter.
The
The rpc_handle parameter identifies the RS server.
The organization parameter indicates the
organisation whose policy information is to be modified;
or, if NULL, the RS Policy's policy information is indicated.
(If non-NULL, this string is interpreted as a short PGO name,
subordinate to the organisation naming domain-see
The policy_data parameter indicates the policy information that is to be written.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has Management Info (m) permission on the object specified by the organization parameter.
The
The rpc_handle parameter identifies the RS server.
The organization parameter indicates the
organisation whose effective policy information is to be retrieved;
or, if NULL, the RS Policy's policy information is indicated.
(If non-NULL, this string is interpreted as a short PGO name,
subordinate to the organisation naming domain-see
The policy_data parameter indicates the returned effective policy information.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has Read (r) permission on the object(s) specified by the organization parameter (that is, on both organisation and RS Policy object, or just RS Policy object).
The
The rpc_handle parameter identifies the RS server.
The account parameter indicates the account whose authentication policy information is to be retrieved; or if all the fields of account are NULL or empty strings the RS Policy's authentication policy information is indicated.
The auth_policy parameter indicates the retrieved policy information.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has Read (r) permission on the object specified by the account parameter.
The
The rpc_handle parameter identifies the RS server.
The account parameter indicates the account whose effective authentication policy information is to be retrieved; or if all the fields of account are NULL or empty strings the RS Policy's authentication policy information is indicated.
The auth_policy parameter indicates the retrieved policy information.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has Read (r) permission on the object(s) specified by the account parameter (that is, on both account and RS Policy object, or just RS Policy object).
The
The rpc_handle parameter identifies the RS server.
The account parameter indicates the account whose authentication policy information is to be modified; or if all the fields of account are NULL or empty strings the RS Policy's authentication policy information is indicated.
The auth_policy parameter indicates the policy information that is to be written.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has Authentication Info (a) permission on the object specified by the account parameter.
This section specifies (in IDL/NDR) the RS's rs_pgo RPC interface.
The following are common data types and constants used in the rs_pgo interface.
The sec_rgy_domain_t data type represents the RS datastore's
PGO domains. For naming purposes (see
The following values are currently registered:
The principal domain. Its associated stringname is person.
The group domain. Its associated stringname is group.
The organisation domain. Its associated stringname is org.
Note that three PGO domains are identified in the rs_pgo
interface described in this section via the indicated
sec_rgy_domain_t values, not via the indicated stringnames.
These stringnames occur only in fully-qualified global names, as
used by the rdacl RPC interface and sec_acl API (see
The following values are currently registered:
PGO item is an alias.
PGO item is required (cannot be deleted).
For a group item, indicates that the group can occur in a concurrent group set; that is, can occur as a secondary (non-primary) group associated with some principal or account. Has no meaning on a principal item or an organisation item.
Its fields are the following:
UUID associated with item. This is the definitive identifier
of a PGO item, in the sense that it cannot be changed (see
Local-ID associated with item.
Quota associated with a principal item (this is not meaningful for group or organisation items).
Flag word associated with item.
Human-friendly full name of item-or, for that matter, any other human-friendly informative (annotation) data that may be convenient. For example, a PGO item named principal/root might have a fullname of "M. Root, the Superuser". (Note that this example is strictly illustrative-there is no notion in DCE Security that corresponds to the traditional notion of superuser as defined in the security architecture of some local systems.)
The rs_pgo_id_key_t data type represents the data
necessary for a lookup-by-UUID query in the RS datastore.
Its fields are the following:
UUID of the object being sought (that is, the item to be matched by the query).
The scope of the lookup-by-UUID. This is either the sought object's name, or the name of a directory which is an ancestor (not necessarily an immediate parent) of the sought object.
Its fields are the following:
Local-ID of the object being sought (that is, the item to be matched by the query).
The scope of the lookup-by-local-ID. This is either the sought object's name, or the name of a directory which is an ancestor (not necessarily an immediate parent) of the sought object.
The following values are currently registered:
Query keyed by name (sec_rgy_name_t).
Query keyed by UUID (rs_pgo_id_key_t).
Query keyed by local-ID (rs_pgo_unix_num_key_t).
Query keyed by the next PGO item following the current cursor
position. (See the discussion at
Indicates an empty rs_pgo_query_key_t (that is, a non-existent value of this data type). It is used in error cases, to indicate that a item being sought could not be found.
Note that the rs_pgo_query_none value of the query discriminator matches the default arm of the union switch.
Its fields are the following:
Name of item.
RS datastore information associated with item.
The
The rpc_handle parameter identifies the RS server.
The name_domain parameter identifies the PGO domain in which the new item is to be created.
The pgo_name parameter identifies the (name of the) PGO item, subordinate to name_domain, that is to be created. Only terminal objects (that is, PGO items per se) are valid named items in this context-not intermediate directories (between the root of name_domain and the named PGO item), which are created automatically by this operation if necessary (namely, if they do not already exist), and cannot be created directly.
The pgo_item parameter indicates the information that is to be stored in the RS's datastore for the newly created PGO item. The fields of pgo_item indicate the following:
If id is a nil-valued UUID (see referenced Open Group DCE 1.1 RPC Specification), the RS server
will generate a non-nil value for the UUID of the added item.
If the sec_rgy_prop_embedded_unix_id property is set
for the RS server, the generated UUID will be a security-version
UUID (see
If id is non-nil, it will be used as the UUID of the
created item. If the sec_rgy_prop_embedded_unix_id
property is set, the UUID will be inspected for the correct
(security) version (see
If unix_num = -1, the RS server will generate the local-ID of the created item; or, if the RS server's sec_rgy_prop_embedded_unix_id property is set and the id field is non-nil, the local-ID of the created item will be extracted from id.
If unix_num != -1, it will be used as the local-ID of the created item. If the RS server's sec_rgy_prop_embedded_unix_id property is set and the id field is non-nil, then unix_num must match the local-ID embedded in id.
The quota for created principal items. (Has no meaning for group or organisation items.)
Flag word associated with this PGO item.
Human-friendly full name associated with this PGO item.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has Insert (i) permission on the parent container of the created PGO item (that is, the container in which the PGO item is to be created).
The
The rpc_handle parameter identifies the RS server.
The name_domain parameter identifies the PGO domain from which the PGO item is to be deleted.
The pgo_name parameter identifies the PGO item, subordinate to name_domain, to be deleted. Only terminal objects (that is, PGO items per se) are valid named items in this context- not intermediate directories (between the root of name_domain and the named item), which are deleted automatically by this operation if necessary (namely, if this operation deletes the last entry subordinate to them), and cannot be deleted directly.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has Delete Item (D) permission on the PGO item to be deleted, and Delete (d) permission on the parent container of that PGO item.
The
The rpc_handle parameter identifies the RS server.
The name_domain parameter identifies the PGO domain of the PGO item which is to be modified.
The pgo_name parameter identifies the PGO item, subordinate to name_domain, to be modified.
The pgo_item parameter indicates the new information that
is to be written in the RS's datastore for the indicated PGO
item. The fields of pgo_item that are generally modifiable
are: quota, flags, and fullname. In general,
the id field (and hence the unix_num field)
cannot be modified by
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: If quota or flags or unix_num is being changed, this operation succeeds only if the calling client has Management Info (m) permission on the PGO item. If fullname is being changed, this operation succeeds only if the calling client has Fullname (f) permission on the PGO item.
The
The rpc_handle parameter identifies the RS server.
The name_domain parameter identifies the PGO domain of the PGO item which is to be renamed.
The old_name parameter identifies the PGO item, subordinate to name_domain, whose name is to be modified.
The new_name parameter indicates the new name of the PGO item whose name is being modified.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has Name (n) permission on the PGO item. If only the last component of the PGO item's name is being changed, the calling client requires no other permissions. If the PGO item is being moved from one container to another (that is, if some part of the PGO item's name other than just its last component is being changed), this operation succeeds only if the calling client has in addition Delete (d) permission on the parent container of old_name, and Insert (i) permission on the parent container of new_name.
The
The rpc_handle parameter identifies the RS server.
The name_domain parameter identifies the PGO domain to be searched. (Searches are limited to a single domain per call.)
The key parameter identifies the query (or lookup) key
on which the search is to be based. Namely, the query
discriminator of key (see
This indicates a lookup-by-name search. The PGO item (there can be at most one) at or following item_cursor and having the name specified by (*key).tagged_union.name is to be matched. (No scope information is relevant in this case.)
This indicates a lookup-by-UUID search. The next PGO item
at or following item_cursor and having the UUID specified by
(*key).tagged_union.id_key.id, whose name lies within
the scope specified by (*key).tagged_union.id_key.scope,
is to be matched. Called successively with the same UUID,
This indicates a lookup-by-local-ID search. The next PGO
item at or following item_cursor and having the local-ID
specified by (*key).tagged_union.unix_num_key.unix_num,
whose name lies within the scope specified by
(*key).tagged_union.unix_num_key.scope, is to be matched.
Called successively with the same local-ID,
This indicates that the next PGO item at or following item_cursor, and whose name lies within the scope specified by (*key).tagged_union.scope, is to be matched. Thus, successive queries of this type retrieve all PGO items whose names lie within the indicated scope (or within the entire indicated name_domain, in the case where the scope is the NULL string, indicating the root directory of name_domain).
The allow_aliases parameter, if non-0 (TRUE), indicates that an alias PGO item matching key satisfies the query request. If 0 (FALSE), only a distinguished (that is, non-alias) PGO item can satisfy the query request.
The cache_info parameter indicates cache information (see
The result parameter returns the retrieved information for the matched PGO item.
The status of this operation is indicated by the result element of the result parameter.
The ritual for using
Required rights: This operation succeeds only if the calling client has Read (r) permission on the matched PGO item.
The
The rpc_handle parameter identifies the RS server.
The name_domain parameter identifies the PGO domain to be searched.
The requested_result_type parameter indicates the query key to which key is to be converted.
On input, the key parameter indicates a query key which is to be converted. On output, it indicates the converted query key.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: In the cases where no name query key is involved (that is, the UUID->local-ID and local-ID->UUID cases), this operation succeeds unconditionally. In the cases where a name query key is involved (that is, the name->UUID, UUID->name, name->local-ID and local-ID->name cases), this operation succeeds only if the calling client has at least some (any) access permission to the PGO item.
The
The rpc_handle parameter identifies the RS server.
The name_domain parameter indicates the domain of interest (it must be sec_rgy_domain_group or sec_rgy_domain_org; it may not be sec_rgy_domain_person).
The go_name parameter indicates the group or organisation item, subordinate to name_domain, to which the member is to be added.
The person_name parameter indicates the principal item to be added to the go_name item.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has Membership (M) permission on the item indicated by go_name. If further go_name is a group (as opposed to an organisation), then the calling client must also have Group (g) permission on the principal indicated by person_name.
The
The rpc_handle parameter identifies the RS server.
The name_domain parameter indicates the domain of interest (it must be sec_rgy_domain_group or sec_rgy_domain_org; it may not be sec_rgy_domain_person).
The go_name parameter indicates the group or organisation item, subordinate to name_domain, from which the member is to be deleted.
The person_name parameter indicates the principal item to be deleted from the go_name item.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has Membership (M) permission on the item indicated by go_name.
The
The rpc_handle parameter identifies the RS server.
The name_domain parameter indicates the domain of interest (it must be sec_rgy_domain_group or sec_rgy_domain_org; it may not be sec_rgy_domain_person).
The go_name parameter indicates the name of the group or organisation item, subordinate to name_domain, for which membership is being queried.
The person_name parameter indicates the principal item whose membership in the go_name item is being queried.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The boolean32 return value returns non-0 (TRUE) if person_name is a member of go_name, and 0 (FALSE) otherwise.
Required rights: This operation succeeds only if the calling client has Test (t) permission on the item indicated by go_name.
The
The rpc_handle parameter identifies the RS server.
The name_domain parameter indicates the PGO domain of interest. If name_domain is sec_rgy_domain_group or sec_rgy_domain_org, the principals which are members of the group or organisation indicated by go_name are to be returned in member_list[]. If name_domain is sec_rgy_domain_person, the groups of which the principal indicated by go_name is a member are to be returned in member_list[].
The go_name parameter indicates the PGO item, subordinate to name_domain, whose membership is being queried.
The member_cursor parameter indicates, on input, the current cursor position (so that the items at and following this position are eligible to be retrieved on the current invocation of this operation); on output, it indicates the cursor position next following the retrieved item(s).
The max_members parameter indicates the maximum number of members to be retrieved in member_list[].
The member_list parameter indicates the retrieved members.
The number_supplied parameter indicates the actual number of retrieved members.
The number_members parameter indicates the total number of members available for the go_name item. (The member_cursor parameter is used to coordinate multiple invocations to retrieve the complete list of members.)
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has Read (r) permission on the go_name item.
This section specifies (in IDL/NDR) the RS's rs_acct RPC interface.
The following are common data types and constants used in the rs_acct interface.
The following values are currently registered:
The principal name identifies the account; that is, the account (<P, G, O>) is uniquely determined by its <P> component.
This is the only value required to be supported by this revision of DCE. (That is, an RS datastore in which no principal is associated with more than one account is conformant with DCE.)
The principal and group names identify the account; that is, the account (<P, G, O>) is uniquely determined by its <P, G> component pair-and moreover this is a minimal query key (that is, the account's <P> component does not constitute a query key).
The principal, group and organisation names identify the account-and moreover this is a minimal query key (that is, the account's <P, G> component pair does not constitute a query key).
The following values are currently registered:
Account is valid for logging in.
Allow account to be a server. (That is, this account's principal name may be used as a targeted server name in tickets issued in this cell.)
Allow account to be a client. (That is, this account's principal name may be used as a named client name in tickets issued in this cell.)
The following values are currently registered:
Allow issuance of certificates based on (privilege-)ticket-granting-ticket authentication. This must always be set (to 1).
Its fields are the following:
The UUID of the principal, within its cell.
The UUID of the cell.
Its fields are the following:
Identity of the principal who created this account. (Set by the RS server, not directly by the administrator.)
Time of creation of this account. (Set by the RS server, not directly by the administrator.)
Identity of the last principal to modify this account. (Set by the RS server, not directly by the administrator.)
Time of last modification of this account. (Set by the RS server, not directly by the administrator.)
Last date of validity of this account. (Typically, this indicates a date by which a reactivation of the account must be performed; for example, its password must be changed.)
First date of validity of this account. (The KDS will not honour tickets issued before this date.)
Flag word for this account.
Authentication flag word for this account.
The following values are currently registered:
This password is good. The absence of this bit forces the user to change his or her password.
The following values are currently registered:
Invalid password/key.
Plaintext password.
DES key.
The following values are currently registered:
Invalid key. This is a reserved value to be used in certain service requests; for example, in key lookup requests for the current key whose version number is not known a priori, or in key update requests where the next available version number is to be assigned to the new key.
Invalid password. This is a reserved value to be used in certain service requests; for example, in password initialization for cell initialization when a (new) cell is being added, or when initializing the registry information.
The mapping of bit-vectors to byte-vectors is the usual one (see
Its fields are the following:
Version number.
A string used to modify the password-to-key generation algorithm (see
Either a plaintext password (plain) or a DES key (des_key), depending on whether key_type is equal to sec_passwd_plain or sec_passwd_des, respectively.
For a description of how this data type is used, see
The following values are currently registered:
Invalid checksum.
CRC§G checksum, with seed 0 (see
RSA-MD4-CKSUM which is non-invertible and of length 128 bits,
derived from an arbitrary length bit-message (see
RSA-MD4-DES-CKSUM which is non-invertible and of length 128 bits,
derived from an arbitrary length bit-message by prepending an 8 octet
confounder and applying the RSA-MD4-CKSUM, and with initialisation
vector zero (see
DES-CBC-CKSUM, with a specified key, and with initialisation vector
equal to the same key (see
Its fields are the following:
Type of checksum data.
Length of checksum data. This is 0 when chksum_type is sec_chksum_none; 4 when chksum_type is sec_chksum_crc32; 8 when chksum_type is sec_chksum_des_cbc; 16 when chksum_type is either sec_chksum_rsa_md4 or sec_chksum_rsa_md4_des.
The checksum data itself.
For a description of how this data type is used, see
Its fields are the following:
An annotation field, holding any convenient information (similar to the fullname field of sec_rgy_pgo_item_t).
An annotation field, holding any convenient information (typically, this field is interpreted as a user's home directory, in the sense of a POSIX-conformant operating system).
An annotation field, holding any convenient information (typically, this field is interpreted as a user's login shell, in the sense of a POSIX-conformant operating system).
Version number of long-term cryptographic key. (This number is assigned by the RS server, not by an administrator.)
Time of last password/key update (see
User flag word.
User's (protected) local password. Its semantics are implementation-dependent. Typical implementations use it to support UNIX password management, as follows.
If the key input parameter to
This field is ignored on input to
The following values are currently registered (see
Indicates user-level information.
Indicates administrative-level information.
Indicates password/key information.
Indicates datastore query key information.
Its fields are the following:
The number of bytes of encrypted data.
The encrypted pickle itself.
The following values are currently registered:
Trivial encryption, as described in
DES-CBC-CRC encryption, as described in
typedef struct {
unsigned32 num_bytes;
[size_is(num_bytes), ptr] byte *bytes;
} sec_bytes_t;
Its fields are the following:
The number of bytes of network data.
The bytes of network data. This network data is a pickle of some sort.
typedef struct {
sec_etype_t etype;
sec_key_version_t ekvno;
sec_bytes_t ebytes;
} sec_encrypted_bytes_t;
Its fields are the following:
An encryption type for encrypting data. The supported
etype's are enumerated in
A version number representing the generic encryption type. Presently, the only version number supported for this generic type is 0.
The actual bytes of encrypted data that are available to servers.
Its fields are the following (for further elucidation of all these fields and how they are used, see below):
Encryption type used by the client to encrypt key and checksum.
Key type of the client's key, used by the client to encrypt key and checksum.
Key version number of the client's key, used by the client to encrypt key and checksum.
Length (in bytes) of the (unencrypted) sec_passwd_rec_t pickle
indicated by key-as opposed to the length of the encrypted
pickle (which is already determined by key itself), which might
include some padding appended to the unencrypted sec_passwd_rec_t
pickle, depending on the encryption algorithm used.
Encrypted sec_passwd_rec_t pickle. In the terminology
and notation of
Encrypted sec_chksum_t pickle. In the terminology
and notation of
A principal (acting as an RS RPC client) stores keying information
(password or cryptographic key) in a sec_passwd_rec_t record (see
On the receiving end, the RS server retrieves the client principal's
(authenticated) identity from the protected RPC runtime (see
Its fields are the following:
Principal UUID.
Group UUID.
Organisation UUID.
Its fields are the following:
Principal local-ID.
Group local-ID.
Organisation local-ID.
The rs_acct_info_t data type represents a performance-optimised
data type for returning account data. In the success case (status =
error_status_ok), rs_acct_info_t represents a value of type
struct result (see definition below); in the error case (status
!= error_status_ok) it is empty (thereby preventing unnecessary
marshalling/unmarshalling of data in the error case).
The fields of result are the following:
Indicates the minimal portion of the account's <P, G, O> name triple that is required to identify the account.
The account's UUID.
The account's local-ID.
The account's administration-level information.
The account's user-level information.
The interface UUID and version number for the rs_acct interface
are given by the following:
The
The rpc_handle parameter identifies the RS server.
The login_name parameter identifies the (name of the) account to be registered (added).
The key_parts parameter indicates the minimal portion of login_name's <P, G, O> name triple that is required to identify the account.
The user_part parameter indicates the user-level portion of the account's datastore data.
The admin_part parameter indicates the administrative-level portion of the account's datastore data.
The key parameter indicates the long-term cryptographic
key to be stored in the RS's datastore for this account. Namely,
if key carries a cryptographic key, that is stored as
the account's long-term key; if key carries a password
(and possibly also pepper), then that is transformed into a
cryptographic key according to the type specified by the
new_keytype parameter (see
The new_keytype parameter indicates the type of the long-term cryptographic key determined by key. (If key carries a cryptographic key instead of a password, then the type of that key must be the same as key.)
The new_key_version parameter indicates the version number of the long-term cryptographic key determined by key. This version number may be specified by the client (in the version_number field of the sec_passwd_rec_t structure of key). If the client specifies sec_c_key_version_none, then the server assigns it. In either case, the version number is returned to the client in new_key_version. (In the sec_c_key_version_none case, the server typically assigns the next smallest available version number; that is, 1 in the case of a new account, incrementing the old version number by 1 in the case of a pre-existing account.)
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has the following permissions on the principal component of the account to be added ((*login_name).pname): Management Info (m), Authentication Info (a) and User Info (u).
The
The rpc_handle parameter identifies the RS server.
The login_name parameter identifies the (name of the) account to be deleted.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has the following permissions on the principal component of the account to be deleted ((*login_name).pname): Management Info (m), Authentication Info (a) and User Info (u).
The
The rpc_handle parameter identifies the RS server.
The old_login_name parameter identifies the existing name associated with the account data.
The new_login_name parameter identifies the new name to be associated with the account data. The new principal component ((*new_login_name).pname) must be the same as the old principal component ((*old_login_name).pname).
The new_key_parts parameter indicates the minimal portion of new_login_name's <P, G, O> name triple that is required to identify the account.
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has Management Info (m) permission on the principal component of the existing account ((*old_login_name).pname).
The
The rpc_handle parameter identifies the RS server.
The cache_info parameter indicates cache information (see
The result parameter represents the result of this operation.
The status of this operation is indicated by the status of the result parameter.
Required rights: This operation succeeds only if the calling client has Read (r) permission on the principal component of the matched account ((*login_name).pname).
The
The rpc_handle parameter identifies the RS server.
The login_name parameter identifies the (name of the) account to be replaced (modified, written, updated).
The key_parts parameter indicates the minimal portion of the login_name's <P, G, O> name triple that is required to identify the account. (Even though key_parts is specified as both an input and output parameter, it is used only as an input parameter for this operation.)
The modify_parts parameter indicates which portion(s) of the account's datastore information is to be updated:
The user_part parameter indicates new user-level information.
The admin_part parameter indicates new administrative-level information.
The key parameter indicates a new long-term cryptographic key.
(See the description of the key parameter of
The new_keytype parameter indicates the type of the long-term
cryptographic key determined by key. (See the description
of the new_keytype parameter of
The new_key_version parameter indicates the version number or
number of the long-term cryptographic key determined by key.
(See the description of the new_key_version parameter of
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has the following permission(s) on the principal component of the account to be modified ((*login_name).pname):
The
The rpc_handle parameter identifies the RS server.
The login_name parameter identifies the (name of the) account whose project list is to be retrieved.
The projlist_cursor parameter indicates, on input, the current
cursor position (so that the concurrent groups at and following this
position are eligible to be retrieved on the current invocation of
this operation). On output, projlist_cursor indicates the cursor
position next following the retrieved concurrent group(s). (See
The max_number parameter indicates the maximum number of concurrent groups to be retrieved.
The supplied_number parameter indicates the number of retrieved concurrent groups.
The id_projlist parameter indicates the UUIDs of retrieved concurrent groups.
The unix_projlist parameter indicates the local-IDs of retrieved concurrent groups.
The num_projects parameter indicates the total number of concurrent groups associated with the account (that is, with (*login_name).pname). (The projlist_cursor parameter is used to coordinate multiple invocations to retrieve the complete project list of concurrent groups.)
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
Required rights: This operation succeeds only if the calling client has Read (r) permission on the principal component of the account ((*login_name).pname).
This section specifies (in IDL/NDR) the RS's rs_misc RPC interface.
The following are common data types and constants used in the rs_misc interface.
The fields of result are the following:
Indicates the minimal portion of the account's <P, G, O> name triple that is required to identify the account.
The account's UUIDs.
The account's local-IDs.
The account's user-level information.
The account's administration-level information.
The account's effective policy data.
The account's home cell's name.
The account's home cell's UUID.
The interface UUID and version number for the rs_misc interface
are given by the following:
The
The rpc_handle parameter identifies the RS server.
The login_name parameter identifies the (name of the) account whose information is to be retrieved.
The cache_info parameter indicates cache information (see
The result parameter represents the bulk of the information
returned by this operation.
The max_number parameter indicates the maximum number of concurrent groups to be retrieved.
The supplied_number parameter indicates the number of retrieved concurrent groups.
The id_projlist parameter indicates the UUIDs of retrieved concurrent groups.
The unix_projlist parameter indicates the local-IDs of retrieved concurrent groups.
The num_projects parameter indicates the total number of concurrent groups associated with the account (that is, with (*login_name).pname).
The status of this operation is indicated by the status of the result parameter.
Required rights: This operation supports name-based authorisation for local principals only (that is, those in the same cell as this RS server), in addition to the usual EPAC-based authorisation supported by other RS RPC operations (that is a special characteristic of this operation). In either case, this operation succeeds only if the calling client has Read (r) permission on the principal component of the account ((*login_name).pname).
The
The rpc_handle parameter identifies the RS server.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The retry parameter, if TRUE, indicates that a replica is responsive but not consistent (out of sync).
As input, the seqno parameter is set to NULL by the client. As output, seqno contains the reference sequence number required for subsequent polling attempts to a responsive but inconsistent replica.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The client calls rs_check_consistency() initially with a NULL seqno. The operation returns a retry value of TRUE and a reference seqno to be used for subsequent polling attempts to any replica that is responsive but inconsistent (out of sync).
This routine returns a value of TRUE if none of the polled replicas are incommunicado.
This section specifies (in IDL/NDR) the RS's rs_attr RPC interface.
The following are common data types and constants used in the rs_attr interface.
The sec_attr_component_name_t data type is
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.)
The rs_attr_cursor_t data type provides a datastore scan
cursor (that is, a position indicator) for iterative
database operations for schema and attribute interfaces.
Its fields are the following:
Object UUID of the RS server that initialized the cursor.
The RS object upon which an operation is currently being performed. For schema operations, this object is identified by the schema_name parameter of the operation; for attribute operations, it is identified by the component_name parameter.
Optionally identifies a list of entries to be operated on, identified by the attr_list parameter of the operation (not used for schema operations).
The datastore entry for the current operation. For schema operations, this is the sequential id of the current schema entry. For attribute operations, this is the number of entries remaining in the datastore.
The approximate number of datastore entries that remain to be seen.
If 0, an uninitialized cursor. Set to 1 at initialization.
The sec_attr_bind_auth_info_type_t data type is an enumeration
that defines whether or not an RPC binding is authenticated. 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 following values are currently registered:
The binding is not authenticated.
The binding uses DCE shared-secret key authentication.
The sec_attr_bind_auth_info_t data type is a discriminated
union that defines authorization and authentication parameters for
an RPC 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:
Specifies whether or not the binding is authenticated.
A tagged union specifying the method of authorization and the authorization parameters. For unauthenticated bindings (info_type is sec_attr_bind_auth_none), no parameters are supplied. For authenticated bindings (info_type is sec_attr_bind_auth_dce), the following union is supplied:
The principal name of the RS server referenced by the binding handle.
The protection level for RPC calls made using the 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 protect_level, the level is automatically upgraded to the next higher supported level. The possible protection levels are as follows:
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.)
Performs no authentication; tickets are not exchanged, session keys are not established, client EPACs or names are not certified, and transmissions are in the clear. Note that although uncertified EPACs should not be trusted, they may be useful for debugging, tracing, and measurement purposes.
Authenticates only when the client establishes a relationship with the server.
Authenticates only at the beginning of each RPC call when the RS server receives the request.
This level does not apply to RPC 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.
Ensures that all data received is from the expected client.
Ensures and verifies that none of the data transferred between client and server has been modified. This is the highest protection level that is guaranteed to be present in the RPC runtime.
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.
Specifies the authentication service to use. The exact level of protection provided by the authentication service is specified by protect_level (see above). The supported authentication services are as follows:
No authentication; no tickets are exchanged, no session keys established, client EPACs or names are not transmitted, and transmissions are in the clear. Specify rpc_c_authn_none to turn authentication off for RPC calls made using this binding.
DCE shared-secret key authentication.
Default authentication service. The current default authentication service is DCE shared-secret key; therefore, specifying rpc_c_authn_default is equivalent to specifying rpc_c_authn_dce_secret .
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:
Server performs no authorization. This is valid only if authn_svc is set to rpc_c_authn_none (see above), specifying that no authentication is being performed.
Server performs authorization based on the client principal name. This value cannot be used if authn_svc is rpc_c_authn_none (see above).
Server performs authorization using the client's DCE Extended Privilege Attribute Certificate (EPAC) sent to the server with each RPC call made with this binding. Generally, access is checked against DCE Access Control Lists (ACLs).
The sec_attr_bind_type_t data type specifies the
binding type for attribute operations.
The following values are currently registered:
RPC string binding.
DCE protocol tower representation of bindings.
Name of trigger server for lookup in a directory service.
The sec_attr_twr_ref_t data type represents a pointer to an
RPC protocol tower (twr_t, defined in
Appendix L, Protocol Tower Encoding, of the referenced Open Group DCE 1.1 RPC Specification).
The sec_attr_twr_set_t data type is a structure that defines an array of towers. This data is used by the client to pass an unallocated array of towers, which the server must allocate.
Its fields are the following:
The number of towers in the array.
Pointers to RPC protocol towers.
The sec_attr_bind_svrname data type specifies the
name of the server for lookup in a directory service.
This data type contains the following elements:
The binding type used for this server (see
The actual string representation of the server name.
The sec_attr_binding_t data type is the
trigger server's binding union.
This data type contains the following elements:
RPC string binding.
DCE protocol tower representation of binding.
Name of trigger server in directory namespace.
The sec_attr_bind_info_t data type specifies
attribute trigger binding information.
This data type contains the following elements:
The binding authorization information.
The number of binding handles in bindings.
An array of RPC binding handles.
The sec_attr_enc_printstring_p_t data type is
a pointer to a printstring encoding type structure.
The sec_attr_enc_str_array_t data type
defines a printstring array.
This data type contains the following elements:
The number of strings in the array.
An array of pointers to printstrings.
The sec_attr_enc_bytes_t data type defines the length of
attribute encoding values for attributes whose values are
defined to be byte strings.
This data type contains the following elements:
The size of the data array.
The length of attribute encoding data.
The sec_attr_i18n_data_t data type defines the codeset
and value length of the encoding values of attributes whose
values are defined to be internationalized byte strings.
This data type contains the following elements:
Identifier for the OSF-registered codeset used to encode the data.
The size of the data array.
The length of attribute encoding data.
The sec_attr_enc_attr_set_t data type supplies the
UUIDs of each member of a set of attributes.
This data type contains the following elements:
The total number of attributes in the attribute set.
An array containing the UUID for each member in the set.
The sec_attr_encoding_t data type is an enumerator that
contains attribute encoding tags used to define the legal encodings
for attribute values.
This data type contains the following elements:
The attribute value can be of any legal encoding type. This encoding tag is legal for a schema entry only; an attribute entry must contain a specified encoding type.
The attribute has no value.
The attribute value is a signed 32-bit integer.
The attribute value is a printable IDL string in DCE Portable Character Set.
The attribute value is an array of printstrings.
The attribute value is a string of bytes. The string is assumed to be a pickle or some other self-describing type.
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.
The attribute value is an internationalized string of bytes with a tag identifying the OSF-registered codeset used to encode the data.
The attribute value is a UUID, of type uuid_t.
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.
The attribute value is a sec_attr_bind_info_t data type that specifies DCE server binding information.
This encoding type, returned by an rs_attr_lookup call, informs the client agent of the trigger binding information of an attribute with a query trigger.
Attribute values must conform to the attribute's encoding type.
The sec_attr_value_t data type defines the values of
attributes.
This data type contains the following elements:
An attribute encoding tag that specifies the type of attribute
value (see
A tagged union whose contents depend on attr_encoding as follows:
If attr_encoding is... | Then tagged_union contains... |
---|---|
sec_attr_enc_void | NULL |
sec_attr_enc_integer | signed_int (32-bit signed integer) |
sec_attr_enc_printstring | printstring (string pointer) |
sec_attr_enc_printstring_array | string_array (pointer to an array of printstrings) |
sec_attr_enc_bytes sec_attr_enc_confidential_bytes | bytes (pointer to a structure of type sec_attr_enc_bytes_t) |
sec_attr_enc_i18n_data | idata (pointer to a structure of type sec_attr_i18n_data_t) |
sec_attr_enc_uuid | uuid (UUID) |
sec_attr_enc_attr_set | attr_set (pointer to a structure of type sec_attr_enc_attr_set_t) |
sec_attr_enc_binding | binding (pointer to a structure of type sec_attr_binding_info_t) |
The sec_attr_t data type defines an attribute.
This data type contains the following elements:
The UUID of the attribute.
The attribute value.
The sec_attr_vec_t data type defines an array of attributes.
This data type contains the following elements:
The number of elements in the attrs array.
An array of pointers to attributes.
The interface UUID for the rs_attr interface
is given by the following:
The
The rpc_handle parameter identifies the RS server.
The component_name parameter identifies the RS object on which to perform this operation.
The cur_num_attrs parameter contains the current total number of attributes associated with the RS object at the time of this call.
The cursor parameter contains the cursor initialized to the first attribute in the list of attributes associated with this object.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The component_name parameter identifies the RS object on which to perform this lookup operation.
As input, the cursor parameter is an initialized or uninitialized cursor to the RS object. As output, cursor is positioned just past the attributes returned as output to this call.
The num_attr_keys parameter specifies the number of elements in the attr_keys array. If the num_attr_keys is set to 0, this function will return all attributes that the caller is authorized to see.
The space_avail parameter specifies the size of the output attrs array.
The attr_keys[] parameter contains the attribute type UUIDs for the attribute instance(s) requested by this lookup. If the requested attribute type is associated with a query trigger, the *attr_keys.attr_value field may be used to pass in optional information required by the trigger query. If no information is to be passed in the *attr_keys.attr_value field (whether the type indicates a trigger query or not), the *attr_keys.attr_value encoding type should be set to sec_attr_enc_void.
The num_returned parameter specifies the number of attribute instances returned in the attrs array.
The attrs[] parameter contains the attributes retrieved by UUID.
The num_left parameter contains the approximate number of attributes matching the search criteria that could not be returned due to space constraints in the attrs buffer. (This number may not be precise if the server allows updates between successive query calls.)
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The component_name parameter identifies the RS object on which to perform this operation.
As input, the cursor parameter is an initialized or uninitialized cursor to the RS object. As output, cursor is positioned just past the attributes returned as output to this call.
The num_attr_keys parameter specifies the number of elements in the attr_keys array. If the num_attr_keys is set to 0, this function will return all attributes that the caller is authorized to see.
The space_avail parameter specifies the size of the output attrs array.
The attr_keys[] parameter contains the attribute type UUIDs for the attribute instance(s) requested by this lookup. If the requested attribute type is associated with a query trigger, the *attr_keys.attr_value field may be used to pass in optional information required by the trigger query. If no information is to be passed in the *attr_keys.attr_value field (whether the type indicates a trigger query or not), the *attr_keys.attr_value encoding type should be set to sec_attr_enc_void.
The num_returned parameter specifies the number of attribute instances returned in the attrs array.
The attrs[] parameter contains the attributes retrieved by UUID.
The num_left parameter contains the approximate number of attributes matching the search criteria that could not be returned due to space constraints in the attrs buffer. (This number may not be precise if the server allows updates between successive query calls.)
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The component_name parameter identifies the RS object on which to perform this operation.
The attr_name parameter is the name of the attribute to be retrieved.
The attr parameter is the first attribute instance of the named type.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The component_name parameter identifies the RS object on which to perform this operation.
The num_to_write parameter specifies the number of attributes in the in_attrs array.
The in_attrs[] parameter contains the attribute instances to be written.
The failure_index parameter, in an error case, contains the array index of the element in in_attrs that caused this update to fail. If the failure cannot be attributed to a specific attribute, failure_index is set to -1.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The component_name parameter identifies the RS object on which to perform this operation.
The num_to_test parameter specifies the number of control attributes in the test_attrs array.
The test_attrs[] parameter contains control attributes whose types and values must exactly match those of instances on the RS object in order for the update to take place.
The num_to_write parameter specifies the number of attributes in the update_attrs array.
The update_attrs[] parameter contains the attribute instances to be written.
The failure_index parameter, in an error case, contains the array index of the element in in_attrs that caused this update to fail. If the failure cannot be attributed to a specific attribute, failure_index is set to -1.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The component_name parameter identifies the RS object on which to perform this operation.
The num_to_delete parameter specifies the number of attributes in the attrs array.
The attrs[] parameter contains the attributes to be deleted.
The failure_index parameter, in an error case, contains the array index of the element in in_attrs that caused this update to fail. If the failure cannot be attributed to a specific attribute, failure_index is set to -1.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The component_name parameter identifies the RS object on which to perform this operation.
The attr_id parameter specifies the UUID of the attribute for which a referral is being sought.
The towers parameter specifies the binding information for a suitable update site.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The component_name parameter identifies the RS object on which to perform this operation.
The num_attr_keys parameter specifies the number of elements in the attr_keys array.
The attr_keys[] parameter contains the attribute type UUIDs for the attribute instance(s) requested by this lookup.
The attr_list parameter contains an attribute vector allocated by the server containing all of the attributes matching the search criteria.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
This section specifies (in IDL/NDR) the RS's rs_attr_schema
RPC interface.
The following are common data types and constants used in the rs_attr_schema interface.
The sec_attr_acl_mgr_info_t structure contains the access
control information defined in a schema entry for an attribute.
This data type contains the following elements:
The UUID of the ACL manager type that supports the object type
to which the attribute can be attached. See
The permission bits needed to access the attribute's value.
The permission bits needed to update the attribute's value.
The permission bits needed to test the attribute's value.
The permission bits needed to delete an attribute instance.
Refer to
The sec_attr_sch_entry_flags_t data type is a flag word used
to specify schema entry flags.
The following values are currently registered:
No schema entry flags.
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, there is no check for uniqueness during attribute writes.
This attribute type may be multi-valued; in other words, multiple instances of the same attribute type can be attached to a single object. If this flag is not set, only one instance of this attribute can be attached to a given object.
This schema entry can not be deleted through any interface or by any user. If this flag is not set, then the entry can be deleted by any authorized user.
The system-defined default value (if any) for this attribute will be returned on a client query if an instance of this attribute doesn't exist for the queried object. If this flag is not set, no search/return of system default values will take place. (If the attribute does not not exist and this flag is FALSE (0), then no attribute instance will be returned.)
The sec_attr_intercell_action_t data type specifies the
action that should be taken by the Privilege (PS) 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 data type contains the following elements:
If the sec_attr_sch_entry_unique entry flag is set for this schema entry, retain the attribute from the foreign cell only if its value is unique among all attribute instances of this attribute type within the current cell. If sec_attr_sch_entry_unique is not set, retain the foreign attribute.
Unconditionally discard the foreign attribute.
Use the binding information in the trig_binding field of the sec_attr_schema_entry_t for this schema entry 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).
The sec_attr_trig_type_flags_t data type is
a flag word used to indicate schema trigger types.
The following values are currently registered:
No trigger type entry flags.
Attribute type is configured with a query trigger. When this flag is set, the following things happen during a lookup request for this attribute type:
If this flag is set and an update request is made for this attribute type, the input values of the update request are ignored and the client creates a "stub" attribute instance as a marker. Modifications to the attribute value must occur at the trigger server.
Attribute type is configured with an update trigger. When this flag is set, the following things happen during an update request for this attribute type:
The sec_attr_acl_mgr_info_set_t data type
defines an attribute's ACL manager set.
The structure consists of the following elements:
Specifies the number of ACL managers in the ACL manager set.
Pointers to a set of ACL manager types and their associated permission sets.
The sec_attr_schema_entry_t data type defines a complete
attribute entry for the schema catalog. The entry is identified by
both name and UUID. Although either can be used as a retrieval key,
the name should be used for interactive access to the attribute
and the UUID for programmatic access.
This data type contains the following elements:
The name of the attribute type.
The UUID of the attribute type.
The encoding type for this attribute (see
The ACL manager types (and their associated permission bits) that support objects on which attributes of this type can be created.
The schema entry flag settings for this attribute type (see
Flag indicating how the Privilege Service will handle
attributes from a foreign cell (see
Flag indicating whether a trigger can perform update or
query operations for this attribute type (see
Binding information for the attribute trigger.
Definition of the objects to which this attribute type can be attached.
Comment text.
The sec_attr_schema_entry_parts_t data type is a flag word
used during an update to specify which fields of an input schema
entry (of type sec_attr_schema_entry_t) contain modified
information for the update.
This data type contains the following flags:
Modified information for the attr_name field.
Modified information for the acl_mgr_set field.
Not applicable in the current release.
Modified information for the sec_attr_sch_entry_reserved setting of the schema_entry_flags field.
Modified information for the sec_attr_sch_entry_use_defaults setting of the schema_entry_flags field.
Modified information for the intercell_action field.
Not applicable in the current release.
Modified information for the trig_binding field.
Modified information for the comment field.
The interface UUID for the rs_attr_schema interface is
given by the following:
The
The rpc_handle parameter identifies the RS server.
The schema_name parameter identifies the schema object on which to perform this operation.
The schema_entry parameter identifies the schema entry to be created. Values must be supplied for all of the fields of the input sec_attr_schema_entry_t structure, with the exception of the trig_types, trig_bind, and comment fields, which are all optional.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The schema_name parameter identifies the schema object to be deleted.
The attr_id parameter contains the UUID for the attribute type of the entry being deleted.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The schema_name parameter identifies the schema object on which to perform this operation.
The modify_parts parameter is a flag which identifies which fields of the schema_entry parameter are to be updated. Fields not indicated by modify_parts, or fields which are not permitted to be modified, will retain their current values.
The schema_entry parameter specifies a sec_attr_schema_entry_t data structure whose fields are NULL except for those fields which are being modified (as indicated by the modify_parts parameter).
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
If a field is indicated by its flag in modify_parts, that
field from the input schema entry will completely replace
the current field of the existing schema entry. All other
fields will remain untouched.
The
The rpc_handle parameter identifies the RS server.
The schema_name parameter identifies the schema object on which to perform this operation.
The cur_num_entries parameter specifies the current total number of entries in the schema at the time of this call.
The cursor parameter contains the cursor initialized to the first in the list of entries in the named schema.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The schema_name parameter identifies the schema object on which to perform this operation.
As input, the cursor parameter is an initialized or uninitialized cursor to the schema object. As output, cursor is positioned just past the attributes returned as output to this call.
The num_to_read parameter specifies the size of the schema_entries array; that is, the maximum number of entries to be returned in this call.
The num_read parameter specifies the actual number of entries returned in the schema_entries array.
The schema_entries[] array contains the entries read.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The schema_name parameter identifies the schema object on which to perform this operation.
The attr_name parameter is the name that identifies the entry to be read.
The schema_entry parameter contains the entry identified by attr_name.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The schema_name parameter identifies the schema object on which to perform this operation.
The attr_id parameter contains the UUID of the attribute type identifying the entry to be read.
The schema_entry parameter contains the entry identified by attr_id.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The schema_name parameter identifies the schema object on which to perform this operation.
The attr_id parameter contains the UUID that identifies the schema entry.
The towers parameter contains a pointer to an RPC protocol tower for the schema update site.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The schema_name parameter identifies the schema object on which to perform this operation.
The size_avail parameter specifies the size of the acl_mgr_types array; that is, the maximum number of ACL manager types that can be returned by this call.
The size_used parameter specifies the actual number of ACL Manager types returned in the array.
The num_acl_mgr_types parameter specifies the total number of ACL Manager types supported for this schema. If this value is greater than size_used, this operation should be called again with a larger acl_mgr_types buffer.
The acl_mgr_types[] array contains the UUIDs for the ACL Manager types that protect the objects associated with this schema.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The schema_name parameter identifies the schema object on which to perform this operation.
The acl_mgr_type parameter contains the UUID of the ACL Manager type for which the printstrings are to be returned.
The size_avail parameter specifies the size of the permstrings array; that is, the maximum number of printstrings that can be returned by this call.
The acl_mgr_type_chain parameter, if not set to uuid_nil, identifies the UUID of the next ACL Manager type in a chain supporting ACL Managers with more than 32 permission bits.
The acl_mgr_info parameter contains printstrings provides the name, help information, and complete set of supported permission bits for this ACL Manager type.
If set, the tokenize parameter specifies that the permission bit strings should be tokenized.
The total_num_printstrings parameter specifies the total number of permission printstrings supported by this ACL manager type. If this value is greater than size_avail, this function should be invoked again with a buffer of the appropriate size.
The size_used parameter contains the number of printstrings returned in the permstrings array.
The permstrings[] array contains the printstrings for each permission supported by this ACL manager type.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
There may be aliases for common permission combinations; by convention simple entries should appear at the beginning of the array, and combinations should appear at the appear at the end. When the tokenize flag is FALSE, the permission printstrings are unambiguous; therefore printstrings for various permissions can be concatenated. When tokenize is TRUE, however, this property does not hold and the strings should be tokenized before input or output.
If the ACL Manager type supports more than 32 permission bits, multiple manager types can be used-one for each 32-bit wide slice of permissions. When this is the case, the acl_mgr_type_chain parameter is set to the UUID of the next ACL Manager type in the set. The final result for the chain returns uuid_nil in the manager_type_chain parameter.
This section specifies (in IDL/NDR) the RS's rs_prop_acct RPC interface.
The following are common data types and constants used in the rs_prop_acct interface.
The rs_prop_acct_add_data_t data type is used for bulk account add propagations during replica initialization.
The RS server stores only the current key version for
most principals. If the principal has multiple key versions,
the additional versions must be propagated using
rs_prop_acct_add_key_version() (defined in
This data type contains the following elements:
The principal name of the account.
The user portion of the account (see
The administrative portion of the account (see
Indicates a new long-term cryptographic key. (See the description of
the key parameter of
If not NULL, contains the pickled and encrypted UNIX password (generated by the UNIX crypt() function). The plain arm of the decrypted and unpickled sec_passwd_rec_t contains the UNIX passwd.
During initialization, client is filled with nil_uuids to indicate that keys are encrypted under a session key. For incremental add propagations, client identifies the principal under whose key the account's key is encrypted.
Indicates the type of the long-term cryptographic key determined by
key. (See the description of the new_keytype parameter of
The rs_prop_acct_key_data_t data type is used
for bulking up multiple key propagations in
the rs_prop_acct_key_add_version() routine.
This data type contains the following elements:
Indicates a new long-term cryptographic account key.
If current is true the key is added as the current version and garbage_collect is ignored (current keys are never garbage collected). If current is false, the key is stored as a back-version of the account's key using garbage_collect.
The expiration time of the key.
The rs_replica_master_info_t and
rs_replica_master_info_p_t data type describes the current
master replica.
This data type contains the following elements:
The uuid_t of the current master replica.
The current sequence number corresponding to database updates.
The software revision number that the master replica is compatible with.
Timestamp of the latest replica update. This would correspond to the time which the last sequence number was propagated to replicas.
The last sequence number to be propagated out to the slave replicas.
The previous sequence number that has been propagated to slave replicas.
The interface UUID and version number for the rs_prop_acct interface
are given by the following:
The
The rpc_handle parameter identifies the RS server.
The num_accts parameter identifies the number of accounts described in the accts[] array.
The accts[] parameter provides num_accts security account descriptions.
The master_info parameter provides information on the current
master replica (see
If the propq_only flag is set the propagation information will only be added to the propagation queue. It will not be propagated.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The login_name parameter identifies the principal name of the account to be deleted.
The master_info parameter provides the security master replica information to the security slave replica.
If the propq_only flag is set the account delete operation is only added to the propagation queue. It is not propagated to the replicas.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The old_login_name parameter identifies the original principal name of the account to be renamed.
The new_login_name parameter identifies the new principal name of the account.
The master_info parameter provides information on the current master replica.
If the propq_only flag is set the rename information is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The login_name parameter identifies the account name to replace.
The modify_parts parameter is a flags describing the objects
within the account to replace. (see
The user_part parameter describes the user portion of the
account to be replaced (see
The admin_part parameter describes the admininstration portion
of the account to be replaced (see
The key parameter indicates a new long-term cryptographic
key. (See the description of the key parameter of
The client parameter identifies (by uuid) the principal under whose key the updated key and unix_passwd are encrypted. If client_ids contains NIL uuids, key and unix_passwd are encrypted under a session key.
The new_keytype parameter Indicates the type of the long-term
cryptographic key determined by key. (See the description of
the new_keytype parameter of
The unix_passwd parameter if not NULL, contains the pickled and encrypted UNIX password (generated by the UNIX crypt() function). The plain arm of the decrypted and unpickled sec_passwd_rec_t contains the UNIX passwd.
The time_now parameter is used for garbage collecting expired versions of multi-version keys.
The master_info parameter provides information on the current master replica.
If the propq_only flag is set the account replace information is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The login_name parameter identifies the account name to propagate the key types to.
The num_keys parameter identifies the number of entries in the keys[] array.
The keys[] parameter. If the current field of keys is TRUE, the key is added as the current version and the garbage_collect field is ignored (current keys are never garbage collected). If current is FALSE, the key is stored as a back-version of the account's key using garbage_collect.
The master_info parameter provides information on the current master replica.
The status parameter returns the status of the operation.
This section specifies (in IDL/NDR) the RS's rs_prop_acl RPC interface.
The following are common data types and constants used in the rs_prop_acl interface.
The rs_prop_acl_data_t data type is used for bulk
ACL replace propagations during initialization.
This data type contains the following elements:
The component name specifies the entity that the sec_acl is protecting.
Identifies the manager that is interpreting this sec_acl
Differentiates between the different types of sec_acls that an object can possess.
The list of acls for the component_name.
The interface UUID and version number for the rs_prop_acl interface
are given by the following:
The
The rpc_handle parameter identifies the RS server.
The num_acls parameter identifies the number of entries in the acls[] array.
The acls[] parameter is an array of num_acls acls to replace.
The master_info parameter provides information on the current master replica.
If the propq_only flag is set the acl replacement is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
This section specifies (in IDL/NDR) the RS's
rs_prop_attr RPC interface.
The following are common data types and constants used in the rs_prop_attr interface.
The rs_prop_attr_list_t data type contains an array of
security attributes associated with a security entry.
This data type contains the following elements:
The number of attributes within the attrs[] array
An array of size num_attrs of security attributes.
The rs_prop_attr_data_t data type contains a component name and
property attributes for a bulk propagation operation.
This data type contains the following elements:
The component name for the attribute list.
The property attributes of component_name.
The interface UUID and version number for the
rs_prop_attr interface are given by the following:
The
The rpc_handle parameter identifies the RS server.
The num_prop_attrs parameter identifies the number of property attribute entries in the prop_attrs[] array.
The prop_attrs[] parameter contains a component name and an array property attributes associated with than name. There are num_prop_attrs entries in the array.
The master_info parameter provides information on the current master replica.
If the propq_only flag is set the property attribute information is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The num_prop_attrs parameter identifies the number of property attribute arrays in the prop_attrs[] array.
The prop_attrs[] parameter contains a component name and an array property attributes associated with than name. There are num_prop_attrs entries in the array.
The master_info parameter provides information on the current master replica.
If the propq_only flag is set the property attribute delete information is only placed the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
This section specifies (in IDL/NDR) the RS's rs_prop_attr_schema
RPC interface.
The following are common data types and constants used in the rs_prop_attr_schema interface.
The rs_prop_attr_sch_create_data_t data type contains a
component name and an attribute schema definition for a propagation
operation.
This data type contains the following elements:
The schema_name specifies the entity to which the schema_entry attribute is attached.
Defines the attribute schema for schema_name.
The interface UUID and version number for the rs_prop_attr_schema
interface are given by the following:
The
The rpc_handle parameter identifies the RS server.
The num_schemas parameter identifies the number of entries in the schemas array being propagated.
The schemas[] parameter is an array of size num_schemas containing attribute names and schemas.
The master_info parameter provides information on the current master replica.
If the propq_only flag is set the attribute schema create information is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The schema_name parameter specifies the entity to which the attribute is attached.
The attr_id parameter is the attribute type uuid identifying the schema entry to be deleted
The master_info parameter provides information on the current master replica.
If the propq_only flag is set the attribute schema delete information is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The master_info parameter provides information on the current master replica.
If the propq_only flag is set the attribute schema update information is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
This section specifies (in IDL/NDR) the RS's rs_prop_pgo RPC interface.
The following are common data types and constants used in the rs_prop_pgo interface.
The rs_prop_pgo_add_data_t data type is used for bulk pgo
add propagations during initialization.
This data type contains the following elements:
The PGO name to add.
The identifying information for the name to add.
The client that originated the update.
The interface UUID and version number for the rs_prop_pgo
interface are given by the following:
The
The rpc_handle parameter identifies the RS server.
The domain parameter identifies the PGO domain of the entries to add.
The num_pgo_items parameter is the number of entries in the pgo_items[] array.
The pgo_items[] parameter is num_pgo_items number of domain PGO items to add.
The master_info parameter provides information on the current master replica.
If the propq_only flag is set the PGO add information is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The domain parameter identifies the PGO domain of the entry to delete.
The name parameter identifies the PGO item to delete.
The cache_info parameter indicates cache information (see
The master_info parameter provides information on the current master replica.
If the propq_only flag is set the PGO delete information is only placed on the propagation queue. It is not propagated to security replicas.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The domain parameter identifies the PGO domain of the entry to rename.
The old_name parameter provides the name the PGO item is changing from.
The new_name parameter provides the name the PGO item is changing tp.
The cache_info parameter indicates cache information (see
The master_info parameter provides information on the current master replica.
If the propq_only flag is set the PGO rename information is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The domain parameter identifies the PGO domain of the entry to replace.
The name parameter provides the name the PGO item is replacing.
The item parameter identifies the replacement item information.
The cache_info parameter indicates cache information (see
The master_info parameter provides information on the current master replica.
If the propq_only flag is set the PGO replace information is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The domain parameter identifies the PGO domain of the entry to add members to. This must be either group or organization.
The go_name parameter provides the PGO name to add members to.
The num_members parameter identifies the number of entries in the members array.
The members[] parameter is an array of num_members members to add.
The master_info parameter provides information on the current master replica.
If the propq_only flage is set the PGO add member information is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The domain parameter identifies the PGO domain of the entry to delete a member from. This must be either group or organization.
The go_name parameter identifies the PGO name to delete the member person_name from.
The person_name parameter identifies the member to to delete from the go_name PGO.
The master_info parameter provides information on the current master replica.
If the propq_only flag is set the PGO member delete information is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
The interface UUID and version number for the rs_prop_plcy
interface are given by the following:
The
The rpc_handle parameter identifies the RS server.
The properties parameter contains the registry property information to be updated.
The master_info parameter contains the master registry information.
If the propq_only flag is set the property information is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The organization parameter contains the organization name.
The policy_data parameter contains the organization policy information to be updated.
The master_info parameter contains the master registry information.
If the propq_only flag is set the policy information is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The account parameter describes the account that the authentication policy belongs to.
The auth_policy parameter contains the account authentication policy to be updated.
The master_info parameter contains the master registry information.
If the propq_only flag is set the policy information is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The cache_info parameter indicates cache information (see
The master_info parameter contains the master registry information.
If the propq_only flag is set the policy information is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
This section specifies (in IDL/NDR) the RS's rs_prop_replist
RPC interface, which provides RS operations to propagate replica
list updates from master to slave.
The interface UUID and version number for the rs_prop_replist
interface are given by the following:
The
The rpc_handle parameter identifies the RS server.
The rep_id parameter is a pointer to the identifier of the replica to add to the replist.
The rep_name parameter is a pointer to the name of the replica to add to the replist.
The rep_twrs parameter is a pointer to the base tower of the replica to be added.
The master_info parameter is the master replica information.
If the propq_only flag is set the replica information is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The rep_id parameter is a pointer to the identifier of the replica to add to the replist.
The master_info parameter is the master replica information.
If the propq_only flag is set the replica information is only placed on the propagation queue. It is not propagated to the security replicas.
The status parameter returns the status of the operation.
This section specifies (in IDL/NDR) the RS's rs_pwd_mgmt RPC
interface, which provides remote operations for password management
between a client and the Security daemon.
The following are common data types and constants used in the rs_pwd_mgmt interface.
The rs_pwd_mgmt_plcy_t data type specifies the policy
attribute set used by the password management server to
determine the password policy.
This data type contains the following elements:
The number of policy attribute entries in the plcy array.
An array of policy attributes for password management.
The interface UUID and version number for the rs_pwd_mgmt
interface are given by the following:
The
The rpc_handle parameter identifies the RS server.
The login_name parameter specifies the account that is requesting the information.
The pwd_mgmt_bind_info parameter specifies binding information contained in the pwd_mgmt_binding ERA.
The plcy_p parameter contains the attributes that indicate the password policy; that is, the pwd_val_type and pwd_mgmt_binding ERAs.
The pwd_val_type parameter specifies the validation type contained in the pwd_val_type ERA, which can be:
The status parameter returns the status of the operation.
This section specifies (in IDL/NDR) the RS's rs_qry RPC interface.
The interface UUID and version number for the rs_qry interface
are given by the following:
The
The rpc_handle parameter identifies the RS server.
The status parameter returns the status of the operation.
This section specifies (in IDL/NDR) the RS's rs_repadm RPC interface
that provide RS administration operations.
The following are common data types and constants used in the rs_repadm interface.
The rs_sw_version_t data type specifies the software
version of the name service.
The rs_replica_info_t data type contains information
about each replica.
This data type contains the following elements:
The current replica state (See
The cell UUID.
Instance UUID.
The UUID of the current master replica.
The replicas latest update sequence number.
The last sequence update timestamp.
The replica software revision number.
The compatible software revision number.
If this is info from the master, seqno of last update that has been propagated to all replicas. Otherwise, this element is meaningless.
TRUE, if master replica.
TRUE, if master is known.
The master replica identifier.
Seqno when master was designated.
The interface UUID and version number for the rs_repadm
interface are given by the following:
The
The rpc_handle parameter identifies the RS server.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
If the in_maintenance flag is TRUE the replica is put into maintenance mode. If FALSE it is taken out of maintenance mode.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The rep_info parameter is a pointer to the replica information returned by call.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The rep_info parameter is a pointer to the replica information returned by the call.
The rep_twrs parameter is a pointer to the replica towers returned by the call.
The master_twrs parameter is a pointer to the masters towers returned by the call.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The rep_id parameter identifies the slave to be initialized/re-initialized.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The new_master_id parameter is the id of the replica to become the new master.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The status parameter returns the status of the operation.
This section specifies (in IDL/NDR) the RS's rs_replist RPC interface.
The s_replist interfaces provide RS replica list management services.
The following are common data types and constants used in the rs_replist interface.
The rs_replica_item_t data type contains replica information.
This data type contains the following elements:
The UUID of the replica instance.
The (global) name service name.
If TRUE, this is a master replica.
If TRUE, this replica has been marked as deleted.
A pointer to the base replica tower type.
The Replica State describes the current state for
each replica.
This state contains the following elements:
The current state of the replica is unknown to the master.
The replica remains uninitialized while the database is being created. This is generally a temporary state during creation of a replica.
The replica is currently being inialized by another replica.
The replica is currently in service. The replica may either provide information for clients or become the master.
This state is in effect during a renaming of the replica.
This state is active when the database is in the process of being copied to a new replica or a replica that has requested a new database.
The replica is in maintenance mode.
The current master key is in the process of being changed.
When a replica receives the request to become a slave, this state is active.
A replica has closed its databases and is in the process of exiting.
The replica has been deleted from the replica list. rs_c_state_becoming_slave
During the time when a slave replica receives a request to become a master this state is active.
A replica that thinks it is the master has been informed by a slave that the slave believes a different replica to be the legitimate master.
The rs_replica_prop_t data type specifies
the replica propagation state.
The following values are currently registered:
An initialization request.
Replica is initializing.
An update request.
A delete request to a slave.
The rs_replica_prop_info_t data type
contains information associated with a propagation request.
This data type contains the following elements:
Type of propagation request.
The last propagation updated has been processed.
The last propagation sequence number.
The last propagation update time stamp.
Number of sequences updated in this propagation.
The rs_replica_comm_t data type specifies
the communication status between master and replica.
The following values are currently registered:
Communications between replicas is normal.
Communications between replicas have failed but have not exceeded the maximum number of retry attempts.
Communications between replicas have failed and exceeded the number of retry attempts.
The rs_replica_comm_info_t data type contains
summary information about the communication
state between the master and a replica.
This data type contains the following elements:
Replica communications state.
Last known replica communications status.
The offset in tower vector to current comm tower. If set to -1, there is no current comm tower.
The rs_replica_item_full_t data type contains
public information about a replica. This is the
information managed by the master.
This data type contains the following elements:
Instance UUID.
The (global) name service name.
If TRUE, this is a master replica.
If TRUE, this replica is marked as deleted.
Propagation information.
Communication information.
A pointer to the base replica tower type.
The interface UUID and version number for the rs_replist interface
are given by the following:
The
The rpc_handle parameter identifies the RS server.
The rep_id parameter provides the UUID identifier of the replica to add.
The rep_name parameter identifies the string name of the replica. The rep_twrs parameter contains a pointer to the replica tower type.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The rep_id contains the UUID identifier of the replica to be replaced.
The rep_name contains the replica name.
The rep_twrs parameter contains a pointer to the replica tower type.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The rep_id parameter identifies the replica to be deleted.
If the force_delete parameter is FALSE, send the delete to the replica identified by rep_id as well as the other replicas. If TRUE, do not send the delete to the replica identified by rep_id; it has been killed off some other way.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The marker parameter specifies the starting item in the replica list to be read. If marker is set to uuid_nil, the read starts at the beginning of the replica list. Information about a specific replica can be read by setting marker to its UUID and max_ents to 1.
The max_ents parameter specifies the number of entries to be read.
The n_ents parameter specifies the number of entries that have been read.
The replist[] array is a pointer array of n_ents rs_replica_item_ts.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The marker parameter specifies the starting item in the replica list to be read. If marker is set to uuid_nil, the read starts at the beginning of the replica list. Information about a specific replica can be read by setting marker to its UUID and max_ents to 1. As output, marker contains the uuid of the next replica on the list. When marker contains uuid_nil, there are no more replicas on the list.
The max_ents parameter specifies the number of entries to be read.
The n_ents parameter specifies the number of entries that have been read.
The replist[] array is a pointer array of n_ents rs_replica_item_ts.
The status parameter returns the status of the operation.
This section specifies (in IDL/NDR) the RS's rs_repmgr RPC interface.
The rs_repmgr interface provides operations between RS replicas.
The following are common data types and constants used in the rs_repmgr interface.
The rs_replica_auth_t data type contains authentication
information used between replicas.
This data type contains the following elements:
The Privilege Ticket-Granting Ticket type. The only currently supported type is krb5.
The Privilege Ticket-Granting Ticket byte length.
This is an array of bytes containing the ticket data.
The interface UUID and version number for the rs_repmgr interface
are given by the following:
The
The rpc_handle parameter identifies the RS server.
The rep_info pointer contains a structure describing the replica.
The rep_auth_info contains the information to authenticate the replica.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The init_id parameter identifies the initialize event to prevent redundant initializations.
The nreps parameter specifies the number of replicas in the init_from_rep_ids array.
The init_from_rep_ids[] array contains a list of replicas from which the slave is to initialize.
The init_from_rep_twrs[] array contains a list of replicas from which the slave is to initialize.
The master_info parameter contains propagation information held by the master replica.
The from_rep_id parameter contains the id of the replica from which the slave has initialized.
The last_upd_seqno parameter contains the sequence number of the last update.
The last_upd_ts parameter contains the timestamp of the last update.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The rep_id parameter specifies the replica which has been initialized.
The init_id parameter rs_replist2_master_init_rep_don
The from_rep_id parameter contains the UUID of the replica from which the rep_id replica has initialized.
The last_upd_seqno parameter indicates the last sequence number which was updated.
The last_upd_ts parameter indicates the timestamp the last sequence was updated.
The init_st parameter indicates whether or not the initialization actually succeeded.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The rep_id parameter specifies the UUID of the slave replica that has restarted.
The compat_sw_rev parameter contains the software compatibility version number.
The rep_twrs parameter is a pointer to the slaves tower set.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The master_info parameter supplies the slave with all of the necessary master replica information.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The base_prop_seqno parameter is the sequence number of the earliest update currently on the prop queue.
The old_master_info parameter is the master replica information from the current master.
The new_master_info parameter is the master replica information from the new master.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The copy_master_info parameter contains the master information that the providing replica supplies along with the database updates.
The rep_auth_info parameter includes a session key which is used by the two replicas to authenticate one other.
The encryption_key parameter is a key (pickled and encrypted with the session key) that the providing replica will use to encrypt the account authentication keys during propagation.
If the update is successful, the last_upd_seqno parameter contains the sequence number of the last update.
If the update is successful, the last_upd_ts parameter contains the timestamp of the last update.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The compat_sw_rev parameter specifies the software version number that the replica must have in order to run.
The master_info parameter specifies all of the master replica information. This is necessary to verify sequence updates.
The status parameter returns the status of the operation.
This section specifies (in IDL/NDR) the RS's rs_rpladmn RPC interface.
The interface UUID and version number for the rs_rpladmn interface
are given by the following:
The
The rpc_handle parameter identifes the replica to be stopped.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the replica to be put into (or out of) maintenance mode.
The in_maintenance parameter specifies the mode in which the replica is to be placed.
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The status parameter returns the status of the operation.
This section specifies (in IDL/NDR) the RS's rs_unix RPC interface.
The following are common data types and constants used in the rs_unix interface.
The rs_unix_query_t data type specifies the
criteria used in a query to the RS for UNIX information.
This data type contains the following elements:
Query the RS server for the name of a principal.
Query the RS server for the local-ID of a principal.
No query criteria.
The rs_unix_query_key_t data type provides
a union to contain the key information for a UNIX query.
This data type contains the following elements:
The length of the name element.
The name of the principal.
The local-ID of the principal.
The sec_rgy_unix_login_name_t data type
contains a UNIX login name.
The sec_rgy_unix_gecos_t data type contains UNIX gecos data.
The sec_rgy_unix_passwd_t data type contains UNIX account
information associated with one entry in the passwd data file.
This data type contains the following elements:
Principal or UNIX account name.
The encrypted representation of the UNIX account password.
The UNIX user id for the account.
The UNIX primary group id for the account.
The account primary organization id.
The UNIX gecos data for the account.
The UNIX home directory for the account.
The UNIX primary shell for the account.
The sec_rgy_member_buf_t data type contains a comma-separated ASCII list of group names.
The sec_rgy_unix_group_t data type contains a principal name and a primary and secondary list of group names with which the principal is associated.
This data type contains the following elements:
The principal name.
The principal's primary group ID.
The secondary group list of the principal.
The interface UUID and version number for the rs_unix interface
are given by the following:
The
The rpc_handle parameter identifies the RS server.
The key parameter identifies the entries, either by principal name or by local-ID.
The num parameter specifies the size of the result array; that is, the maximum number of entries that can be returned by this call.
As input, the cursor parameter is an initialized or uninitialized cursor to the RS object. As output, cursor is positioned just past the entries returned as output to this call.
The num_out parameter is the actual number of result entries returned in the result array.
The result[] array contains UNIX account information associated with UNIX passwd data file entries.
The cache_info parameter indicates cache information (see
The status parameter returns the status of the operation.
The
The rpc_handle parameter identifies the RS server.
The domain parameter specifies whether the entries are person, group, or organization entries.
The key parameter identifies the entries, either by name or by local-ID.
The max_num_results parameter specifies the size of the members array; that is, the maximum number of entries that can be returned by this call.
As input, the member_cursor parameter is an initialized or uninitialized cursor to the member list. As output, member_cursor is positioned just past the current member entry returned as output to this call.
As input, the cursor parameter is an initialized or uninitialized cursor to the attribute list. As output, cursor is positioned just past the attributes returned as output to this call.
The num_members parameter is the actual number of member entries returned in the members array.
The members[] array contains member entries.
The cache_info parameter indicates cache information (see
The result parameter is a UNIX group describing a principal name and the associated primary and secondary group list.
The status parameter returns the status of the operation.
This section specifies (in IDL/NDR) the RS's rs_update RPC interface.
This interface is registered in the nameservice by the master
replica so that clients can locate the master.
The interface UUID and version number for the rs_update interface
are given by the following:
The
The rpc_handle parameter identifies the RS server.
The rep_info parameter contains the information about the replica, including its state, UUID, latest update sequence number and timestamp, whether the replica is a master replica, and information about the replica's master.
The status parameter returns the status of the operation.
Contents | Next section | Index |