N29 A key for an app
- Area
- N — Companion
- Audience
- operator
- Kind
- feature
- Status
- accepted
- Maturity
- built
- Labels
- mobile, security
The feature in the specification · Read at
Requirements
The operator MUST be able to list a stack's integration keys by name, scope, purpose, state, minting time and last use, as the core answers them, with a key waiting to be collected and a member-minted key each marked, and with the listing's own sentence on what a purpose is worth (C10-R6, C10-R16, C10-R17, C10-R18).
The operator MUST be able to mint a key only as a claim (C10-R18), naming it and choosing its scope, read, act or member:<account> from the household's members, and its purpose (C10-R17). The app MUST NOT mint a key whose secret it would receive, and MUST NOT call the door that collects a key (C10-R20).
Minting MUST be proved by a signature from a key pair the app makes in the phone's hardware, usable only after face or fingerprint, over a challenge the core issued for that mint (C10-R24, C10-R25). The first mint from a phone for a stack MUST register the key pair's public half (C10-R23), asking for the operator password for that one request; the app MUST send the password once and MUST NOT keep, log or prefill it.
- locked by
- 0.18.0 met
- recorded done
- lemonfiber-companionapp-modules/operator/src/Internal/MintsFromThisPhone.phpapp-modules/device/src/Api/PlatformPhoneKeys.phpbridge/src/PhoneKeys.phptests/Contract/HoldingAPhoneKeyContractTest.phptests/Contract/MintingKeysAsClaimsContractTest.phptests/Feature/SeeingTheKeysAppsHoldTest.php
- cited by
- lemonfiber-companion@91b979030clemonfiber-companion@3f63071afe
The key link MUST be shown as the core gave it, as a QR code drawn from it, as text the operator can copy and through the platform's share sheet, with when the claim lapses. The app MUST NOT construct, alter or keep the link, and MUST NOT show it again once the screen is left or the app locks (C10-R22, N4-R24).
The screen showing a key link MUST be concealed from screenshots, screen recording and the app switcher.
The operator MUST be able to revoke a key by name once they confirm it, the confirmation saying in the app's words that the key stops working at once and that a revoke cannot be undone (C10-R12), after which the listing MUST show it as the core answers it (C10-R6).
The operator MUST be able to list the stack's device keys, each with its backing as the core answers it, this phone's marked, and revoke any of them (C10-R26). Removing a stack from the phone MUST delete the phone's key pair for it, and a key pair the stack refuses as unregistered MUST be deleted and registered again at the next mint.
- locked by
- 0.18.0 met
- recorded done
- lemonfiber-companionapp-modules/operator/src/Internal/KeepsThePhoneKeys.phpapp-modules/operator/src/Internal/MintsFromThisPhone.phpbootstrap/Composition/CompositionRoot.phptests/Contract/ForgetsAStackContractTest.phptests/Feature/SeeingTheKeysAppsHoldTest.php
- cited by
- lemonfiber-companion@91b979030clemonfiber-companion@2fb845c343
The app MUST make the key pair in StrongBox or the Secure Enclave where the phone has one, and in its trusted environment otherwise, and MUST register it with the platform's attestation of where it lives (C10-R23). Where the phone can hold the key pair only in software or has no face or fingerprint enrolled, minting MUST NOT be offered, and the screen MUST say why and that a key can be minted at the stack's terminal.
- locked by
- 0.18.0 met
- recorded done
- lemonfiber-companionbridge/resources/android/PhoneKeyFunctions.ktbridge/resources/ios/PhoneKeyFunctions.swiftapp-modules/operator/src/Internal/MintsFromThisPhone.phptests/Feature/SeeingTheKeysAppsHoldTest.php
- cited by
- lemonfiber-companion@91b979030clemonfiber-companion@3f63071afe
A refused mint, registration or revoke MUST be shown in the core's words; where the stack is not served so another machine can reach it, the screen MUST say how to serve it, as the core says (C10-R18).
- locked by
- 0.18.0 met
- recorded done
- lemonfiber-companionapp-modules/sdk/src/Api/KeyMinters.phpapp-modules/sdk/src/Api/KeyKeepers.phptests/Contract/MintingKeysAsClaimsContractTest.phptests/Contract/KeepingKeysForAppsContractTest.phptests/Feature/SeeingTheKeysAppsHoldTest.php
- cited by
- lemonfiber-companion@91b979030c
The app MUST NOT offer anything of this page to a member (N3-R19).