Appendix 2.B Enumerations

Adding a value to any enumeration here is a breaking change requiring a version bump — see §2.6, which states the four exceptions and where each is stated in full.

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
10RemoteInteractive

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

A value MAY be added here without a version bump, for the reason §2.7 gives.

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
2SshPublicKeyBound SSH candidate or signature proof; §2.D

2.B.4 Message severities #

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

ValueName
0Info
1Error

2.B.5 Enrolment actions #

Carried in CredentialEnrollStart.action (§2.23) as a u8.

ValueNamematerial holds
1AddThe credential to enrol: for SshPublicKey, one line of an OpenSSH public key file
2RemoveWhich credential to remove: for SshPublicKey, its SHA256: fingerprint

CredentialEnrollStart.credential_type takes a value from the credential types above; only SshPublicKey is defined for enrolment.

2.B.6 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 make this request 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; or, in a credential change, the principal has no credential that can be changed (§2.20).
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.
10NoSuchSessionThere is no live logon session by that identifier. Answers only SessionEnd and SessionEndQuery (§2.22).
11CredentialRejectedThe credential offered for enrolment, or named for removal, was refused: unreadable, unsupported, already held, one too many, or not held. Answers only CredentialEnrollStart (§2.23).

A denial code MAY be added without a version bump where it only ever answers messages newer than it is — messages no peer that predates the code can send — because such a peer is then never sent it. NoSuchSession and CredentialRejected were added under this rule. A client of the newer messages SHOULD treat a code it does not recognise as a refusal, reporting the code and reason, rather than as an unreadable answer; it is the one place in this chapter where a client may meet a denial newer than itself.

2.B.7 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.8 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.9 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
9LOGON_TYPESu32
10DESCRIPTIONstring

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.10 Lookup outcomes #

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

ValueName
1Found
2NotFound
3Unavailable
4Refused
5Malformed

2.B.11 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