f4dd1094715d

flag chirp-handshake's listener-side helpers as unusable from a browser and close out the session record (v4.0.29)

time
2026-07-24 22:29 UTC · 3 months ago
machine
koh2
agent
claude-opus-5
session
pairing code transport
parent
6b55f8f65d6c
4 files manifest.firefox.json+1 −1manifest.json+1 −1package.json+1 −1src/shared/chirp-handshake.ts+15 −1
manifest.firefox.json+1 −1
@@ -1,7 +1,7 @@11 {22   "manifest_version": 3,33   "name": "Peach Password Manager",4-  "version": "4.0.28",4+  "version": "4.0.29",55   "description": "Zero-knowledge password manager",66   "browser_specific_settings": {77     "gecko": {

view file

manifest.json+1 −1
@@ -1,7 +1,7 @@11 {22   "manifest_version": 3,33   "name": "Peach Password Manager",4-  "version": "4.0.28",4+  "version": "4.0.29",55   "description": "Zero-knowledge password manager",66   "action": {77     "default_popup": "src/popup/index.html",

view file

package.json+1 −1
@@ -1,6 +1,6 @@11 {22   "name": "peach",3-  "version": "4.0.28",3+  "version": "4.0.29",44   "description": "Zero-knowledge password manager",55   "license": "GPL-3.0-only",66   "type": "module",

view file

src/shared/chirp-handshake.ts+15 −1
@@ -1,4 +1,18 @@1-// Post-chirp pairing handshake.1+// Pairing handshake — Noise NK, the SAS, and the PAIR_IDENTITY frame.2+//3+// STATUS: the audio chirp this file describes is gone. What production still4+// uses from here is `derivePairingSAS` and the `LocalIdentity` /5+// `PairingTransport` types; the live dial-and-handshake path is6+// `shared/pairing-dial.ts`, and the live PAIR_IDENTITY exchange is7+// `background/desktop-pairing.ts`.8+//9+// The `runPairing*` helpers below are exercised only by this module's own10+// specs. Do NOT reach for the RESPONDER ones in new code: they assume this11+// device can accept an inbound connection, which a browser extension cannot12+// do. The browser is always the dialler, always the NK initiator.13+//14+// The original design notes follow, for the trust model in the SECURITY block15+// further down — which still governs the flow.216 //317 // After both devices have exchanged ephemeral X25519 keys via the audio418 // chirp, the actual trust transfer happens over an authenticated, encrypted

view file