┌─┐ ║"│ └┬┘ ┌┼┐ │ ┌───────────────┐ ┌────────────────────────┐ ┌───────────────────────┐ ┌┴┐ │Wallet Instance│ │Device Integrity Service│ │Wallet Provider backend│ User └───────┬───────┘ └────────────┬───────────┘ └───────────┬───────────┘ │ │ │ │ ╔════════════╪═════════════════════════════╤══╪═════════════════════════════════════════════════════════════════════════════════════════════════════════╪═══════════════════════════════════╪════════════════════════════════════════════════════════╗ ║ ONLY UPON FIRST INSTALLATION OF THE APP │ │ │ │ ║ ╟──────────────𝟏 starts the app (first use)┘ ┌┴┐ │ │ ║ ║ │──────────────────────────────>│ │ │ │ ║ ║ │ │ │ │ │ ║ ║ │ │ │ ────┐ │ │ ║ ║ │ │ │ │ 𝟐 Check if the device meets the minimum security requirements │ │ ║ ║ │ │ │ <───┘ and if **Device Integrity Service** is available │ │ ║ ║ │ │ │ │ │ ║ ║ │ │ │ │ │ ║ ║ │ ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ ║ ║ │ │Check Wallet Provider is part of the Federation and obtain its metadata │ ║ ║ │ └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ║ ║ │ │ │ 𝟑 Get **challenge** │ ┌┴┐ ║ ║ │ │ │ ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────>│ │ ║ ║ │ │ │ │ │ │ ║ ║ │ │ │ │ │ │ ────┐ ║ ║ │ │ │ │ │ │ │ 𝟒 Generate one time use **challenge** ║ ║ │ │ │ │ │ │ <───┘ ║ ║ │ │ │ │ └┬┘ ║ ║ │ │ │ 𝟓 **challenge** │ │ ║ ║ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ║ ║ │ │ │ │ │ ║ ║ │ │ │ ────┐ │ │ ║ ║ │ │ │ │ 𝟔 Generate **Cryptographic Hardware Keys** pair and store **Cryptographic Hardware Key Tag** │ │ ║ ║ │ │ │ <───┘ │ │ ║ ║ │ │ │ │ │ ║ ║ │ │ │ 𝟕 attestKey(challenge, Cryptographic Hardware Key Tag) │ │ ║ ║ │ │ │ ──────────────────────────────────────────────────────────────────────────────────────────────────────>│ │ ║ ║ │ │ │ │ │ ║ ║ │ │ │ 𝟖 **Key Attestation** signed by OEM │ │ ║ ║ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ ║ ║ │ │ │ │ │ ║ ║ │ │ │ 𝟗 Send **challenge**, **Key Attestation** and **Cryptographic Hardware Key Tag** ┌┴┐ ║ ║ │ │ │ ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────>│ │ ║ ║ │ │ │ │ │ │ ║ ║ │ │ │ │ │ │ ────┐ ║ ║ │ │ │ │ │ │ │ 𝟏𝟎 Validate **challenge** ║ ║ │ │ │ │ │ │ <───┘ ║ ║ │ │ │ │ │ │ ║ ║ │ │ │ │ │ │ ────┐ ║ ║ │ │ │ │ │ │ │ 𝟏𝟏 Validate **Key Attestation** ║ ║ │ │ │ │ │ │ <───┘ ║ ║ │ │ │ │ │ │ ║ ║ │ │ │ │ │ │ ────┐ ║ ║ │ │ │ │ │ │ │ 𝟏𝟐 Store **Cryptographic Hardware Keys** ║ ║ │ │ │ │ │ │ <───┘ ║ ║ │ │ │ │ └┬┘ ║ ║ │ │ │ 𝟏𝟑 OK │ │ ║ ║ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ║ ║ │ └┬┘ │ │ ║ ║ │𝟏𝟒 Wallet Instance Initialized │ │ │ ║ ║ │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │ │ ║ ╚════════════╪════════════════════════════════╪═════════════════════════════════════════════════════════════════════════════════════════════════════════╪═══════════════════════════════════╪════════════════════════════════════════════════════════╝ │ │ │ │ │ │ │ │