# Appendix 10.A Message Reference

_Peios / Peios technical reference / PSPU / Local Principal Administration_

> Every PLPS message by number, which reply answers which request, the protocol constants and the field limits.

## 10.A.1 Messages

| `msg_type` | Message | Direction | Answered with | Defined in |
|---|---|---|---|---|
| `0x0001` | `List` | client → store daemon | `Principals` | §10.5 |
| `0x0002` | `Show` | client → store daemon | `Principal` | §10.5 |
| `0x0003` | `Domain` | client → store daemon | `DomainIs` | §10.5 |
| `0x0004` | `Add` | client → store daemon | `Created` | §10.5 |
| `0x0005` | `Remove` | client → store daemon | `Done` | §10.5 |
| `0x0006` | `SetEnabled` | client → store daemon | `Done` | §10.5 |
| `0x0007` | `SetPassword` | client → store daemon | `Done` | §10.5 |
| `0x0008` | `GroupAdd` | client → store daemon | `Done` | §10.6 |
| `0x0009` | `GroupRemove` | client → store daemon | `Done` | §10.6 |
| `0x000a` | `GroupList` | client → store daemon | `Groups` | §10.6 |
| `0x000b` | `GroupCreate` | client → store daemon | `Created` | §10.6 |
| `0x000c` | `GroupDelete` | client → store daemon | `Done` | §10.6 |
| `0x000d` | `SetProfile` | client → store daemon | `Done` | §10.5 |
| `0x000e` | `SetPrimaryGroup` | client → store daemon | `Done` | §10.6 |
| `0x000f` | `SetClaim` | client → store daemon | `Done` | §10.7 |
| `0x0010` | `RemoveClaim` | client → store daemon | `Done` | §10.7 |
| `0x0011` | `KeyList` | client → store daemon | `Keys` | §10.8 |
| `0x0012` | `KeyAdd` | client → store daemon | `Done` | §10.8 |
| `0x0013` | `KeyRemove` | client → store daemon | `Done` | §10.8 |
| `0x0014` | `CredentialPolicy` | client → store daemon | `Done` | §10.8 |
| `0x0015` | `Rename` | client → store daemon | `Done` | §10.5 |
| `0x0016` | `SetLogonTypes` | client → store daemon | `Done` | §10.5 |
| `0x0017` | `GroupRename` | client → store daemon | `Done` | §10.6 |
| `0x0018` | `GroupDescribe` | client → store daemon | `Done` | §10.6 |
| `0x8001` | `Principals` | store daemon → client | | §10.5 |
| `0x8002` | `Principal` | store daemon → client | | §10.5 |
| `0x8003` | `DomainIs` | store daemon → client | | §10.5 |
| `0x8004` | `Created` | store daemon → client | | §10.9 |
| `0x8005` | `Done` | store daemon → client | | §10.9 |
| `0x8006` | `Failed` | store daemon → client | | §10.9 |
| `0x8007` | `Groups` | store daemon → client | | §10.6 |
| `0x8008` | `Keys` | store daemon → client | | §10.8 |

Any request may be answered with `Failed` instead.

### 10.A.1.1 On the self socket

| `msg_type` | Message | Direction | Answered with | Defined in |
|---|---|---|---|---|
| `0x0040` | `ShowSelf` | client → store daemon | `Self` | §10.11 |
| `0x0041` | `SetDisplayName` | client → store daemon | `Done` | §10.11 |
| `0x8040` | `Self` | store daemon → client | | §10.11 |

`Done` and `Failed` (§10.9) answer here too. Each socket refuses the
other's requests with `Invalid`.

## 10.A.2 Protocol constants

| Constant | Value | Defined in |
|---|---|---|
| Socket path | `/run/lpsd/admin.sock` on Peios | §10.3 |
| Self socket path | `/run/lpsd/self.sock` on Peios | §10.11 |
| Largest self-socket request | 4096 bytes | §10.11 |
| Magic | `PLPS` (`50 4c 50 53`) | §10.4 |
| Version | `1` | §10.4 |
| Header size | 12 bytes | §10.4 |
| Maximum message size | 2,097,152 bytes | §10.4 |
| Requests a connection | 1 | §10.3 |

## 10.A.3 Field limits

| Field | Limit |
|---|---|
| A principal's or group's name | 256 bytes |
| A password | 4096 bytes, never empty |
| `home`, `shell` | 4096 bytes |
| `display_name` | 256 bytes |
| A group's `description` | 1024 bytes |
| A principal's listed groups | 128 |
| Principals in `Principals` | 4096 |
| Groups in `Groups` | 4096 |
| A SID | 68 bytes |
| Claims on a principal | 64 |
| A claim's name | 255 bytes |
| A claim's values | 64 |
| A string or octet claim value | 1024 bytes |
| SSH keys on a principal | 32 |
| An SSH public key | 16384 bytes |
| A key's label | 128 bytes |
| A key's fingerprint | 128 bytes |
| A key's algorithm | 64 bytes |
| A refusal's `reason` | 512 bytes |

## 10.A.4 Enumerations

| Enumeration | Defined in |
|---|---|
| Failure | §10.9 |
| Credential policy | §10.8 |
| Logon types | PGSS §2.16, carried as PSI carries them (§2.13) |
| Claim value types and flags | PCDS §5.9, closed as on PSI (§2.A) |
