taler-docs

Documentation for GNU Taler components, APIs and protocols
Log | Files | Refs | README | LICENSE

sesame-door-access.puml (1523B)


      1 @startuml sesame-door-access
      2 ' Offline door access for DD 97 (Project Sesame).
      3 ' Regenerate with: java -jar plantuml.jar -tsvg sesame-*.puml
      4 !include taler-style.iuml
      5 autonumber
      6 
      7 participant "Lock\n(offline)" as lock
      8 participant "Taler Wallet" as wallet
      9 participant "Merchant\nbackend" as merchant
     10 
     11 == read challenge ==
     12 lock -> wallet : NFC tap: door_id,\nmerchant URI, challenge (nonce)
     13 
     14 == create order ==
     15 wallet -> merchant : GET /templates/$door_id\n(skipped if cached)
     16 merchant --> wallet : template details
     17 wallet -> merchant : POST /templates/$door_id\n{challenge}
     18 merchant --> wallet : {order_id, claim token}
     19 wallet -> merchant : POST /orders/$ORDER_ID/claim
     20 merchant --> wallet : contract terms (choices)
     21 wallet -> wallet : select choice matching\na held token
     22 
     23 == pay (redeem token) ==
     24 wallet -> merchant : POST /orders/$ORDER_ID/pay\n{coins: [], tokens: [TokenUseSig],\nwallet_data: {choice_index,\ntokens_evs: [TokenEnvelope]}}
     25 merchant -> merchant : verify token: h_issue,\nub_sig, token_sig, key validity,\nnot spent, family in choice
     26 merchant -> merchant : compute pos_confirmation\n(sign challenge / TOTP code)
     27 merchant -> merchant : blind-sign replacement with\nthe input token's issue key
     28 merchant --> wallet : {sig, pos_confirmation,\ntoken_sigs}
     29 
     30 == present to lock ==
     31 wallet -> lock : NFC: pos_confirmation
     32 lock -> lock : verify signature over own\nnonce (or TOTP code),\nconsume challenge
     33 lock --> wallet : access granted
     34 wallet -> wallet : (async) unblind token_sigs\ninto replacement token
     35 @enduml