mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-06-06 17:42:31 +00:00
3e07161121
* docs: remove connection ID from simplex-messaging.md, #8 * docs: remove alternative flow in simplex-messaging, #20 * docs: update simplex diagrams to remove connection ID * docs: remove connection ID from graph-chat * docs: update duplex connection diagram to remove connection ID, closes #8
505 lines
15 KiB
XML
505 lines
15 KiB
XML
<svg id="mermaid-1579982240806" width="100%" xmlns="http://www.w3.org/2000/svg" height="100%" style="max-width:650px;" viewBox="-50 -10 650 355"><style>
|
|
|
|
|
|
|
|
#mermaid-1579982240806 .label {
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family);
|
|
color: #333; }
|
|
|
|
#mermaid-1579982240806 .label text {
|
|
fill: #333; }
|
|
|
|
#mermaid-1579982240806 .node rect,
|
|
#mermaid-1579982240806 .node circle,
|
|
#mermaid-1579982240806 .node ellipse,
|
|
#mermaid-1579982240806 .node polygon,
|
|
#mermaid-1579982240806 .node path {
|
|
fill: #ECECFF;
|
|
stroke: #9370DB;
|
|
stroke-width: 1px; }
|
|
|
|
#mermaid-1579982240806 .node .label {
|
|
text-align: center; }
|
|
|
|
#mermaid-1579982240806 .node.clickable {
|
|
cursor: pointer; }
|
|
|
|
#mermaid-1579982240806 .arrowheadPath {
|
|
fill: #333333; }
|
|
|
|
#mermaid-1579982240806 .edgePath .path {
|
|
stroke: #333333;
|
|
stroke-width: 1.5px; }
|
|
|
|
#mermaid-1579982240806 .edgeLabel {
|
|
background-color: #e8e8e8;
|
|
text-align: center; }
|
|
|
|
#mermaid-1579982240806 .cluster rect {
|
|
fill: #ffffde;
|
|
stroke: #aaaa33;
|
|
stroke-width: 1px; }
|
|
|
|
#mermaid-1579982240806 .cluster text {
|
|
fill: #333; }
|
|
|
|
#mermaid-1579982240806 div.mermaidTooltip {
|
|
position: absolute;
|
|
text-align: center;
|
|
max-width: 200px;
|
|
padding: 2px;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family);
|
|
font-size: 12px;
|
|
background: #ffffde;
|
|
border: 1px solid #aaaa33;
|
|
border-radius: 2px;
|
|
pointer-events: none;
|
|
z-index: 100; }
|
|
|
|
#mermaid-1579982240806 .actor {
|
|
stroke: #CCCCFF;
|
|
fill: #ECECFF; }
|
|
|
|
#mermaid-1579982240806 text.actor {
|
|
fill: black;
|
|
stroke: none; }
|
|
|
|
#mermaid-1579982240806 .actor-line {
|
|
stroke: grey; }
|
|
|
|
#mermaid-1579982240806 .messageLine0 {
|
|
stroke-width: 1.5;
|
|
stroke-dasharray: '2 2';
|
|
stroke: #333; }
|
|
|
|
#mermaid-1579982240806 .messageLine1 {
|
|
stroke-width: 1.5;
|
|
stroke-dasharray: '2 2';
|
|
stroke: #333; }
|
|
|
|
#mermaid-1579982240806 #arrowhead {
|
|
fill: #333; }
|
|
|
|
#mermaid-1579982240806 .sequenceNumber {
|
|
fill: white; }
|
|
|
|
#mermaid-1579982240806 #sequencenumber {
|
|
fill: #333; }
|
|
|
|
#mermaid-1579982240806 #crosshead path {
|
|
fill: #333 !important;
|
|
stroke: #333 !important; }
|
|
|
|
#mermaid-1579982240806 .messageText {
|
|
fill: #333;
|
|
stroke: none; }
|
|
|
|
#mermaid-1579982240806 .labelBox {
|
|
stroke: #CCCCFF;
|
|
fill: #ECECFF; }
|
|
|
|
#mermaid-1579982240806 .labelText {
|
|
fill: black;
|
|
stroke: none; }
|
|
|
|
#mermaid-1579982240806 .loopText {
|
|
fill: black;
|
|
stroke: none; }
|
|
|
|
#mermaid-1579982240806 .loopLine {
|
|
stroke-width: 2;
|
|
stroke-dasharray: '2 2';
|
|
stroke: #CCCCFF; }
|
|
|
|
#mermaid-1579982240806 .note {
|
|
stroke: #aaaa33;
|
|
fill: #fff5ad; }
|
|
|
|
#mermaid-1579982240806 .noteText {
|
|
fill: black;
|
|
stroke: none;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family);
|
|
font-size: 14px; }
|
|
|
|
#mermaid-1579982240806 .activation0 {
|
|
fill: #f4f4f4;
|
|
stroke: #666; }
|
|
|
|
#mermaid-1579982240806 .activation1 {
|
|
fill: #f4f4f4;
|
|
stroke: #666; }
|
|
|
|
#mermaid-1579982240806 .activation2 {
|
|
fill: #f4f4f4;
|
|
stroke: #666; }
|
|
|
|
|
|
#mermaid-1579982240806 .mermaid-main-font {
|
|
font-family: "trebuchet ms", verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579982240806 .section {
|
|
stroke: none;
|
|
opacity: 0.2; }
|
|
|
|
#mermaid-1579982240806 .section0 {
|
|
fill: rgba(102, 102, 255, 0.49); }
|
|
|
|
#mermaid-1579982240806 .section2 {
|
|
fill: #fff400; }
|
|
|
|
#mermaid-1579982240806 .section1,
|
|
#mermaid-1579982240806 .section3 {
|
|
fill: white;
|
|
opacity: 0.2; }
|
|
|
|
#mermaid-1579982240806 .sectionTitle0 {
|
|
fill: #333; }
|
|
|
|
#mermaid-1579982240806 .sectionTitle1 {
|
|
fill: #333; }
|
|
|
|
#mermaid-1579982240806 .sectionTitle2 {
|
|
fill: #333; }
|
|
|
|
#mermaid-1579982240806 .sectionTitle3 {
|
|
fill: #333; }
|
|
|
|
#mermaid-1579982240806 .sectionTitle {
|
|
text-anchor: start;
|
|
font-size: 11px;
|
|
text-height: 14px;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
|
|
#mermaid-1579982240806 .grid .tick {
|
|
stroke: lightgrey;
|
|
opacity: 0.8;
|
|
shape-rendering: crispEdges; }
|
|
#mermaid-1579982240806 .grid .tick text {
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579982240806 .grid path {
|
|
stroke-width: 0; }
|
|
|
|
|
|
#mermaid-1579982240806 .today {
|
|
fill: none;
|
|
stroke: red;
|
|
stroke-width: 2px; }
|
|
|
|
|
|
|
|
#mermaid-1579982240806 .task {
|
|
stroke-width: 2; }
|
|
|
|
#mermaid-1579982240806 .taskText {
|
|
text-anchor: middle;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579982240806 .taskText:not([font-size]) {
|
|
font-size: 11px; }
|
|
|
|
#mermaid-1579982240806 .taskTextOutsideRight {
|
|
fill: black;
|
|
text-anchor: start;
|
|
font-size: 11px;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579982240806 .taskTextOutsideLeft {
|
|
fill: black;
|
|
text-anchor: end;
|
|
font-size: 11px; }
|
|
|
|
|
|
#mermaid-1579982240806 .task.clickable {
|
|
cursor: pointer; }
|
|
|
|
#mermaid-1579982240806 .taskText.clickable {
|
|
cursor: pointer;
|
|
fill: #003163 !important;
|
|
font-weight: bold; }
|
|
|
|
#mermaid-1579982240806 .taskTextOutsideLeft.clickable {
|
|
cursor: pointer;
|
|
fill: #003163 !important;
|
|
font-weight: bold; }
|
|
|
|
#mermaid-1579982240806 .taskTextOutsideRight.clickable {
|
|
cursor: pointer;
|
|
fill: #003163 !important;
|
|
font-weight: bold; }
|
|
|
|
|
|
#mermaid-1579982240806 .taskText0,
|
|
#mermaid-1579982240806 .taskText1,
|
|
#mermaid-1579982240806 .taskText2,
|
|
#mermaid-1579982240806 .taskText3 {
|
|
fill: white; }
|
|
|
|
#mermaid-1579982240806 .task0,
|
|
#mermaid-1579982240806 .task1,
|
|
#mermaid-1579982240806 .task2,
|
|
#mermaid-1579982240806 .task3 {
|
|
fill: #8a90dd;
|
|
stroke: #534fbc; }
|
|
|
|
#mermaid-1579982240806 .taskTextOutside0,
|
|
#mermaid-1579982240806 .taskTextOutside2 {
|
|
fill: black; }
|
|
|
|
#mermaid-1579982240806 .taskTextOutside1,
|
|
#mermaid-1579982240806 .taskTextOutside3 {
|
|
fill: black; }
|
|
|
|
|
|
#mermaid-1579982240806 .active0,
|
|
#mermaid-1579982240806 .active1,
|
|
#mermaid-1579982240806 .active2,
|
|
#mermaid-1579982240806 .active3 {
|
|
fill: #bfc7ff;
|
|
stroke: #534fbc; }
|
|
|
|
#mermaid-1579982240806 .activeText0,
|
|
#mermaid-1579982240806 .activeText1,
|
|
#mermaid-1579982240806 .activeText2,
|
|
#mermaid-1579982240806 .activeText3 {
|
|
fill: black !important; }
|
|
|
|
|
|
#mermaid-1579982240806 .done0,
|
|
#mermaid-1579982240806 .done1,
|
|
#mermaid-1579982240806 .done2,
|
|
#mermaid-1579982240806 .done3 {
|
|
stroke: grey;
|
|
fill: lightgrey;
|
|
stroke-width: 2; }
|
|
|
|
#mermaid-1579982240806 .doneText0,
|
|
#mermaid-1579982240806 .doneText1,
|
|
#mermaid-1579982240806 .doneText2,
|
|
#mermaid-1579982240806 .doneText3 {
|
|
fill: black !important; }
|
|
|
|
|
|
#mermaid-1579982240806 .crit0,
|
|
#mermaid-1579982240806 .crit1,
|
|
#mermaid-1579982240806 .crit2,
|
|
#mermaid-1579982240806 .crit3 {
|
|
stroke: #ff8888;
|
|
fill: red;
|
|
stroke-width: 2; }
|
|
|
|
#mermaid-1579982240806 .activeCrit0,
|
|
#mermaid-1579982240806 .activeCrit1,
|
|
#mermaid-1579982240806 .activeCrit2,
|
|
#mermaid-1579982240806 .activeCrit3 {
|
|
stroke: #ff8888;
|
|
fill: #bfc7ff;
|
|
stroke-width: 2; }
|
|
|
|
#mermaid-1579982240806 .doneCrit0,
|
|
#mermaid-1579982240806 .doneCrit1,
|
|
#mermaid-1579982240806 .doneCrit2,
|
|
#mermaid-1579982240806 .doneCrit3 {
|
|
stroke: #ff8888;
|
|
fill: lightgrey;
|
|
stroke-width: 2;
|
|
cursor: pointer;
|
|
shape-rendering: crispEdges; }
|
|
|
|
#mermaid-1579982240806 .milestone {
|
|
transform: rotate(45deg) scale(0.8, 0.8); }
|
|
|
|
#mermaid-1579982240806 .milestoneText {
|
|
font-style: italic; }
|
|
|
|
#mermaid-1579982240806 .doneCritText0,
|
|
#mermaid-1579982240806 .doneCritText1,
|
|
#mermaid-1579982240806 .doneCritText2,
|
|
#mermaid-1579982240806 .doneCritText3 {
|
|
fill: black !important; }
|
|
|
|
#mermaid-1579982240806 .activeCritText0,
|
|
#mermaid-1579982240806 .activeCritText1,
|
|
#mermaid-1579982240806 .activeCritText2,
|
|
#mermaid-1579982240806 .activeCritText3 {
|
|
fill: black !important; }
|
|
|
|
#mermaid-1579982240806 .titleText {
|
|
text-anchor: middle;
|
|
font-size: 18px;
|
|
fill: black;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579982240806 g.classGroup text {
|
|
fill: #9370DB;
|
|
stroke: none;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family);
|
|
font-size: 10px; }
|
|
#mermaid-1579982240806 g.classGroup text .title {
|
|
font-weight: bolder; }
|
|
|
|
#mermaid-1579982240806 g.clickable {
|
|
cursor: pointer; }
|
|
|
|
#mermaid-1579982240806 g.classGroup rect {
|
|
fill: #ECECFF;
|
|
stroke: #9370DB; }
|
|
|
|
#mermaid-1579982240806 g.classGroup line {
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579982240806 .classLabel .box {
|
|
stroke: none;
|
|
stroke-width: 0;
|
|
fill: #ECECFF;
|
|
opacity: 0.5; }
|
|
|
|
#mermaid-1579982240806 .classLabel .label {
|
|
fill: #9370DB;
|
|
font-size: 10px; }
|
|
|
|
#mermaid-1579982240806 .relation {
|
|
stroke: #9370DB;
|
|
stroke-width: 1;
|
|
fill: none; }
|
|
|
|
#mermaid-1579982240806 .dashed-line {
|
|
stroke-dasharray: 3; }
|
|
|
|
#mermaid-1579982240806 #compositionStart {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579982240806 #compositionEnd {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579982240806 #aggregationStart {
|
|
fill: #ECECFF;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579982240806 #aggregationEnd {
|
|
fill: #ECECFF;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579982240806 #dependencyStart {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579982240806 #dependencyEnd {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579982240806 #extensionStart {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579982240806 #extensionEnd {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579982240806 .commit-id,
|
|
#mermaid-1579982240806 .commit-msg,
|
|
#mermaid-1579982240806 .branch-label {
|
|
fill: lightgrey;
|
|
color: lightgrey;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579982240806 .pieTitleText {
|
|
text-anchor: middle;
|
|
font-size: 25px;
|
|
fill: black;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579982240806 .slice {
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579982240806 g.stateGroup text {
|
|
fill: #9370DB;
|
|
stroke: none;
|
|
font-size: 10px;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1579982240806 g.stateGroup text {
|
|
fill: #9370DB;
|
|
stroke: none;
|
|
font-size: 10px; }
|
|
|
|
#mermaid-1579982240806 g.stateGroup .state-title {
|
|
font-weight: bolder;
|
|
fill: black; }
|
|
|
|
#mermaid-1579982240806 g.stateGroup rect {
|
|
fill: #ECECFF;
|
|
stroke: #9370DB; }
|
|
|
|
#mermaid-1579982240806 g.stateGroup line {
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1579982240806 .transition {
|
|
stroke: #9370DB;
|
|
stroke-width: 1;
|
|
fill: none; }
|
|
|
|
#mermaid-1579982240806 .stateGroup .composit {
|
|
fill: white;
|
|
border-bottom: 1px; }
|
|
|
|
#mermaid-1579982240806 .stateGroup .alt-composit {
|
|
fill: #e0e0e0;
|
|
border-bottom: 1px; }
|
|
|
|
#mermaid-1579982240806 .state-note {
|
|
stroke: #aaaa33;
|
|
fill: #fff5ad; }
|
|
#mermaid-1579982240806 .state-note text {
|
|
fill: black;
|
|
stroke: none;
|
|
font-size: 10px; }
|
|
|
|
#mermaid-1579982240806 .stateLabel .box {
|
|
stroke: none;
|
|
stroke-width: 0;
|
|
fill: #ECECFF;
|
|
opacity: 0.5; }
|
|
|
|
#mermaid-1579982240806 .stateLabel text {
|
|
fill: black;
|
|
font-size: 10px;
|
|
font-weight: bold;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
:root {
|
|
--mermaid-font-family: '"trebuchet ms", verdana, arial';
|
|
--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive; }
|
|
|
|
:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}</style><style>#mermaid-1579982240806 {
|
|
color: rgb(0, 0, 0);
|
|
font: normal normal 400 normal 16px / normal "trebuchet ms", verdana, arial;
|
|
}</style><g></g><g><line id="actor420" x1="75" y1="5" x2="75" y2="344" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="0" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="75" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="75" dy="0">Bob (sender)</tspan></text></g><g><line id="actor421" x1="275" y1="5" x2="275" y2="344" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="200" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="275" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="275" dy="0">server (conn. RU)</tspan></text></g><g><line id="actor422" x1="475" y1="5" x2="475" y2="344" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="400" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="475" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="475" dy="0">Alice (recipient)</tspan></text></g><defs><marker id="arrowhead" refX="5" refY="2" markerWidth="6" markerHeight="4" orient="auto"><path d="M 0,0 V 4 L6,2 Z"></path></marker></defs><defs><marker id="crosshead" markerWidth="15" markerHeight="8" orient="auto" refX="16" refY="4"><path fill="black" stroke="#000000" stroke-width="1px" d="M 9,2 V 6 L16,4 Z" style="stroke-dasharray: 0, 0;"></path><path fill="none" stroke="#000000" stroke-width="1px" d="M 0,1 L 6,7 M 6,1 L 0,7" style="stroke-dasharray: 0, 0;"></path></marker></defs><defs><marker id="sequencenumber" refX="15" refY="15" markerWidth="60" markerHeight="40" orient="auto"><circle cx="15" cy="15" r="6"></circle></marker></defs><g><rect x="0" y="75" fill="#EDF2AE" stroke="#666" width="150" height="52" rx="0" ry="0" class="note"></rect><text x="-4" y="99" class="noteText"><tspan x="16">encrypt message </tspan></text><text x="-4" y="115" class="noteText"><tspan x="16"> ("public" key EK)</tspan></text></g><g><text x="175" y="155" class="messageText" style="text-anchor: middle;">1. send message to SU (SK-signed req)</text><line x1="75" y1="162" x2="275" y2="162" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="375" y="190" class="messageText" style="text-anchor: middle;">2. retrieve messages from RU (RK-signed req)</text><line x1="275" y1="197" x2="475" y2="197" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><rect x="400" y="207" fill="#EDF2AE" stroke="#666" width="150" height="52" rx="0" ry="0" class="note"></rect><text x="396" y="231" class="noteText"><tspan x="416">decrypt message </tspan></text><text x="396" y="247" class="noteText"><tspan x="416"> ("private" key EK)</tspan></text></g><g><rect x="0" y="279" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="75" y="311.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="75" dy="0">Bob (sender)</tspan></text></g><g><rect x="200" y="279" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="275" y="311.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="275" dy="0">server (conn. RU)</tspan></text></g><g><rect x="400" y="279" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="475" y="311.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle; font-size: 14px;"><tspan x="475" dy="0">Alice (recipient)</tspan></text></g></svg> |