<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="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;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="LL1DRk6oRKZlNUp4qJ55-7" value="Yes<br>(e.g. 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">
<mxCell id="LL1DRk6oRKZlNUp4qJ55-7" value="Yes<br>(e.g. 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;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="LL1DRk6oRKZlNUp4qJ55-2" target="LL1DRk6oRKZlNUp4qJ55-6" edge="1">
<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">
<Array as="points">
@ -321,13 +321,13 @@
</Array>
</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;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="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;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="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-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;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="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-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;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="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">
<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;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="LL1DRk6oRKZlNUp4qJ55-13" value="<div><span>[Server]</span></div><div><br></div><div>Encrypt marx's public key</div><div>(to elon, from Keyserver)</div><div><br></div><div>Send marx's encrypted public key back to client</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-13" value="<div><span>[Server]</span></div><div><br></div><div>Encrypt marx's public key</div><div>(to elon, from Keyserver)</div><div><br></div><div>Send marx's encrypted public key back to client</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="LL1DRk6oRKZlNUp4qJ55-19" value="Meet failed. Either Keysever not authentic according to me, or I'm not authentic according to Keysever." 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-19" value="Meet failed. Either Keysever not authentic according to me, or I'm not authentic according to Keysever." 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="LL1DRk6oRKZlNUp4qJ55-23" value="Meet succeeded. I now have marx's pubic key." style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxCell id="LL1DRk6oRKZlNUp4qJ55-23" value="Meet succeeded. I now have marx's pubic key." style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="LL1DRk6oRKZlNUp4qJ55-26" value="<div>[Client] (optional)</div><div><br></div><div>Encrypt marx's public key with my passphrase-key</div><div><br></div><div>Store marx's symmetric-encrypted public key on disk (.marx.loc)</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-26" value="<div>[Client] (optional)</div><div><br></div><div>Encrypt marx's public key with my passphrase-key</div><div><br></div><div>Store marx's symmetric-encrypted public key on disk (.marx.loc)</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="vqK7_8CrzfybD09zykYy-1" value="[App] Ask user for passphrase to guard this personal account." style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxCell id="vqK7_8CrzfybD09zykYy-1" value="[App] Ask user for passphrase to guard this personal account." style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="vqK7_8CrzfybD09zykYy-2" value="[App] Ask user: will this new persona be for an individual or a group?" 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="vqK7_8CrzfybD09zykYy-2" value="[App] Ask user: will this new persona be for an individual or a group?" 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="vqK7_8CrzfybD09zykYy-10" value="[App] Ask user: who can find and send messages to this account?" 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="vqK7_8CrzfybD09zykYy-10" value="[App] Ask user: who can find and send messages to this account?" 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="vqK7_8CrzfybD09zykYy-20" value="Send to Keyclient a version of my public key which is encrypted with my symmetric key" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxCell id="vqK7_8CrzfybD09zykYy-20" value="Send to Keyclient a version of my public key which is encrypted with my symmetric key" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="vqK7_8CrzfybD09zykYy-29" value="Send to Keyclient my public key" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxCell id="vqK7_8CrzfybD09zykYy-29" value="Send to Keyclient my public key" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;align=center;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxCell id="73GR58doEz6CpVxRXi9i-1" value="Logged-in user "elon" wants to read the posts stored in a particular channel or inbox (e.g. "/inbox/user" or "/inbox/group" or "/inbox/world")" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="rmWX_bm3A8y1wPHU716J-1">
<mxCell id="73GR58doEz6CpVxRXi9i-1" value="Logged-in user "elon" wants to read the posts stored in a particular channel or inbox (e.g. "/inbox/user" or "/inbox/group" or "/inbox/world")" style="rounded=1;whiteSpace=wrap;html=1;fontSize=12;glass=0;strokeWidth=1;shadow=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="rmWX_bm3A8y1wPHU716J-1">
<mxCell id="73GR58doEz6CpVxRXi9i-4" value="Do I have that person's private 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;" vertex="1" parent="rmWX_bm3A8y1wPHU716J-1">
<mxCell id="73GR58doEz6CpVxRXi9i-4" value="Do I have that person's private 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;" vertex="1" parent="rmWX_bm3A8y1wPHU716J-1">
<mxCell id="73GR58doEz6CpVxRXi9i-6" 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;" vertex="1" parent="rmWX_bm3A8y1wPHU716J-1">
<mxCell id="73GR58doEz6CpVxRXi9i-6" 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;" vertex="1" parent="rmWX_bm3A8y1wPHU716J-1">