From 93d0becabf76aaa568989f295ca9b8a2c387f0cc Mon Sep 17 00:00:00 2001 From: cirakg Date: Tue, 20 Oct 2026 06:56:58 +0200 Subject: docs: record M6b (QR) results Co-Authored-By: Claude Opus 5.5 --- docs/SECURITY.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'docs/SECURITY.md') diff --git a/docs/SECURITY.md b/docs/SECURITY.md index 45faba6..31723d5 100644 --- a/docs/SECURITY.md +++ b/docs/SECURITY.md @@ -18,13 +18,12 @@ Everything lives in the app's private `Application.Storage`: | `lk` | dictionary | Wrong-PIN state: `f` failures, `d` delay in seconds, `t` trusted time of the last attempt; absent after a success | `Lockout` | | `e.` | bytes | One entry record (format below) | `Vault` | | `p.` | bytes | Pending locked entry: a record sealed with the device key | `Vault` | +| `x.` | bytes | Encoded 2D barcode: a SealedBox (aad `OTPW-X-1` + ID) with the entry's own key (device key, or the master key for locked entries) of width, height, quiet zone and the packed modules. Deleted when the entry is updated, removed or erased | `Vault` | | `imp`, `imp.` | dictionary, bytes | Waiting multi-part import: `imp` = `{"n": chunks, "t": saved at}`, `imp.` = chunks of one SealedBox (device key, aad `OTPW-IMP-1`) of the text | `ImportBuffer` | | `res` | dictionary | Latest settings results (`l` lines, `u` unseen) | `Results` | | `fh` | array | Hashes (SHA-256, first 8 bytes) of the last 32 applied settings forms | `SettingsProcessor` | | `st` | array | Version and day of the last passed self-test | `AppState` | -`x.` (barcode cache) arrives with M6. - The PIN wrap and the lockout state have their own keys instead of living in `m` as README 6.2 first planned. Each wrong PIN rewrites the lockout state before the check, and a small separate value makes that write cheap and keeps it from risking the entry index. ## Keys -- cgit v1.2.3