Ruslan Nigmatullin
48f82ca7c5
app-server: define device key v2 protocol ( #18428 )
...
## Why
Clients need a stable app-server protocol surface for enrolling a local
device key, retrieving its public key, and producing a device-bound
proof.
The protocol reports `protectionClass` explicitly so clients can
distinguish hardware-backed keys from an explicitly allowed OS-protected
fallback. Signing uses a tagged `DeviceKeySignPayload` enum rather than
arbitrary bytes so each signed statement is auditable at the API
boundary.
## What changed
- Added v2 JSON-RPC methods for `device/key/create`,
`device/key/public`, and `device/key/sign`.
- Added request/response types for device-key metadata, SPKI public
keys, protection classes, and ECDSA signatures.
- Added `DeviceKeyProtectionPolicy` with hardware-only default behavior
and an explicit `allow_os_protected_nonextractable` option.
- Added the initial `remoteControlClientConnection` signing payload
variant.
- Regenerated JSON Schema and TypeScript fixtures for app-server
clients.
## Stack
This is PR 1 of 4 in the device-key app-server stack.
## Validation
- `just write-app-server-schema`
- `cargo test -p codex-app-server-protocol`
2026-04-21 10:08:42 -07:00
..
2026-02-01 23:38:43 -08:00
2026-04-17 13:37:25 -07:00
2026-04-11 13:58:16 -07:00
2026-02-01 23:38:43 -08:00
2026-03-06 00:03:39 +00:00
2026-02-09 23:10:26 -08:00
2026-03-06 00:03:39 +00:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-03-06 17:30:17 -08:00
2026-03-06 17:30:17 -08:00
2026-03-06 17:30:17 -08:00
2026-03-06 17:30:17 -08:00
2026-03-06 17:30:17 -08:00
2026-03-06 17:30:17 -08:00
2026-03-06 17:30:17 -08:00
2026-02-01 23:38:43 -08:00
2026-03-06 17:30:17 -08:00
2026-03-06 17:30:17 -08:00
2026-03-08 17:38:01 -07:00
2026-02-01 23:38:43 -08:00
2026-03-13 15:27:00 -07:00
2026-04-14 09:50:14 -07:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-04-21 10:08:42 -07:00
2026-04-21 10:08:42 -07:00
2026-04-21 10:08:42 -07:00
2026-04-21 10:08:42 -07:00
2026-04-21 10:08:42 -07:00
2026-04-21 10:08:42 -07:00
2026-03-23 10:19:44 -07:00
2026-03-25 02:27:00 +00:00
2026-03-25 02:27:00 +00:00
2026-02-05 20:04:01 +00:00
2026-02-05 23:31:04 +00:00
2026-02-25 02:11:51 -08:00
2026-04-14 19:39:10 -07:00
2026-04-17 09:34:55 +00:00
2026-04-14 19:39:10 -07:00
2026-02-25 02:11:51 -08:00
2026-04-11 00:23:50 -07:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-04-20 10:44:03 -07:00
2026-04-07 11:22:28 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-04-13 17:46:56 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-04-07 11:22:28 -07:00
2026-03-24 15:52:13 -07:00
2026-04-07 11:22:28 -07:00
2026-04-07 11:22:28 -07:00
2026-03-13 14:42:20 -07:00
2026-03-13 14:42:20 -07:00
2026-02-01 23:38:43 -08:00
2026-04-17 13:37:25 -07:00
2026-04-11 13:58:16 -07:00
2026-04-17 14:45:47 +00:00
2026-04-17 14:45:47 +00:00
2026-04-21 14:13:08 +08:00
2026-04-20 21:48:57 -07:00
2026-04-20 21:48:57 -07:00
2026-04-21 14:13:08 +08:00
2026-04-06 16:27:02 -07:00
2026-02-02 17:41:55 -08:00
2026-03-27 00:27:15 -07:00
2026-03-27 00:27:15 -07:00
2026-02-01 23:38:43 -08:00
2026-04-13 20:37:11 -07:00
2026-04-13 20:37:11 -07:00
2026-04-19 23:22:49 -07:00
2026-04-19 23:22:49 -07:00
2026-04-20 19:59:36 -07:00
2026-04-06 19:17:14 -07:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-03-19 15:09:59 -07:00
2026-04-11 04:39:19 +00:00
2026-04-11 04:39:19 +00:00
2026-02-01 23:38:43 -08:00
2026-02-13 16:26:32 -08:00
2026-04-07 17:55:40 -07:00
2026-02-17 11:02:23 -08:00
2026-02-01 23:38:43 -08:00
2026-04-17 16:47:58 -07:00
2026-03-19 15:02:45 -07:00
2026-04-17 16:47:58 -07:00
2026-04-17 16:47:58 -07:00
2026-04-17 16:47:58 -07:00
2026-04-17 16:47:58 -07:00
2026-04-17 16:47:58 -07:00
2026-03-09 12:40:25 -07:00
2026-04-18 11:01:12 -07:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-04-21 14:13:08 +08:00
2026-04-17 21:41:57 -07:00
2026-04-17 21:41:57 -07:00
2026-02-27 12:45:59 -08:00
2026-03-03 17:01:00 -08:00
2026-03-23 12:57:40 -07:00
2026-02-01 23:38:43 -08:00
2026-02-09 13:30:38 -08:00
2026-04-14 14:26:10 -07:00
2026-02-01 23:38:43 -08:00
2026-02-17 14:53:58 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-25 13:14:30 -08:00
2026-02-03 18:15:55 -08:00
2026-02-03 18:15:55 -08:00
2026-03-13 15:27:00 -07:00
2026-04-21 14:13:08 +08:00
2026-04-13 16:11:05 -07:00
2026-04-13 16:11:05 -07:00
2026-04-17 11:49:02 -07:00
2026-04-21 14:13:08 +08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-03-03 15:56:11 -08:00
2026-04-21 14:13:08 +08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-04-21 14:13:08 +08:00
2026-02-25 09:59:10 -08:00
2026-02-25 09:59:10 -08:00
2026-02-25 09:59:10 -08:00
2026-03-16 21:38:07 -07:00
2026-04-07 15:43:38 -07:00
2026-03-17 15:24:37 -07:00
2026-04-14 00:13:13 -07:00
2026-04-14 00:13:13 -07:00
2026-04-18 11:01:12 -07:00
2026-04-21 14:13:08 +08:00
2026-02-01 23:38:43 -08:00
2026-04-21 14:13:08 +08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-03-18 23:42:40 -06:00
2026-03-18 23:42:40 -06:00
2026-04-21 14:13:08 +08:00
2026-04-21 14:13:08 +08:00
2026-04-21 14:13:08 +08:00
2026-02-18 15:20:03 -08:00
2026-02-01 23:38:43 -08:00
2026-04-17 11:49:02 -07:00
2026-04-21 14:13:08 +08:00
2026-02-17 14:53:58 -08:00
2026-02-01 23:38:43 -08:00
2026-04-21 14:13:08 +08:00
2026-02-25 13:14:30 -08:00
2026-02-25 13:14:30 -08:00
2026-04-21 14:13:08 +08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-02-01 23:38:43 -08:00
2026-04-21 14:13:08 +08:00
2026-03-13 15:27:00 -07:00
2026-04-21 14:13:08 +08:00
2026-02-06 00:35:04 +00:00
2026-02-06 00:35:04 +00:00
2026-04-17 18:11:47 -07:00
2026-02-18 13:03:16 -08:00
2026-03-08 18:07:46 -07:00
2026-02-18 13:03:16 -08:00
2026-02-01 23:38:43 -08:00