<mxCell id="WIyWlLk6GJQsqaUBKTNV-6" value="Is key server reachable via Tor requests?" style="rhombus;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=12;align=center;strokeWidth=1;spacing=6;spacingTop=-4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="WIyWlLk6GJQsqaUBKTNV-6" value="Is key server reachable via Tor requests?" style="rhombus;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=12;align=center;strokeWidth=1;spacing=6;spacingTop=-4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-3" value="Download Keyserver's public key, which is encrypted for Komrade, from Keyserver<br><br>Decrypt Keyserver's public key" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-3" value="Download Keyserver's public key, which is encrypted for Komrade, from Keyserver<br><br>Decrypt Keyserver's public key" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-5" value="Is keyserver storing a public key for username "marx"?" style="rhombus;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=12;align=center;strokeWidth=1;spacing=6;spacingTop=-4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-5" value="Is keyserver storing a public key for username "marx"?" style="rhombus;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=12;align=center;strokeWidth=1;spacing=6;spacingTop=-4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-14" value="Do I have a .marx.key?" style="rhombus;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=12;align=center;strokeWidth=1;spacing=6;spacingTop=-4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-14" value="Do I have a .marx.key?" style="rhombus;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=12;align=center;strokeWidth=1;spacing=6;spacingTop=-4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-72" value="<div><span>[Server]</span></div><div><br></div><div>Receive 2 encryped public keys from user</div><div><br></div><div>Decrypt first public key:</div><div><i>to</i>: me,&nbsp;<span><i>from</i>: komrade</span></div><div><br></div><div>Decrypt second public key:</div><div><i>to</i>: me, <i>from:</i>&nbsp;<span>decrypted first pubkey</span></div>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-72" value="<div><span>[Server]</span></div><div><br></div><div>Receive 2 encryped public keys from user</div><div><br></div><div>Decrypt first public key:</div><div><i>to</i>: me,&nbsp;<span><i>from</i>: komrade</span></div><div><br></div><div>Decrypt second public key:</div><div><i>to</i>: me, <i>from:</i>&nbsp;<span>decrypted first pubkey</span></div>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-86" value="Login failed. You claim to be marx but cannot decrypt his key." style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#f8cecc;strokeColor=#b85450;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-86" value="Login failed. You claim to be marx but cannot decrypt his key." style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#f8cecc;strokeColor=#b85450;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-88" value="<div>[Client]</div><div><br></div><div>As before, encrypt my public key twice:</div><div><br></div><div>(1) to keyserver, from komrade</div><div>(2) to keyserver, from me</div><div><br></div><div>Send both to server</div>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-88" value="<div>[Client]</div><div><br></div><div>As before, encrypt my public key twice:</div><div><br></div><div>(1) to keyserver, from komrade</div><div>(2) to keyserver, from me</div><div><br></div><div>Send both to server</div>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-97" value="<div><span>[Client] -&gt; [Server]</span></div><div><br></div><div>Encrypt my public key,&nbsp;</div><div><span><i>to</i>: keyserver,&nbsp;</span><i>from</i><span>: komrade</span></div><div><br></div><div>Encrypt my public key again,</div><div><i>to</i>: keyserver,&nbsp;<i>from</i><span>: me</span></div><div><br></div><div>Send my 2 encrypted public keys to keyserver</div>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-97" value="<div><span>[Client] -&gt; [Server]</span></div><div><br></div><div>Encrypt my public key,&nbsp;</div><div><span><i>to</i>: keyserver,&nbsp;</span><i>from</i><span>: komrade</span></div><div><br></div><div>Encrypt my public key again,</div><div><i>to</i>: keyserver,&nbsp;<i>from</i><span>: me</span></div><div><br></div><div>Send my 2 encrypted public keys to keyserver</div>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-101" value="<div><span>[Server]</span></div><div><span><br></span></div><div>Save first decrypted key</div><div>(to me, from komrade) to</div><div>~/.komrade/.keyserver/.marx.loc</div><div><br></div><div>Send second decrypted pubkey</div><div>(to me, from user) to</div><div>~/.komrade/.keyserver/.marx.loc.box</div><div><br></div><div><div>Send back to user OK response</div></div>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-101" value="<div><span>[Server]</span></div><div><span><br></span></div><div>Save first decrypted key</div><div>(to me, from komrade) to</div><div>~/.komrade/.keyserver/.marx.loc</div><div><br></div><div>Send second decrypted pubkey</div><div>(to me, from user) to</div><div>~/.komrade/.keyserver/.marx.loc.box</div><div><br></div><div><div>Send back to user OK response</div></div>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-105" value="<div><span>[Server]</span></div><div><br></div><div>Receive 2 encryped public keys from user</div><div><br></div><div>Decrypt first public key:</div><div><i>to</i>: me,&nbsp;<span><i>from</i>: komrade</span></div><div><br></div><div>Decrypt second public key:</div><div><i>to</i>: me, <i>from:</i>&nbsp;<span>decrypted first pubkey</span></div><div><span><br></span></div><div><span>Do same with those 2 already on disk</span></div>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-105" value="<div><span>[Server]</span></div><div><br></div><div>Receive 2 encryped public keys from user</div><div><br></div><div>Decrypt first public key:</div><div><i>to</i>: me,&nbsp;<span><i>from</i>: komrade</span></div><div><br></div><div>Decrypt second public key:</div><div><i>to</i>: me, <i>from:</i>&nbsp;<span>decrypted first pubkey</span></div><div><span><br></span></div><div><span>Do same with those 2 already on disk</span></div>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-111" value="[Server] All four decrypted keys match each other?" style="rhombus;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=12;align=center;strokeWidth=1;spacing=6;spacingTop=-4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-111" value="[Server] All four decrypted keys match each other?" style="rhombus;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=12;align=center;strokeWidth=1;spacing=6;spacingTop=-4;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-112" value="<div><span>[Server]</span></div><div><span><br></span></div><div><span>Send back to user OK response</span><br></div>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-112" value="<div><span>[Server]</span></div><div><span><br></span></div><div><span>Send back to user OK response</span><br></div>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-114" value="<div><span>[Server]</span><br></div><div><span><br></span></div><div><span>Send back to user FAIL response</span><br></div>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="UarGHlLd0uthddKlq-wd-114" value="<div><span>[Server]</span><br></div><div><span><br></span></div><div><span>Send back to user FAIL response</span><br></div>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="pqJTde5UYUQTvpoNPmt8-2" value="Does decrypted Keyserver pubkey match the one hardcoded into the app code?" style="rhombus;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=12;align=center;strokeWidth=1;spacing=6;spacingTop=-4;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxCell id="pqJTde5UYUQTvpoNPmt8-2" value="Does decrypted Keyserver pubkey match the one hardcoded into the app code?" style="rhombus;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=12;align=center;strokeWidth=1;spacing=6;spacingTop=-4;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxCell id="LL1DRk6oRKZlNUp4qJ55-7" value="Yes (say I'm logged in as "elon")" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="LL1DRk6oRKZlNUp4qJ55-2">
<mxCell id="LL1DRk6oRKZlNUp4qJ55-7" value="Yes (say I'm logged in as "elon")" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;noEdgeStyle=1;orthogonal=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="LL1DRk6oRKZlNUp4qJ55-2" target="LL1DRk6oRKZlNUp4qJ55-6">
<mxGeometry relative="1" as="geometry">
<mxGeometry relative="1" as="geometry">
<mxPoint x="990" y="1510" as="targetPoint" />
<mxPoint x="990" y="1510" as="targetPoint" />
<Array as="points">
<mxPoint x="791.9883333333333" y="1643.5" />
<mxPoint x="889.7299999999999" y="1719.5" />
</Array>
</mxGeometry>
</mxGeometry>
</mxCell>
</mxCell>
<mxCell id="LL1DRk6oRKZlNUp4qJ55-2" value="Do I have <i>any </i>private key? (Have I registered and logged in as a user yet?)" style="rhombus;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=12;align=center;strokeWidth=1;spacing=6;spacingTop=-4;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxCell id="LL1DRk6oRKZlNUp4qJ55-2" value="Do I have <i>any </i>private key? (Have I registered and logged in as a user yet?)" style="rhombus;whiteSpace=wrap;html=1;shadow=0;fontFamily=Helvetica;fontSize=12;align=center;strokeWidth=1;spacing=6;spacingTop=-4;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxCell id="LL1DRk6oRKZlNUp4qJ55-3" value="Meet failed. Who are you?" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxCell id="LL1DRk6oRKZlNUp4qJ55-3" value="Meet failed. Who are you?" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxCell id="LL1DRk6oRKZlNUp4qJ55-6" value="<div><span>[Client]</span></div><div><br></div><div><span>Encrypt a request for marx's public key (to: Keyserver, from: elon)</span><br></div><div><br></div><div><div>Form a request to keyserver:</div><div><i>i_am:</i><span>&nbsp;elon</span><br></div><div><span><i>my_request</i>: encrypted(whois marx?)</span></div><div><br></div></div><div><br></div><div>Send original and encrypted request</div>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxCell id="LL1DRk6oRKZlNUp4qJ55-6" value="<div><span>[Client]</span></div><div><br></div><div><span>Encrypt a request for marx's public key (to: Keyserver, from: elon)</span><br></div><div><br></div><div><div>Send request to keyserver:</div><div><i>i_am:</i><span>&nbsp;elon</span><br></div><div><i>my_req</i>: encrypted(whois marx?)</div></div>" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">