## DTC Anoncred Issuance Workflow 1. User installs Mobile App 2. User uses Mobile App to scan passport using OCR and NFC and authenticate with a liveness check 3. Mobile App establishes connection with DTC Issuer Agent 4. Mobile App sends ICAO DTC to DTC Issuer Agent via self-attested presentation 5. DTC Issuer Agent requests check of validity of ICAO DTC from ICAO DTC PKD service 6. ICAO DTC PKD service responds with validity result 7. DTC Issuer Agent offers a DTC Anoncred credential to the Mobile App 8. Mobile App presents the offer to the User 9. User accepts the credential offer on the Mobile App ```plantuml skinparam backgroundColor #fff skinparam handwritten false skinparam BoxPadding 10 skinparam ParticipantPadding 10 skinparam NoteFontSize 24 skinparam NoteBorderColor #f80 skinparam NoteBackgroundColor #fea skinparam sequenceArrowThickness 1 skinparam sequence { BoxFontSize 36 BoxBorderColor #555 BoxBackgroundColor #fbfbfb ActorFontColor #333 ActorFontSize 24 ActorFontName Arial ActorBorderColor #555 ActorBackgroundColor #ccc ParticipantFontName Arial ParticipantFontSize 24 ParticipantFontColor #333 ParticipantBorderColor #555 ParticipantBackgroundColor #eee LifeLineBorderColor #ccc LifeLineBackgroundColor #000 ArrowFontSize 24 ArrowColor #f80 DividerFontSize 24 } actor User participant "Mobile App" as Mobile participant "DTC Issuer Agent" as Issuer participant Auctorizium User -> Mobile: Install Mobile -> Mobile: Scan Passport, Liveness Check Mobile -> Mobile: Encode ICAO DTC note over Mobile: ICAO DTC stored on Mobile App Mobile -> Issuer: Connect Mobile -> Issuer: Send ICAO DTC note over Issuer: ICAO DTC stored on\nDTC Issuer Agent\n(temporarily) note over Issuer: Passport attributes\nstored on\nDTC Issuer Agent Issuer -> Auctorizium: ICAO DTC validity request note over Auctorizium: Does Auctorizium store\nany information? Auctorizium -> Issuer: ICAO DTC validity result Issuer -> Mobile: Offer DTC Anoncred credential Mobile -> User: Display DTC\nAnoncred credential offer User -> Mobile: User accepts credential note over Mobile: DTC Anoncred credential\nstored on Mobile App ``` ## Airline ID Issuance Workflow 1. User opens Airline Website in a browser 2. User clicks on "Create an Account" 3. Airline Website requests an invitation from the Airline Server Agent 4. Airline Server Agent returns invitation 5. Airline Website presents a QR code to the user 6. User scans the QR code with their Mobile App 7. Mobile App connects to the Airline Server Agent 8. Airline Website presents a user profile form 9. User fills out the user profile information and clicks "Submit" 10. Airline Website submits data to the Airline Server Agent and requests issuance of Airline ID credential 11. Airline Server Agent uses the data to offer an Airline ID credential to the Mobile App 12. Mobile App presents the offer to the User 13. User clicks accept in the Mobile App and the Airline ID credential is added to their wallet 14. User is redirected to account page on the Airline Website ```plantuml skinparam backgroundColor #fff skinparam handwritten false skinparam BoxPadding 10 skinparam ParticipantPadding 10 skinparam NoteFontSize 24 skinparam NoteBorderColor #f80 skinparam NoteBackgroundColor #fea skinparam sequenceArrowThickness 1 skinparam sequence { BoxFontSize 36 BoxBorderColor #555 BoxBackgroundColor #fbfbfb ActorFontColor #333 ActorFontSize 24 ActorFontName Arial ActorBorderColor #555 ActorBackgroundColor #ccc ParticipantFontName Arial ParticipantFontSize 24 ParticipantFontColor #333 ParticipantBorderColor #555 ParticipantBackgroundColor #eee LifeLineBorderColor #ccc LifeLineBackgroundColor #000 ArrowFontSize 24 ArrowColor #f80 DividerFontSize 24 } actor User participant "Mobile App" as Mobile participant "Airline Website" as Website participant "Airline Server Agent" as Issuer User -> Website: Open Website Website -> Website: User clicks "Create Account" Website -> Issuer: Requests invitation Issuer -> Website: Returns invitation Website -> Website: Displays QR code Mobile -> Website: Scan QR code Mobile -> Issuer: Connect Website -> Website: Displays user profile form User -> Website: User submits\nuser profile data Website -> Issuer: User data submitted,\nAirline ID credential requested note over Issuer: User data stored\non Airline Server Agent Issuer -> Mobile: Offer Airline ID credential Mobile -> User: Display Airline\nID credential offer User -> Mobile: User accepts credential note over Mobile: Airline ID credential\nstored on Mobile App Website -> User: User redirected to account page ``` ## Airline Website Login Workflow 1. User opens Airline Website in a browser 2. User clicks on "Log In" 3. Airline Website requests an invitation from the Airline Server Agent 4. Airline Server Agent returns invitation 5. Airline Website presents a QR code to the user 6. User scans the QR code with their Mobile App 7. Mobile App connects to the Airline Server Agent 8. Airline Server Agent sends a presentation request to the Mobile App requesting the Airline ID credential 9. Mobile App displays the presentation request to the User 10. User accepts the presentation request 11. Mobile App sends the presentation to the Airline Server Agent 12. Airline Server Agent verifies the credential 13. Airline Server Agent sends the result to the Airline Website 14. Airline Website redirects User to the account page (or displays an error message) ```plantuml skinparam backgroundColor #fff skinparam handwritten false skinparam BoxPadding 10 skinparam ParticipantPadding 10 skinparam NoteFontSize 24 skinparam NoteBorderColor #f80 skinparam NoteBackgroundColor #fea skinparam sequenceArrowThickness 1 skinparam sequence { BoxFontSize 36 BoxBorderColor #555 BoxBackgroundColor #fbfbfb ActorFontColor #333 ActorFontSize 24 ActorFontName Arial ActorBorderColor #555 ActorBackgroundColor #ccc ParticipantFontName Arial ParticipantFontSize 24 ParticipantFontColor #333 ParticipantBorderColor #555 ParticipantBackgroundColor #eee LifeLineBorderColor #ccc LifeLineBackgroundColor #000 ArrowFontSize 24 ArrowColor #f80 DividerFontSize 24 } actor User participant "Mobile App" as Mobile participant "Airline Website" as Website participant "Airline Server Agent" as Issuer User -> Website: Open Website Website -> Website: User clicks "Log In" Website -> Issuer: Requests invitation Issuer -> Website: Returns invitation Website -> Website: Displays QR code Mobile -> Website: Scan QR code Mobile -> Issuer: Connect Issuer -> Mobile: Request Airline ID credential Mobile -> User: Request sharing of Airline\nID credential User -> Mobile: Authorize sharing of Airline\nID credential Mobile -> Issuer: Present Airline\nID credential Issuer -> Issuer: Interpret Airline\nID credential note over Issuer: Airline ID\npresentation stored\n on Airline Server\nAgent (optional) Issuer -> Website: Send Airline ID details Website -> User: User redirected to account page ``` ## Boarding Pass Workflow 1. User selects a flight from their list of flights on the account page 2. Airline Website displays any additional flight details and presents two options, "Seamless" or "Not Seamless" 3. User selects an option 4. Regardless of which choice is selected, Airline Website requests a verification of the DTC Anoncred from the Airline Server Agent. The verification requested varies based on which choice was made. 5. Airline Website uses API to poll the Airline Server Agent for the verification result 6. Airline Server Agent requests DTC Anoncred credential from the Mobile App 7. Mobile App presents request to User 8. User consents to share a DTC Anoncred presentation 9. Mobile App sends a DTC Anoncred presentation to the Airline Server Agent 10. Airline Server Agent parses details of DTC Anoncred presentation 11. Airline Server Agent sends DTC Anoncred data to the Airline Website (in response to one of the polling requests in #5) 12. Airline Website displays DTC and flight details and a form to collect any fields that the user needs to provide (need to confirm if there are any details here). 13. After all data is collected, Airline Website submits data to Airline Server Agent and requests issuance of a Boarding Pass credential to the User 14. Airline Server Agent offers a Boarding Pass credential to the Mobile App 15. Mobile App presents the offer to the User 16. User clicks accept in the Mobile App and the Boarding Pass credential is added to their wallet ```plantuml skinparam backgroundColor #fff skinparam handwritten false skinparam BoxPadding 10 skinparam ParticipantPadding 10 skinparam NoteFontSize 24 skinparam NoteBorderColor #f80 skinparam NoteBackgroundColor #fea skinparam sequenceArrowThickness 1 skinparam sequence { BoxFontSize 36 BoxBorderColor #555 BoxBackgroundColor #fbfbfb ActorFontColor #333 ActorFontSize 24 ActorFontName Arial ActorBorderColor #555 ActorBackgroundColor #ccc ParticipantFontName Arial ParticipantFontSize 24 ParticipantFontColor #333 ParticipantBorderColor #555 ParticipantBackgroundColor #eee LifeLineBorderColor #ccc LifeLineBackgroundColor #000 ArrowFontSize 24 ArrowColor #f80 DividerFontSize 24 } actor User participant "Mobile App" as Mobile participant "Airline Website" as Website participant "Airline Server Agent" as Issuer User -> Website: Selects flight from list Website -> User: Displays "Seamless" choice User -> Website: User makes a selection Website -> Issuer: Submits verification request\nfor DTC Anoncred Website -> Issuer: Poll for\nverification result Issuer -> Mobile: Request DTC\nAnoncred credential Mobile -> User: Request sharing of DTC\nAnoncred credential User -> Mobile: Authorize sharing of DTC\nAnoncred credential Mobile -> Issuer: Present DTC\nAnoncred credential Issuer -> Issuer: Interpret DTC\nAnoncred credential note over Issuer: DTC Anoncred\npresentation stored\n on Airline Server\nAgent (optional) Issuer -> Website: Send passport details Website -> Website: Collect and store\nadditional details note over Website: User passport and\ntravel details stored\non Airline Server Agent Website -> Issuer: Request to issue\nBoarding Pass\ncredential to User Issuer -> Mobile: Offer Boarding\nPass credential Mobile -> User: Display Boarding Pass\ncredential offer User -> Mobile: User accepts credential note over Mobile: Boarding Pass credential\nstored on Mobile App ``` ## Boarding Pass Verification Workflow 1. Verifier displays an invitation URL as a QR code 2. User scans QR code with Mobile App 3. Mobile App connects to Verifier Agent 4. Verifier Agent requests Boarding Pass credential 5. Mobile App displays the presentation request to the User 6. User consents to share the Boarding Pass credential 7. Mobile App sends the Boarding Pass credential to the Verifier Agent 8. Verifier Agent interprets the presentation 9. Both Mobile App and Verifier Agent display the verification result. The Mobile Verifier Agent has two display options, Lounge Access and Plane Boarding ```plantuml skinparam backgroundColor #fff skinparam handwritten false skinparam BoxPadding 10 skinparam ParticipantPadding 10 skinparam NoteFontSize 24 skinparam NoteBorderColor #f80 skinparam NoteBackgroundColor #fea skinparam sequenceArrowThickness 1 skinparam sequence { BoxFontSize 36 BoxBorderColor #555 BoxBackgroundColor #fbfbfb ActorFontColor #333 ActorFontSize 24 ActorFontName Arial ActorBorderColor #555 ActorBackgroundColor #ccc ParticipantFontName Arial ParticipantFontSize 24 ParticipantFontColor #333 ParticipantBorderColor #555 ParticipantBackgroundColor #eee LifeLineBorderColor #ccc LifeLineBackgroundColor #000 ArrowFontSize 24 ArrowColor #f80 DividerFontSize 24 } actor User participant "Mobile App" as Mobile participant "Verifier Agent" as Verifier Verifier -> Verifier: Display QR code Mobile -> Verifier: Scan QR code Mobile -> Verifier: Connect Verifier -> Mobile: Request Boarding\nPass credential Mobile -> User: Request sharing of Boarding\nPass credential User -> Mobile: Authorize sharing of Boarding\nPass credential Mobile -> Verifier: Present Boarding\nPass credential Verifier -> Verifier: Interpret Boarding\nPass credential Verifier -> Mobile: Both agents display verification result note over Verifier: Boarding Pass\npresentation stored\n on Verifier\nAgent (optional) ```