Appendix 2.B Enumerations

Adding a value to any enumeration here is a breaking change requiring a version bump — see §2.6. The single exception is the field mask, noted below.

2.B.1 Logon types #

Carried in LogonStart.logon_type (§2.7) as a u8. Semantics are defined by KACS and described in the Peios Kernel TRM; this table is for reference.

ValueName
2Interactive
3Network
4Batch
5Service
8NetworkCleartext
9NewCredentials

The gaps are deliberate: the numbering follows KACS, and values it does not define are not available here.

2.B.2 Identifier types #

Carried in LogonStart.identifier_type (§2.7) as a u8.

ValueNameidentifier holds
1UsernameA principal name

2.B.3 Credential types #

Carried in Prompt.credential_type (§2.8) and in LogonStart.supported_credential_types (§2.7) as a u8. See §2.11 for when a new one is warranted.

ValueNameCollection
1PasswordA line of text, not echoed

2.B.4 Message severities #

Carried in Message.severity (§2.8) as a u8.

ValueName
0Info
1Error

2.B.5 Denial codes #

Carried in AccessDenied.denial (§2.10) as a u32.

ValueNameMeaning
1MalformedRequestThe message could not be understood.
2UnsupportedVersionThe protocol version is not implemented.
3PermissionDeniedThe peer may not originate this logon at all.
4AuthenticationFailedThe principal is unknown, or the credential is wrong. Deliberately one code — see §2.10.
5LogonTypeNotPermittedThe peer may not request this kind of session.
6AccountRestrictedThe principal exists and authenticated, but policy refuses this logon.
7AuthorityUnavailableThe authority cannot reach what it needs to decide.
8ConversationLimitToo many rounds, or too long without an answer.
9InternalThe authority failed for a reason it will not describe.

2.B.6 Key types #

Carried in Lookup.key_type (§2.16) and Enumerate.of_key_type (§2.17) as a u8. Zero in of_key_type means the field is unused.

ValueNameKey is in
1Namename
2Sidsid
3UnixIdunix_id

2.B.7 Object kinds #

Carried in Lookup.kind, LookupReply.kind_found and Enumerate.kind (§2.16, §2.17) as a u8.

ValueName
0Any
1Principal
2Group

Any is not valid in kind_found or in Enumerate.kind.

2.B.8 Fields #

Carried in Lookup.fields, Enumerate.fields and LookupReply.present (§2.16) as a u32 bitmask, and in a withheld entry's field as a single bit.

BitNameValue encoding
0UNIX_IDu32
1PRIMARY_GROUPreference
2HOMEstring
3SHELLstring
4DISPLAY_NAMEstring
5GROUPSarray of references
6MEMBERSarray of references
7CLAIMSarray of claim entries
8ENABLEDu8

This is the sole exception to the rule above. A bit MAY be added without a version bump, because a reply states which fields it answered and an authority MUST ignore a bit it does not implement (§2.16).

2.B.9 Lookup outcomes #

Carried in LookupReply.outcome and EnumerateReply.outcome (§2.18) as a u8.

ValueName
1Found
2NotFound
3Unavailable
4Refused
5Malformed

2.B.10 Withheld reasons #

Carried in a withheld entry's reason (§2.16) as a u8.

ValueNameMeaning
1AbsentThe field has no value.
2RestrictedThe caller may not have this field.
3DeclinedThe source will not produce it.
4TooLargeIt exists and exceeds one reply; use Enumerate (§2.17).

Edit this page