<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-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-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-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-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-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-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="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-5" value="<div><span>[Server]</span></div><div><br></div><div>Receive double-encrypted request from client</div><div><br></div><div>Decrypt first time (to: Keysever, from: Komrade)&nbsp;<span>to reveal a second encryted request [i.e.&nbsp;</span><i>Q(i_am:&nbsp;</i><span>elon,</span></div><div><i>my_req</i><span>: elon-encrypted 'whois marx']</span></div><div><span><br></span></div><div><span>Get the encrypted public key I have on disk for 'elon', decrypt it (to: Keysever, from: Komrade)</span></div><div><span><br></span></div><div><span>Attempt to decrypt 'my_req' using elon's loaded-from-disk public key</span></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-9" value="Is the request from 'elon' decryptable according to Keysever's public key for 'elon'?" 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-10" value="Meet failed. You say you are elon, but your request was indecipherable in elon-ese." style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">