Pre-rewrite scenario. This walkthrough was written against an earlier draft of draft-hardt-aauth-bootstrap. As of -01 the document is informational AP-side enrollment guidance; the PS /bootstrap endpoint, bootstrap_token, and aa-bootstrap+jwthave been removed. PS-binding now happens lazily on the agent's first interaction with the PS. See the bootstrap overview for current framing.
Mobile (Android) Bootstrap
Agent runs on Android with a StrongBox-backed key. The PS authenticates the user and issues a bootstrap_token; the agent obtains an attestation nonce from the agent provider, generates a Play Integrity attestation, then POSTs to the agent provider's bootstrap_endpoint using the jkt-jwt signature scheme. The agent provider verifies the attestation, records the enclave key thumbprint as the device credential, and issues an agent token. The agent then announces its identity to the PS.
Android Keystore generates (or retrieves existing) P-256 key pair in StrongBox HSM — hardware-bound, unexportable.
Agent also generates an ephemeral Ed25519 signing key in memory for HTTP message signatures.
The StrongBox key has a stable JWK thumbprint: urn:jkt:sha-256:<thumbprint>.
Per spec: durable key lifetime is bounded by the application install (months to years).
Ephemeral key lifetime is bounded by the agent token (hours to a day).
Step 1: Generate StrongBox key + ephemeral key
No headers