← The board

N29 A key for an app

Area
N — Companion
Audience
operator
Kind
feature
Status
accepted
Maturity
built
Labels
mobile, security
Requires
N1C10
Relates to
N2N4N28F12F13C6

The feature in the specification · Read at

Requirements

  1. N29-R1acceptedMUST

    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).

    locked by
    0.18.0 met
    recorded done
    lemonfiber-companionapp-modules/operator/src/Internal/Screens/TheKeysAppsHold.phpapp-modules/sdk/src/Api/KeysListed.phptests/Feature/SeeingTheKeysAppsHoldTest.phptests/Contract/KeepingKeysForAppsContractTest.php
    cited by
    lemonfiber-companion@db0dc15d1a
  2. N29-R2acceptedMUST

    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).

    locked by
    0.18.0 met
    recorded done
    lemonfiber-companionapp-modules/operator/src/Internal/MintsAKeyAsAClaim.phpapp-modules/sdk/src/Api/KeyMinters.phptests/Feature/SeeingTheKeysAppsHoldTest.phptests/Contract/MintingKeysAsClaimsContractTest.php
    cited by
    lemonfiber-companion@91b979030c
  3. N29-R3acceptedMUST

    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
  4. N29-R4acceptedMUST

    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).

    locked by
    0.18.0 met
    recorded done
    lemonfiber-companionapp-modules/operator/resources/views/the-keys-apps-hold.blade.phpapp-modules/operator/src/Internal/MintsAKeyAsAClaim.phptests/Feature/SeeingTheKeysAppsHoldTest.phptests/Contract/EncodingContractTest.php
    cited by
    lemonfiber-companion@91b979030c
  5. N29-R5acceptedMUST

    The screen showing a key link MUST be concealed from screenshots, screen recording and the app switcher.

    locked by
    0.18.0 met
    recorded done
    lemonfiber-companionapp-modules/operator/src/Internal/Screens/TheKeysAppsHold.php
    cited by
    lemonfiber-companion@91b979030c
  6. N29-R6acceptedMUST

    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).

    locked by
    0.18.0 met
    recorded done
    lemonfiber-companionapp-modules/operator/resources/views/the-keys-apps-hold.blade.phpapp-modules/sdk/src/Api/KeyKeepers.phptests/Feature/SeeingTheKeysAppsHoldTest.phptests/Contract/KeepingKeysForAppsContractTest.php
    cited by
    lemonfiber-companion@db0dc15d1a
  7. N29-R7acceptedMUST

    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
  8. N29-R8acceptedMUST

    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
  9. N29-R9acceptedMUST

    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
  10. N29-R10acceptedMUST

    The app MUST NOT offer anything of this page to a member (N3-R19).

    locked by
    0.18.0 met
    recorded done
    lemonfiber-companiontests/Feature/AMemberNeverOpensTheOperatorsScreensTest.phpapp-modules/wayfinding/tests/Internal/TheMenuTest.php
    cited by
    lemonfiber-companion@db0dc15d1a