@startuml ' !theme mono ' !theme crt-amber ' !theme crt-green ' !theme amiga ' !theme metal !theme mimeograph title Sequence Diagram – Mutual Key Signing with Owner Trust (tsign) legend Keysigning between Alice and Bob . gpg --recv-keys 0x11F4C41EB3FBAE33 . gpg --edit-key 0x11F4C41EB3FBAE33 . tsign . gpg --armor --export-options export-minimal --export 0xB3FBAE33 > 0xB3FBAE33.asc end legend header = Sequence of Key Signing with n==2 Compiled: %date("yyyy-MM-dd kk:mm Z") endheader actor Alice actor Bob participant "Alice GnuPG" as AG participant "Bob GnuPG" as BG database "Alice Keyring" as AK database "Bob Keyring" as BK database "Alice Owner Trust" as AT database "Bob Owner Trust" as BT entity "Alice Passport" as AID entity "Bob Passport" as BID ' ' ''''''''''''''''''' KSP ' group Key Signing Party == ID Verification via Passport == Alice -> BID : Verify Bobs Passport note right: verify ID and Key-Fingerprint Bob -> AID : Verify Alice Passport note right: verify ID and Key-Fingerprint:w end group ' ' ''''''''''''''''''' KEX ' group KeyExchange == Key Exchange == Alice -> AG : Export PubKey AG -> AK : Read PubKeyof Alice AG -> Bob : Send PubKeyof Alice Bob -> BG : Export PubKey BG -> BK : Read PubKeyof Bob BG -> Alice : Send PubKeyof Bob == Signing == Bob -> BG : Sign Alice key\n(identity verified) BG -> BK : Store signature on Alice key BG -> Alice : Mail signed Alice key Alice -> AG : Sign Bob key\n(identity verified) AG -> AK : Store signature on Bob key AG -> Bob : Mail signed Bob key == Import == Alice -> AG : Import signed Alice key AG -> AK : Update keyring Bob -> BG : Import signed Bob key BG -> BK : Update keyring == Set Owner Trust == Alice -> AG : Set owner trust for Bob AG -> AT : Store trust level Bob -> BG : Set owner trust for Alice BG -> BT : Store trust level end group ' ' ''''''''''''''''''' WoT ' group Trust calculation voa Web of Trust == Web of Trust Calculation == Alice -> AG : Check validity of Bob key AG -> AK : Read signatures AG -> AT : Read owner trust values AG -> Alice : Validity status\n(unknown/marginal/full) Bob -> BG : Check validity of Alice key BG -> BK : Read signatures BG -> BT : Read owner trust values BG -> Bob : Validity status\n(unknown/marginal/full) end group @enduml