From de052a90288eca74d2ef4d4b1eb4da3d19820ad9 Mon Sep 17 00:00:00 2001 From: highlander Date: Fri, 24 Apr 2026 21:07:37 -0500 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20user-provisioned=20metadata=20signi?= =?UTF-8?q?ng=20keys=20=E2=80=94=20slots=204-6=20+=20storage=20v18?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lets KeepKey owners add their own secp256k1 signing keys at runtime so companies / DAOs can publish their own clear-signing descriptor sets that members verify on their own device, without firmware updates. - 3 user slots (4..6) persisted in Storage.pub.metadata_keys, plus STORAGE_VERSION bump 17 -> 18 with explicit V17->V18 migration that zero-inits the new key array on existing devices. - AddMetadataKey, RemoveMetadataKey, ListMetadataKeys handlers in fsm_msg_metadata.h. Add: 2-step confirm (slot+label, then SHA-256 fingerprint), then PIN. Remove: confirm shows fingerprint of the key being removed (defends against stealth removal on a briefly-unlocked device). Slots 0..3 remain firmware-baked and cannot be overwritten. - signed_metadata.c moves from a hardcoded METADATA_PUBKEYS lookup to a unified metadata_get_pubkey() that resolves slot 0..3 from the static firmware table and slot 4..6 from storage. Verification confirm screen now shows the matching label ("Insight Verified" for slot 0, "