Jan Dittberner
6f8ac9818c
This commit adds the Framer and Server Protocol components to the component diagram.
854 lines
No EOL
63 KiB
XML
854 lines
No EOL
63 KiB
XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="1432.8px" preserveAspectRatio="none" style="width:1843px;height:1432px;background:#FFFFFF;" version="1.1" viewBox="0 0 1843 1432" width="1843.2px" zoomAndPan="magnify"><defs/><g><!--MD5=[ef20b3fe45c502f37db21f37a527870c]
|
||
cluster Signer--><g id="cluster_Signer"><rect fill="none" height="1062" rx="2.25" ry="2.25" style="stroke:#444444;stroke-width:0.9;stroke-dasharray:7.0,7.0;" width="1393.2" x="6.3" y="150.3"/><text fill="#444444" font-family="sans-serif" font-size="5.4" font-style="italic" lengthAdjust="spacing" textLength="34.2" x="685.8" y="157.1124">«boundary»</text><text fill="#444444" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="109.8" x="648" y="174.4664">Signer server</text><text fill="#444444" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="54.9" x="675.45" y="187.8873">[System]</text></g><!--MD5=[1bab5bcae8e0c09a8d95c3a3ae22aa87]
|
||
cluster SignerSoftware--><g id="cluster_SignerSoftware"><rect fill="none" height="978.3" rx="2.25" ry="2.25" style="stroke:#444444;stroke-width:0.9;stroke-dasharray:7.0,7.0;" width="1216.8" x="27.9" y="212.4"/><text fill="#444444" font-family="sans-serif" font-size="5.4" font-style="italic" lengthAdjust="spacing" textLength="34.2" x="619.2" y="219.2124">«boundary»</text><text fill="#444444" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="132.3" x="570.15" y="236.5664">Signer Software</text></g><!--MD5=[4e4416bf7ebbd0afd89bc8fc82d4e864]
|
||
cluster Signer2--><g id="cluster_Signer2"><rect fill="none" height="471.6" rx="2.25" ry="2.25" style="stroke:#444444;stroke-width:0.9;stroke-dasharray:7.0,7.0;" width="416.7" x="1421.1" y="955.8"/><text fill="#444444" font-family="sans-serif" font-size="5.4" font-style="italic" lengthAdjust="spacing" textLength="34.2" x="1612.35" y="962.6124">«boundary»</text><text fill="#444444" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="102.6" x="1578.15" y="979.9664">Other signer</text><text fill="#444444" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="54.9" x="1602" y="993.3873">[System]</text></g><!--MD5=[fd28193bdccf8ac8e7e1a1a0fe20b8a9]
|
||
cluster SignerSoftware2--><g id="cluster_SignerSoftware2"><rect fill="none" height="387.9" rx="2.25" ry="2.25" style="stroke:#444444;stroke-width:0.9;stroke-dasharray:7.0,7.0;" width="221.4" x="1594.8" y="1017.9"/><text fill="#444444" font-family="sans-serif" font-size="5.4" font-style="italic" lengthAdjust="spacing" textLength="34.2" x="1688.4" y="1024.7124">«boundary»</text><text fill="#444444" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="132.3" x="1639.35" y="1042.0664">Signer Software</text></g><!--MD5=[8f869394a97c4ccf4e0e1a7d0f555823]
|
||
entity NATS--><g id="elem_NATS"><path d="M1263.6,1094.85 L1380.6,1094.85 C1385.1,1094.85 1385.1,1120.3031 1385.1,1120.3031 C1385.1,1120.3031 1385.1,1145.7563 1380.6,1145.7563 L1263.6,1145.7563 C1259.1,1145.7563 1259.1,1120.3031 1259.1,1120.3031 C1259.1,1120.3031 1259.1,1094.85 1263.6,1094.85 " fill="#85BBF0" style="stroke:#78A8D8;stroke-width:0.45;"/><path d="M1380.6,1094.85 C1376.1,1094.85 1376.1,1120.3031 1376.1,1120.3031 C1376.1,1145.7563 1380.6,1145.7563 1380.6,1145.7563 " fill="none" style="stroke:#78A8D8;stroke-width:0.45;"/><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="74.7" x="1280.25" y="1109.3748">«component»</text><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="108" x="1263.6" y="1125.2883">NATS Service</text><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="37.8" x="1298.7" y="1138.7092">[NATS]</text></g><!--MD5=[1b07182dd713ed4e3be3a95ab68a0fd5]
|
||
entity SerialHandler--><g id="elem_SerialHandler"><rect fill="#85BBF0" height="103.9078" rx="2.25" ry="2.25" style="stroke:#78A8D8;stroke-width:0.45;" width="174.6" x="273.6" y="254.7"/><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="74.7" x="323.55" y="273.7248">«component»</text><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="147.6" x="287.1" y="289.6383">Serial link handler</text><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="23.4" x="349.2" y="303.0592">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="3.6" x="359.1" y="317.3019"> </text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="149.4" x="286.2" y="331.969">Reads and writes to the</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="96.3" x="312.75" y="346.6362">serial interface</text></g><!--MD5=[ba1642c7c3a493b3e7478514b208a0b1]
|
||
entity Framer--><g id="elem_Framer"><rect fill="#85BBF0" height="89.2406" rx="2.25" ry="2.25" style="stroke:#78A8D8;stroke-width:0.45;" width="190.8" x="197.1" y="432.9"/><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="74.7" x="255.15" y="451.9248">«component»</text><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="59.4" x="262.8" y="467.8383">Framer</text><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="23.4" x="280.8" y="481.2592">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="3.6" x="290.7" y="495.5019"> </text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="169.2" x="209.7" y="510.169">Parses and creates frames</text></g><!--MD5=[deb8adcbb2c5b1682b59342c487f75be]
|
||
entity ServerProtocol--><g id="elem_ServerProtocol"><rect fill="#85BBF0" height="103.9078" rx="2.25" ry="2.25" style="stroke:#78A8D8;stroke-width:0.45;" width="159.3" x="419.85" y="425.7"/><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="74.7" x="462.15" y="444.7248">«component»</text><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="126" x="436.5" y="460.6383">Server protocol</text><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="23.4" x="487.8" y="474.0592">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="3.6" x="497.7" y="488.3019"> </text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="134.1" x="432.45" y="502.969">Server protocol state</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="55.8" x="471.6" y="517.6362">machine</text></g><!--MD5=[3d42f30e2a78c2aed96731e8102a93c9]
|
||
entity ProtocolHandler--><g id="elem_ProtocolHandler"><rect fill="#85BBF0" height="103.9078" rx="2.25" ry="2.25" style="stroke:#78A8D8;stroke-width:0.45;" width="152.1" x="423.45" y="596.7"/><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="74.7" x="462.15" y="615.7248">«component»</text><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="134.1" x="432.45" y="631.6383">Protocol handler</text><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="23.4" x="487.8" y="645.0592">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="3.6" x="497.7" y="659.3019"> </text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="120.6" x="439.2" y="673.969">Parses and creates</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="120.6" x="439.2" y="688.6362">protocol messages</text></g><!--MD5=[1011eedbd8ff904aa9b61ed64da000c5]
|
||
entity X509SigningHandler--><g id="elem_X509SigningHandler"><rect fill="#85BBF0" height="103.9078" rx="2.25" ry="2.25" style="stroke:#78A8D8;stroke-width:0.45;" width="186.3" x="612.45" y="776.25"/><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="74.7" x="668.25" y="795.2748">«component»</text><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="108.9" x="651.15" y="811.1883">X.509 signing</text><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="23.4" x="693.9" y="824.6092">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="3.6" x="703.8" y="838.8519"> </text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="161.1" x="625.05" y="853.519">Handles X.509 certificate</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="120.6" x="645.3" y="868.1862">signing commands</text></g><!--MD5=[1c6dc598b8ad1e32344a0fe24eeaf662]
|
||
entity X509RevocationHandler--><g id="elem_X509RevocationHandler"><rect fill="#85BBF0" height="103.9078" rx="2.25" ry="2.25" style="stroke:#78A8D8;stroke-width:0.45;" width="186.3" x="830.25" y="776.25"/><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="74.7" x="886.05" y="795.2748">«component»</text><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="136.8" x="855" y="811.1883">X.509 revocation</text><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="23.4" x="911.7" y="824.6092">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="3.6" x="921.6" y="838.8519"> </text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="161.1" x="842.85" y="853.519">Handles X.509 certificate</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="143.1" x="851.85" y="868.1862">revocation commands</text></g><!--MD5=[6f59e0a59673b0784d2b49aad5931220]
|
||
entity OpenPGPSigningHandler--><g id="elem_OpenPGPSigningHandler"><rect fill="#85BBF0" height="103.9078" rx="2.25" ry="2.25" style="stroke:#78A8D8;stroke-width:0.45;" width="165.6" x="42.3" y="776.25"/><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="74.7" x="87.75" y="795.2748">«component»</text><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="138.6" x="55.8" y="811.1883">OpenPGP signing</text><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="23.4" x="113.4" y="824.6092">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="3.6" x="123.3" y="838.8519"> </text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="140.4" x="54.9" y="853.519">Handles OpenPGP key</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="126" x="62.1" y="868.1862">signing commands"</text></g><!--MD5=[ac60de3e2d5367fb8173a39d1f6f967e]
|
||
entity X509CRLHandler--><g id="elem_X509CRLHandler"><rect fill="#85BBF0" height="103.9078" rx="2.25" ry="2.25" style="stroke:#78A8D8;stroke-width:0.45;" width="146.7" x="239.85" y="776.25"/><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="74.7" x="275.85" y="795.2748">«component»</text><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="71.1" x="277.65" y="811.1883">X.509 crl</text><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="23.4" x="301.5" y="824.6092">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="3.6" x="311.4" y="838.8519"> </text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="121.5" x="252.45" y="853.519">Handles X.509 CRL</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="128.7" x="248.85" y="868.1862">retrieval commands</text></g><!--MD5=[04880e5e31ecc78df75a393e279e8df9]
|
||
entity HealthHandler--><g id="elem_HealthHandler"><rect fill="#85BBF0" height="103.9078" rx="2.25" ry="2.25" style="stroke:#78A8D8;stroke-width:0.45;" width="162.9" x="418.05" y="776.25"/><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="74.7" x="462.15" y="795.2748">«component»</text><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="104.4" x="447.3" y="811.1883">Health check</text><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="23.4" x="487.8" y="824.6092">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="3.6" x="497.7" y="838.8519"> </text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="137.7" x="430.65" y="853.519">Handles health check</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="71.1" x="463.95" y="868.1862">commands</text></g><!--MD5=[58d078c34e72bc75166669b12cea25ab]
|
||
entity HSMAccess--><g id="elem_HSMAccess"><rect fill="#85BBF0" height="103.9078" rx="2.25" ry="2.25" style="stroke:#78A8D8;stroke-width:0.45;" width="174.6" x="232.2" y="1068.75"/><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="74.7" x="282.15" y="1087.7748">«component»</text><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="96.3" x="271.35" y="1103.6883">HSM access</text><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="23.4" x="307.8" y="1117.1092">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="3.6" x="317.7" y="1131.3519"> </text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="149.4" x="244.8" y="1146.019">Handles HSM hardware</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="43.2" x="297.9" y="1160.6862">access</text></g><!--MD5=[2db99c1383d9a8197df41033e0363f36]
|
||
entity SyncHandler--><g id="elem_SyncHandler"><rect fill="#85BBF0" height="120.6703" rx="2.25" ry="2.25" style="stroke:#78A8D8;stroke-width:0.45;" width="181.8" x="1048.5" y="767.7"/><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="74.7" x="1102.05" y="786.7248">«component»</text><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="128.7" x="1072.35" y="802.6383">Synchronization</text><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="61.2" x="1108.8" y="819.4008">handler</text><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="23.4" x="1127.7" y="832.8217">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="3.6" x="1137.6" y="847.0644"> </text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="156.6" x="1061.1" y="861.7315">Handles synchronization</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="107.1" x="1085.85" y="876.3987">with other signer</text></g><!--MD5=[e834ab3daed066426c91d2e7962575e2]
|
||
entity SignerDB--><g id="elem_SignerDB"><path d="M563.4,1073.7 C563.4,1064.7 659.7,1064.7 659.7,1064.7 C659.7,1064.7 756,1064.7 756,1073.7 L756,1166.9063 C756,1175.9063 659.7,1175.9063 659.7,1175.9063 C659.7,1175.9063 563.4,1175.9063 563.4,1166.9063 L563.4,1073.7 " fill="#85BBF0" style="stroke:#78A8D8;stroke-width:0.45;"/><path d="M563.4,1073.7 C563.4,1082.7 659.7,1082.7 659.7,1082.7 C659.7,1082.7 756,1082.7 756,1073.7 " fill="none" style="stroke:#78A8D8;stroke-width:0.45;"/><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="74.7" x="622.35" y="1096.3248">«component»</text><image height="43.2" width="43.2" x="638.1" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACtklEQVR4Xu2XrUqFQRCGTzUIYhOLQWyCGKzHZrAYtYnYLApWwfIVk8kseAHaLV6Cl+AleAk+nMFhndmf72/xE3x5kXPW3dl3Z2Zn58ya189JceaHfpfdBF0/vZ/dvRxd3e8dnm7PjzZ39+H61s7q2gZ/IV8Zh/PjS6ZdPLzdPH94OxmWBWH04PyWnWZ9sbS8gkT0cR5v3zApiMW4AVvW/DDgRZT57ZRxQUixlkYF5yT0ft+4IA5hDdQBmeB3t4JIRruuJnzKW0FDkrcHfOD+Bf3EHxREkbCLqoHLb3aPCGrqFyEFb4DfPSIIntw88jxZA+OBl8Rf+JwglTVuShEj6lz+RbOCorPxLYYQ1+Npw9OZl9X7yQqSjiK6WMl/cR57UPshWkk7/kK+Mg65Pn6zkMyJvmgRQXIyPrAmb7QHOQy61dMdBCl4azHByrzbUuRIRFx6On9R+ggywChzJEYaICKoQZTYkTecpJhzZUGTe+2bqfVDwtrFOnq/coKaqfXUIaUqDonjoF8dstLPE474uwxTTPOBs4Lk2nMmMi5layARgRRxXltBCq2K3m4nymvjk9JbLggKgS0piTgP69giIuwE8SXkAyOMQyZoebSGApQF1b7wBj7NrSBmjH7VU8B/ZveIINHkX8HRQUD91nFBQi5tJVk4xkeqLEg4vCoKtDYWS4kVNE/3vFIS54teFuelUo1xyBlQIPcxZVAaSzNoBcm1x1b0N0qKcu39eIqaD20FCViDPzopyxDFeEtrtKCboBBhCDIvlJIJJsTW4gJlQeYERZAubCaU7LEzsvDut4KQbBdVA2cwu0cENYsfrHZpBZAD0bhHBDXfzYq1MRIIa6bligsScgKyeHhVFEhtxP1+o5A5QSHJrTbtRAhtV1o2r8K2ggx996MdkjRJfklL9hRUj5MT9AU1SPnpo3eZPgAAAABJRU5ErkJggg==" y="1098.8719"/><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="174.6" x="572.4" y="1155.4383">Certificate repository</text><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="165.6" x="576.9" y="1168.8592">[Go, Embedded Key-Value DB]</text></g><!--MD5=[8940efdef782accd207644e2a21c9a46]
|
||
entity NATS2--><g id="elem_NATS2"><path d="M1440,1309.95 L1573.2,1309.95 C1577.7,1309.95 1577.7,1335.4031 1577.7,1335.4031 C1577.7,1335.4031 1577.7,1360.8563 1573.2,1360.8563 L1440,1360.8563 C1435.5,1360.8563 1435.5,1335.4031 1435.5,1335.4031 C1435.5,1335.4031 1435.5,1309.95 1440,1309.95 " fill="#CCCCCC" style="stroke:#BFBFBF;stroke-width:0.45;"/><path d="M1573.2,1309.95 C1568.7,1309.95 1568.7,1335.4031 1568.7,1335.4031 C1568.7,1360.8563 1573.2,1360.8563 1573.2,1360.8563 " fill="none" style="stroke:#BFBFBF;stroke-width:0.45;"/><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="124.2" x="1440" y="1324.4748">«external_component»</text><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="108" x="1448.1" y="1340.3883">NATS Service</text><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="37.8" x="1483.2" y="1353.8092">[NATS]</text></g><!--MD5=[3d669a59ee04a28ec5dc9358aab5f1b1]
|
||
entity SyncHandler2--><g id="elem_SyncHandler2"><rect fill="#CCCCCC" height="120.6703" rx="2.25" ry="2.25" style="stroke:#BFBFBF;stroke-width:0.45;" width="181.8" x="1611.9" y="1060.2"/><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="124.2" x="1640.7" y="1079.2248">«external_component»</text><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="128.7" x="1635.75" y="1095.1383">Synchronization</text><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="61.2" x="1672.2" y="1111.9008">handler</text><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="23.4" x="1691.1" y="1125.3217">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="3.6" x="1701" y="1139.5644"> </text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="156.6" x="1624.5" y="1154.2315">Handles synchronization</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="107.1" x="1649.25" y="1168.8987">with other signer</text></g><!--MD5=[d6aaf1a0f5c32983fa5796596196f201]
|
||
entity SignerDB2--><g id="elem_SignerDB2"><path d="M1609.2,1288.8 C1609.2,1279.8 1705.5,1279.8 1705.5,1279.8 C1705.5,1279.8 1801.8,1279.8 1801.8,1288.8 L1801.8,1382.0063 C1801.8,1391.0063 1705.5,1391.0063 1705.5,1391.0063 C1705.5,1391.0063 1609.2,1391.0063 1609.2,1382.0063 L1609.2,1288.8 " fill="#CCCCCC" style="stroke:#BFBFBF;stroke-width:0.45;"/><path d="M1609.2,1288.8 C1609.2,1297.8 1705.5,1297.8 1705.5,1297.8 C1705.5,1297.8 1801.8,1297.8 1801.8,1288.8 " fill="none" style="stroke:#BFBFBF;stroke-width:0.45;"/><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="124.2" x="1643.4" y="1311.4248">«external_component»</text><image height="43.2" width="43.2" x="1683.9" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACl0lEQVR4Xu2XbZHCMBCGUYACDKDgDKAABTWAghpAAQowgAIMRNQ9kx0yvXeT9DNzvZl7fpWSbN7sbjbbQ9gZB33x28wT9Hq9Ho9H3/fX6/VyuXxFzufz6XQ6R/h5iXRdx7Dn8/l+v9VKlXFBGL3dbqx0WMrxeEQi+tiPWncUBTEZN2BLza8DL6JMFxuQF4QUtbQp7JPQ66qRjCA2oQbaQCbo2l4QyajzWuJTXgWtSd4F+MD9C/rJHxREkdBJzeDwy+rBCwrti1CCO0DXzgqC+/3O9aQGtoObxB94Iy/IQNa2KUWMqHP1G00FZUfjWwwhbsHVhqcrN6v3kwqyjiI7OcG/OI81bhG0knZdhJ99hOPjFxvCmOyNlhFkO+OBOXWjC2Az6E6eniEowV2LCWbW3VaCLRFx6+n8QVkiSMAoYyxGKUD3iAXRYkfesJPRnBsXtLvbPuytHzJaF+vs+TLygsLeeuohVhXXxHHVV4fNlJeJDb/LMMUwHzgVZMeePZFxJVsrQQRSzHlTBSVSVZRhc7HbxieltzwiaAi2rCTiPKxji4i8Iu8ID7x5RBiQyqMaGjAuqPWBF3yaqyBGbH7US+A/WT14QSFq8rfg5hBQXTiSEWRwaBvJwjE+UomiIGN9VTRSbRwtJSqoK/e8VhK72MvivFKqHSPsAQV2HksG+9hYyksVZMceW9lvlBJ27PVtmZQPUwUZzMEfs5RVQDHeSjXamCdoyDAElRsqwQAJsVqMjAuSHYxCupw+WPboiCre/SoIyTqpGexBVg9eUIgfrDq1AeRANu4ZQeHTrKiNjSCslZYrL8hgB2Tx+qpoWG3E/brMT2qChpBbU9qJIaldmdi8GlMFCb77SR2SNUk6YTILBbVjd4K+Ab755zzpVjRDAAAAAElFTkSuQmCC" y="1313.9719"/><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="174.6" x="1618.2" y="1370.5383">Certificate repository</text><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="165.6" x="1622.7" y="1383.9592">[Go, Embedded Key-Value DB]</text></g><!--MD5=[c25eb3bb2a673e49b4700e0aa1b6b6c8]
|
||
entity SignerClient--><g id="elem_SignerClient"><rect fill="#999999" height="76.6688" rx="2.25" ry="2.25" style="stroke:#8A8A8A;stroke-width:0.45;" width="188.1" x="266.85" y="6.3"/><text fill="#FFFFFF" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="100.8" x="310.5" y="25.3248">«external_system»</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="101.7" x="310.05" y="41.2383">Signer client</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="3.6" x="359.1" y="56.33"> </text><text fill="#FFFFFF" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="166.5" x="279.45" y="70.9972">Send commands to signer</text></g><!--MD5=[ff028a7ac4eed75d9278e76cd9053439]
|
||
entity HSM--><g id="elem_HSM"><rect fill="#CCCCCC" height="89.2406" rx="2.25" ry="2.25" style="stroke:#BFBFBF;stroke-width:0.45;" width="190.8" x="224.1" y="1291.05"/><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="124.2" x="257.4" y="1310.0748">«external_component»</text><text fill="#000000" font-family="sans-serif" font-size="14.4" font-weight="bold" lengthAdjust="spacing" textLength="36.9" x="301.05" y="1325.9883">HSM</text><text fill="#000000" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="60.3" x="289.35" y="1339.4092">[PKCS#11]</text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="3.6" x="317.7" y="1353.6519"> </text><text fill="#000000" font-family="sans-serif" font-size="12.6" lengthAdjust="spacing" textLength="169.2" x="236.7" y="1368.319">Hardware security module</text></g><!--MD5=[c4211f20d77779d002d0636fe4eff351]
|
||
link SignerClient to SerialHandler--><g id="link_SignerClient_SerialHandler"><path d="M360.9,82.989 C360.9,126.036 360.9,197.109 360.9,247.338 " fill="none" id="SignerClient-to-SerialHandler" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="360.9,254.592,363.6,247.392,358.2,247.392,360.9,254.592" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="28.8" x="390.15" y="120.7248">Uses</text><text fill="#666666" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="85.5" x="361.8" y="133.2967">[USB serial link]</text></g><!--MD5=[de40622977f577968ad15aec8c744a51]
|
||
link SerialHandler to Framer--><g id="link_SerialHandler_Framer"><path d="M340.281,358.344 C331.623,379.773 321.579,404.622 312.939,425.997 " fill="none" id="SerialHandler-to-Framer" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="310.185,432.81,315.3885,427.1484,310.3827,425.1229,310.185,432.81" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="28.8" x="330.3" y="396.1248">Uses</text></g><!--MD5=[1211b684f0f4acfb9ea05d642655511a]
|
||
link SerialHandler to ServerProtocol--><g id="link_SerialHandler_ServerProtocol"><path d="M402.669,358.344 C418.563,377.739 436.752,399.951 453.051,419.841 " fill="none" id="SerialHandler-to-ServerProtocol" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="457.812,425.655,455.3351,418.3753,451.1591,421.7989,457.812,425.655" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="28.8" x="435.6" y="396.1248">Uses</text></g><!--MD5=[eb969237a50a57975d692cb125e88891]
|
||
link ServerProtocol to ProtocolHandler--><g id="link_ServerProtocol_ProtocolHandler"><path d="M499.5,529.344 C499.5,548.244 499.5,569.808 499.5,589.302 " fill="none" id="ServerProtocol-to-ProtocolHandler" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="499.5,596.655,502.2,589.455,496.8,589.455,499.5,596.655" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="28.8" x="500.4" y="567.1248">Uses</text></g><!--MD5=[6904b7103d89ba041a727edd177c7033]
|
||
link ProtocolHandler to X509SigningHandler--><g id="link_ProtocolHandler_X509SigningHandler"><path d="M558.558,700.29 C584.325,722.502 614.601,748.62 640.971,771.354 " fill="none" id="ProtocolHandler-to-X509SigningHandler" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="646.533,776.16,642.847,769.4114,639.3184,773.4991,646.533,776.16" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="28.8" x="603.9" y="738.1248">Uses</text></g><!--MD5=[6e0d1b21c46cf0a1aeb331a2c465700e]
|
||
link ProtocolHandler to X509CRLHandler--><g id="link_ProtocolHandler_X509CRLHandler"><path d="M446.112,700.29 C422.919,722.412 395.685,748.404 371.925,771.075 " fill="none" id="ProtocolHandler-to-X509CRLHandler" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="366.597,776.16,373.6678,773.1379,369.9372,769.2337,366.597,776.16" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="28.8" x="418.5" y="738.1248">Uses</text></g><!--MD5=[8bd9096c966b0786426f772de5ff586e]
|
||
link ProtocolHandler to X509RevocationHandler--><g id="link_ProtocolHandler_X509RevocationHandler"><path d="M575.811,674.658 C640.368,696.861 734.823,731.223 814.5,767.7 C818.172,769.383 821.889,771.138 825.624,772.938 " fill="none" id="ProtocolHandler-to-X509RevocationHandler" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="832.374,776.241,827.0923,770.6523,824.7199,775.5032,832.374,776.241" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="28.8" x="747.9" y="738.1248">Uses</text></g><!--MD5=[7630a6f192d59137aef045c59458f3ad]
|
||
link ProtocolHandler to OpenPGPSigningHandler--><g id="link_ProtocolHandler_OpenPGPSigningHandler"><path d="M423.432,678.825 C367.416,701.298 289.881,734.022 224.1,767.7 C220.977,769.302 217.818,770.958 214.641,772.659 " fill="none" id="ProtocolHandler-to-OpenPGPSigningHandler" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="208.098,776.214,215.7124,775.1409,213.1293,770.3988,208.098,776.214" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="28.8" x="306.9" y="738.1248">Uses</text></g><!--MD5=[dd0964938e0e2c1d6f26fa00fb2a70e5]
|
||
link ProtocolHandler to HealthHandler--><g id="link_ProtocolHandler_HealthHandler"><path d="M499.5,700.29 C499.5,721.665 499.5,746.658 499.5,768.78 " fill="none" id="ProtocolHandler-to-HealthHandler" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="499.5,776.16,502.2,768.96,496.8,768.96,499.5,776.16" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="28.8" x="500.4" y="738.1248">Uses</text></g><!--MD5=[c03f96c452f26815ba38daf1adeb88ce]
|
||
link X509SigningHandler to HSMAccess--><g id="link_X509SigningHandler_HSMAccess"><path d="M677.52,879.966 C662.283,902.655 641.277,927.36 615.6,941.4 C588.78,956.07 575.649,937.422 547.2,948.6 C481.68,974.358 418.59,1024.371 375.507,1063.692 " fill="none" id="X509SigningHandler-to-HSMAccess" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="370.089,1068.669,377.2159,1065.7816,373.56,1061.8074,370.089,1068.669" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="28.8" x="648" y="932.5248">Uses</text></g><!--MD5=[049c56c40f5ce55919cf848cfeae4412]
|
||
link X509SigningHandler to SignerDB--><g id="link_X509SigningHandler_SignerDB"><path d="M703.953,880.029 C702.9,899.325 701.19,921.438 698.4,941.4 C692.955,980.334 683.694,1023.417 675.585,1057.473 " fill="none" id="X509SigningHandler-to-SignerDB" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="673.884,1064.601,678.1946,1058.2332,672.9447,1056.969,673.884,1064.601" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="39.6" x="702.9" y="932.5248">Writes</text></g><!--MD5=[82b942a05dde6d4abd870be92d5b79e1]
|
||
link X509RevocationHandler to SignerDB--><g id="link_X509RevocationHandler_SignerDB"><path d="M840.087,879.831 C812.448,899.19 782.847,922.842 759.6,948.6 C730.332,981.027 705.519,1023.372 687.933,1057.815 " fill="none" id="X509RevocationHandler-to-SignerDB" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="684.513,1064.592,690.1646,1059.3776,685.3424,1056.9473,684.513,1064.592" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="39.6" x="792.9" y="932.5248">Writes</text></g><!--MD5=[f3fbeda310f19b6def0836f108fb90ae]
|
||
link X509CRLHandler to HSMAccess--><g id="link_X509CRLHandler_HSMAccess"><path d="M292.59,879.804 C288.819,891.288 285.462,903.564 283.5,915.3 C275.256,964.665 286.569,1020.636 298.638,1061.496 " fill="none" id="X509CRLHandler-to-HSMAccess" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="300.735,1068.426,301.2234,1060.7519,296.057,1062.323,300.735,1068.426" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="28.8" x="284.4" y="932.5248">Uses</text></g><!--MD5=[1be83cc4a91ae3618c25e12be491020b]
|
||
link X509CRLHandler to SignerDB--><g id="link_X509CRLHandler_SignerDB"><path d="M386.784,879.858 C391.959,882.846 397.161,885.69 402.3,888.3 C433.449,904.095 447.174,895.734 476.1,915.3 C491.85,925.956 559.26,1002.663 607.833,1058.958 " fill="none" id="X509CRLHandler-to-SignerDB" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="612.774,1064.682,610.1229,1057.4639,606.0304,1060.9869,612.774,1064.682" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="36.9" x="502.2" y="932.5248">Reads</text></g><!--MD5=[1531770e9c84b9a37109fc722a3e41bc]
|
||
link OpenPGPSigningHandler to HSMAccess--><g id="link_OpenPGPSigningHandler_HSMAccess"><path d="M159.183,879.867 C193.365,930.987 245.898,1009.53 281.421,1062.666 " fill="none" id="OpenPGPSigningHandler-to-HSMAccess" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="285.453,1068.687,283.6946,1061.2012,279.2059,1064.2032,285.453,1068.687" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="28.8" x="200.7" y="932.5248">Uses</text></g><!--MD5=[5647650e77d9b601644db74356963c93]
|
||
link OpenPGPSigningHandler to SignerDB--><g id="link_OpenPGPSigningHandler_SignerDB"><path d="M204.021,879.804 C210.672,882.99 217.404,885.879 224.1,888.3 C297.945,914.994 327.816,881.514 398.7,915.3 C414.297,922.734 414.234,930.33 427.5,941.4 C476.604,982.377 533.538,1026.126 578.745,1060.029 " fill="none" id="OpenPGPSigningHandler-to-SignerDB" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="584.766,1064.529,580.6167,1058.0549,577.3829,1062.3796,584.766,1064.529" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="39.6" x="428.4" y="932.5248">Writes</text></g><!--MD5=[01fcd97973dce0a15ca3f22ec6f9a33e]
|
||
link HealthHandler to HSMAccess--><g id="link_HealthHandler_HSMAccess"><path d="M417.816,879.39 C412.587,882.441 407.385,885.438 402.3,888.3 C379.539,901.116 365.301,894.06 350.1,915.3 C319.914,957.483 314.073,1017.216 314.694,1061.199 " fill="none" id="HealthHandler-to-HSMAccess" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="314.865,1068.669,317.3972,1061.4083,311.9986,1061.5336,314.865,1068.669" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="43.2" x="351" y="932.5248">Checks</text></g><!--MD5=[8e666ca13f2e292cf801466daea72d33]
|
||
link HealthHandler to SignerDB--><g id="link_HealthHandler_SignerDB"><path d="M530.271,879.84 C537.129,891.441 544.293,903.744 550.8,915.3 C577.566,962.838 606.564,1017.405 627.903,1058.175 " fill="none" id="HealthHandler-to-SignerDB" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="631.26,1064.601,630.3086,1056.9705,625.5259,1059.4776,631.26,1064.601" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="43.2" x="564.3" y="932.5248">Checks</text></g><!--MD5=[f6d0a255b9300fdc869edf618776ea20]
|
||
link SyncHandler to SignerDB--><g id="link_SyncHandler_SignerDB"><path d="M1048.374,881.235 C1043.001,883.755 1037.61,886.122 1032.3,888.3 C950.472,921.771 927.585,925.623 840.6,941.4 C822.816,944.622 774.855,938.916 759.6,948.6 C720.432,973.449 694.809,1019.592 679.32,1057.689 " fill="none" id="SyncHandler-to-SignerDB" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="676.647,1064.457,681.809,1058.7576,676.7886,1056.7687,676.647,1064.457" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="28.8" x="958.5" y="932.5248">Uses</text></g><!--MD5=[ce0bb68167ca79996a54c04fb7a06609]
|
||
link SyncHandler to NATS--><g id="link_SyncHandler_NATS"><path d="M1203.021,894.204 C1217.754,911.142 1232.631,929.898 1244.7,948.6 C1274.031,994.032 1297.854,1052.415 1310.994,1087.866 " fill="none" id="SyncHandler-NATS" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="1313.478,1094.643,1313.5326,1086.9536,1308.4631,1088.8137,1313.478,1094.643" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="1198.035,888.525,1200.76,895.7156,1204.8161,892.1508,1198.035,888.525" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="75.6" x="1242.45" y="926.2248">Synchronize</text><text fill="#666666" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="85.5" x="1237.5" y="938.7967">[NATS protocol]</text></g><!--MD5=[ac10af24f910bae24644d4ccf6ac738e]
|
||
link NATS to NATS2--><g id="link_NATS_NATS2"><path d="M1345.383,1152.081 C1366.218,1179.135 1397.943,1219.356 1427.4,1252.8 C1442.889,1270.386 1460.997,1289.232 1475.991,1304.406 " fill="none" id="NATS-NATS2" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="1481.364,1309.824,1478.1997,1302.8156,1474.3717,1306.6244,1481.364,1309.824" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="1340.847,1146.177,1343.0912,1153.5318,1347.3739,1150.2427,1340.847,1146.177" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="75.6" x="1428.3" y="1237.6248">Synchronize</text><text fill="#666666" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="61.2" x="1435.5" y="1250.1967">[NATS/TLS]</text></g><!--MD5=[06c6604c5c35b105f23e33e7e3e4aba5]
|
||
link SyncHandler2 to NATS2--><g id="link_SyncHandler2_NATS2"><path d="M1643.04,1186.362 C1606.959,1225.593 1562.661,1273.752 1534.527,1304.334 " fill="none" id="SyncHandler2-NATS2" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="1529.469,1309.842,1536.3264,1306.3627,1532.3478,1302.7116,1529.469,1309.842" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="1648.143,1180.818,1641.2814,1184.289,1645.2556,1187.9449,1648.143,1180.818" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="75.6" x="1610.55" y="1237.6248">Synchronize</text><text fill="#666666" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="85.5" x="1605.6" y="1250.1967">[NATS protocol]</text></g><!--MD5=[19a8c02a4a6c3e2efd241ec79f03fa40]
|
||
link SyncHandler2 to SignerDB2--><g id="link_SyncHandler2_SignerDB2"><path d="M1703.556,1180.818 C1703.916,1209.339 1704.348,1243.512 1704.708,1272.402 " fill="none" id="SyncHandler2-to-SignerDB2" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="1704.807,1279.629,1707.4168,1272.3958,1702.0172,1272.4633,1704.807,1279.629" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="28.8" x="1704.6" y="1243.9248">Uses</text></g><!--MD5=[c3f60d65e94da5508ad0c196407a2043]
|
||
link HSMAccess to HSM--><g id="link_HSMAccess_HSM"><path d="M319.5,1172.493 C319.5,1206.063 319.5,1249.83 319.5,1283.436 " fill="none" id="HSMAccess-to-HSM" style="stroke:#666666;stroke-width:0.9;"/><polygon fill="#666666" points="319.5,1290.879,322.2,1283.679,316.8,1283.679,319.5,1290.879" style="stroke:#666666;stroke-width:0.9;"/><text fill="#666666" font-family="sans-serif" font-size="10.8" font-weight="bold" lengthAdjust="spacing" textLength="28.8" x="336.15" y="1237.6248">Uses</text><text fill="#666666" font-family="sans-serif" font-size="10.8" font-style="italic" lengthAdjust="spacing" textLength="60.3" x="320.4" y="1250.1967">[PKCS#11]</text></g><!--MD5=[5a23765b41eba2fb33cbd44d9ccde792]
|
||
@startuml
|
||
!include <C4/C4_Component.puml>
|
||
!include <tupadr3/font-awesome/database>
|
||
|
||
LAYOUT_TOP_DOWN()
|
||
|
||
System_Ext(SignerClient, "Signer client", "Send commands to signer")
|
||
|
||
System_Boundary(Signer, "Signer server") {
|
||
Boundary(SignerSoftware, "Signer Software") {
|
||
Component(SerialHandler, "Serial link handler", "Go", "Reads and writes to the serial interface")
|
||
Component(Framer, "Framer", "Go", "Parses and creates frames")
|
||
Component(ServerProtocol, "Server protocol", "Go", "Server protocol state machine")
|
||
Component(ProtocolHandler, "Protocol handler", "Go", "Parses and creates protocol messages")
|
||
Component(X509SigningHandler, "X.509 signing", "Go", "Handles X.509 certificate signing commands")
|
||
Component(X509RevocationHandler, "X.509 revocation", "Go", "Handles X.509 certificate revocation commands")
|
||
Component(OpenPGPSigningHandler, "OpenPGP signing", "Go", Handles OpenPGP key signing commands")
|
||
Component(X509CRLHandler, "X.509 crl", "Go", "Handles X.509 CRL retrieval commands")
|
||
Component(HealthHandler, "Health check", "Go", "Handles health check commands")
|
||
Component(HSMAccess, "HSM access", "Go", "Handles HSM hardware access")
|
||
Component(SyncHandler, "Synchronization handler", "Go", "Handles synchronization with other signer")
|
||
ComponentDb(SignerDB, "Certificate repository", "Go, Embedded Key-Value DB", $sprite="database")
|
||
}
|
||
|
||
ComponentQueue(NATS, "NATS Service", "NATS")
|
||
}
|
||
|
||
System_Boundary(Signer2, "Other signer") {
|
||
Boundary(SignerSoftware2, "Signer Software") {
|
||
Component_Ext(SyncHandler2, "Synchronization handler", "Go", "Handles synchronization with other signer")
|
||
ComponentDb_Ext(SignerDB2, "Certificate repository", "Go, Embedded Key-Value DB", $sprite="database")
|
||
}
|
||
|
||
ComponentQueue_Ext(NATS2, "NATS Service", "NATS")
|
||
}
|
||
|
||
Component_Ext(HSM, "HSM", "PKCS#11", "Hardware security module")
|
||
|
||
Rel(SignerClient, SerialHandler, "Uses", "USB serial link")
|
||
|
||
Rel(SerialHandler, Framer, "Uses")
|
||
Rel(SerialHandler, ServerProtocol, "Uses")
|
||
Rel(ServerProtocol, ProtocolHandler, "Uses")
|
||
|
||
Rel(ProtocolHandler, X509SigningHandler, "Uses")
|
||
Rel(ProtocolHandler, X509CRLHandler, "Uses")
|
||
Rel(ProtocolHandler, X509RevocationHandler, "Uses")
|
||
Rel(ProtocolHandler, OpenPGPSigningHandler, "Uses")
|
||
Rel(ProtocolHandler, HealthHandler, "Uses")
|
||
|
||
Rel(X509SigningHandler, HSMAccess, "Uses")
|
||
Rel(X509SigningHandler, SignerDB, "Writes")
|
||
|
||
Rel(X509RevocationHandler, SignerDB, "Writes")
|
||
|
||
Rel(X509CRLHandler, HSMAccess, "Uses")
|
||
Rel(X509CRLHandler, SignerDB, "Reads")
|
||
|
||
Rel(OpenPGPSigningHandler, HSMAccess, "Uses")
|
||
Rel(OpenPGPSigningHandler, SignerDB, "Writes")
|
||
|
||
Rel(HealthHandler, HSMAccess, "Checks")
|
||
Rel(HealthHandler, SignerDB, "Checks")
|
||
|
||
Rel(SyncHandler, SignerDB, "Uses")
|
||
|
||
BiRel(SyncHandler, NATS, "Synchronize", "NATS protocol")
|
||
BiRel(NATS, NATS2, "Synchronize", "NATS/TLS")
|
||
BiRel(SyncHandler2, NATS2, "Synchronize", "NATS protocol")
|
||
|
||
Rel(SyncHandler2, SignerDB2, "Uses")
|
||
|
||
Rel(HSMAccess, HSM, "Uses", "PKCS#11")
|
||
|
||
@enduml
|
||
|
||
@startuml
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
skinparam defaultTextAlignment center
|
||
|
||
skinparam wrapWidth 200
|
||
skinparam maxMessageSize 150
|
||
|
||
skinparam LegendBorderColor transparent
|
||
skinparam LegendBackgroundColor transparent
|
||
skinparam LegendFontColor #FFFFFF
|
||
|
||
skinparam shadowing<<legendArea>> false
|
||
skinparam rectangle<<legendArea>> {
|
||
backgroundcolor #00000000
|
||
bordercolor #00000000
|
||
}
|
||
|
||
skinparam rectangle {
|
||
StereotypeFontSize 12
|
||
shadowing false
|
||
}
|
||
|
||
skinparam database {
|
||
StereotypeFontSize 12
|
||
shadowing false
|
||
}
|
||
|
||
skinparam queue {
|
||
StereotypeFontSize 12
|
||
shadowing false
|
||
}
|
||
|
||
skinparam arrow {
|
||
Color #666666
|
||
FontColor #666666
|
||
FontSize 12
|
||
}
|
||
|
||
skinparam actor {
|
||
StereotypeFontSize 12
|
||
shadowing false
|
||
style awesome
|
||
}
|
||
|
||
skinparam person {
|
||
StereotypeFontSize 12
|
||
shadowing false
|
||
}
|
||
|
||
skinparam package {
|
||
StereotypeFontSize 6
|
||
StereotypeFontColor transparent
|
||
FontStyle plain
|
||
BackgroundColor transparent
|
||
}
|
||
|
||
skinparam rectangle<<boundary>> {
|
||
Shadowing false
|
||
StereotypeFontSize 6
|
||
StereotypeFontColor transparent
|
||
FontColor #444444
|
||
BorderColor #444444
|
||
BackgroundColor transparent
|
||
BorderStyle dashed
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
skinparam rectangle<<person>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #08427B
|
||
BorderColor #073B6F
|
||
}
|
||
skinparam database<<person>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #08427B
|
||
BorderColor #073B6F
|
||
}
|
||
skinparam queue<<person>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #08427B
|
||
BorderColor #073B6F
|
||
}
|
||
skinparam actor<<person>> {
|
||
StereotypeFontColor #08427B
|
||
FontColor #08427B
|
||
BackgroundColor #08427B
|
||
BorderColor #073B6F
|
||
}
|
||
skinparam person<<person>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #08427B
|
||
BorderColor #073B6F
|
||
}
|
||
|
||
|
||
skinparam rectangle<<external_person>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #686868
|
||
BorderColor #8A8A8A
|
||
}
|
||
skinparam database<<external_person>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #686868
|
||
BorderColor #8A8A8A
|
||
}
|
||
skinparam queue<<external_person>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #686868
|
||
BorderColor #8A8A8A
|
||
}
|
||
skinparam actor<<external_person>> {
|
||
StereotypeFontColor #686868
|
||
FontColor #686868
|
||
BackgroundColor #686868
|
||
BorderColor #8A8A8A
|
||
}
|
||
skinparam person<<external_person>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #686868
|
||
BorderColor #8A8A8A
|
||
}
|
||
|
||
|
||
skinparam rectangle<<system>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #1168BD
|
||
BorderColor #3C7FC0
|
||
}
|
||
skinparam database<<system>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #1168BD
|
||
BorderColor #3C7FC0
|
||
}
|
||
skinparam queue<<system>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #1168BD
|
||
BorderColor #3C7FC0
|
||
}
|
||
skinparam actor<<system>> {
|
||
StereotypeFontColor #1168BD
|
||
FontColor #1168BD
|
||
BackgroundColor #1168BD
|
||
BorderColor #3C7FC0
|
||
}
|
||
skinparam person<<system>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #1168BD
|
||
BorderColor #3C7FC0
|
||
}
|
||
|
||
|
||
skinparam rectangle<<external_system>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #999999
|
||
BorderColor #8A8A8A
|
||
}
|
||
skinparam database<<external_system>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #999999
|
||
BorderColor #8A8A8A
|
||
}
|
||
skinparam queue<<external_system>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #999999
|
||
BorderColor #8A8A8A
|
||
}
|
||
skinparam actor<<external_system>> {
|
||
StereotypeFontColor #999999
|
||
FontColor #999999
|
||
BackgroundColor #999999
|
||
BorderColor #8A8A8A
|
||
}
|
||
skinparam person<<external_system>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #999999
|
||
BorderColor #8A8A8A
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
sprite $person [48x48/16] {
|
||
000000000000000000000000000000000000000000000000
|
||
000000000000000000000000000000000000000000000000
|
||
0000000000000000000049BCCA7200000000000000000000
|
||
0000000000000000006EFFFFFFFFB3000000000000000000
|
||
00000000000000001CFFFFFFFFFFFF700000000000000000
|
||
0000000000000001EFFFFFFFFFFFFFF80000000000000000
|
||
000000000000000CFFFFFFFFFFFFFFFF6000000000000000
|
||
000000000000007FFFFFFFFFFFFFFFFFF100000000000000
|
||
00000000000001FFFFFFFFFFFFFFFFFFF900000000000000
|
||
00000000000006FFFFFFFFFFFFFFFFFFFF00000000000000
|
||
0000000000000BFFFFFFFFFFFFFFFFFFFF40000000000000
|
||
0000000000000EFFFFFFFFFFFFFFFFFFFF70000000000000
|
||
0000000000000FFFFFFFFFFFFFFFFFFFFF80000000000000
|
||
0000000000000FFFFFFFFFFFFFFFFFFFFF80000000000000
|
||
0000000000000DFFFFFFFFFFFFFFFFFFFF60000000000000
|
||
0000000000000AFFFFFFFFFFFFFFFFFFFF40000000000000
|
||
00000000000006FFFFFFFFFFFFFFFFFFFE00000000000000
|
||
00000000000000EFFFFFFFFFFFFFFFFFF800000000000000
|
||
000000000000007FFFFFFFFFFFFFFFFFF100000000000000
|
||
000000000000000BFFFFFFFFFFFFFFFF5000000000000000
|
||
0000000000000001DFFFFFFFFFFFFFF70000000000000000
|
||
00000000000000000BFFFFFFFFFFFF500000000000000000
|
||
0000000000000000005DFFFFFFFFA1000000000000000000
|
||
0000000000000000000037ABB96100000000000000000000
|
||
000000000000000000000000000000000000000000000000
|
||
000000000000000000000000000000000000000000000000
|
||
000000000000025788300000000005886410000000000000
|
||
000000000007DFFFFFFD9643347BFFFFFFFB400000000000
|
||
0000000004EFFFFFFFFFFFFFFFFFFFFFFFFFFB1000000000
|
||
000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFD200000000
|
||
00000006FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE10000000
|
||
0000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0000000
|
||
000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5000000
|
||
000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD000000
|
||
000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF200000
|
||
00000DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF600000
|
||
00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000
|
||
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA00000
|
||
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB00000
|
||
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB00000
|
||
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB00000
|
||
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA00000
|
||
00000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF700000
|
||
000006FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE100000
|
||
0000008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3000000
|
||
000000014555555555555555555555555555555300000000
|
||
000000000000000000000000000000000000000000000000
|
||
000000000000000000000000000000000000000000000000
|
||
}
|
||
|
||
sprite $person2 [48x48/16] {
|
||
0000000000000000000049BCCA7200000000000000000000
|
||
0000000000000000006EFFFFFFFFB3000000000000000000
|
||
00000000000000001CFFFFFFFFFFFF700000000000000000
|
||
0000000000000001EFFFFFFFFFFFFFF80000000000000000
|
||
000000000000000CFFFFFFFFFFFFFFFF6000000000000000
|
||
000000000000007FFFFFFFFFFFFFFFFFF100000000000000
|
||
00000000000001FFFFFFFFFFFFFFFFFFF900000000000000
|
||
00000000000006FFFFFFFFFFFFFFFFFFFF00000000000000
|
||
0000000000000BFFFFFFFFFFFFFFFFFFFF40000000000000
|
||
0000000000000EFFFFFFFFFFFFFFFFFFFF70000000000000
|
||
0000000000000FFFFFFFFFFFFFFFFFFFFF80000000000000
|
||
0000000000000FFFFFFFFFFFFFFFFFFFFF80000000000000
|
||
0000000000000DFFFFFFFFFFFFFFFFFFFF60000000000000
|
||
0000000000000AFFFFFFFFFFFFFFFFFFFF40000000000000
|
||
00000000000006FFFFFFFFFFFFFFFFFFFE00000000000000
|
||
00000000000000EFFFFFFFFFFFFFFFFFF800000000000000
|
||
000000000000007FFFFFFFFFFFFFFFFFF100000000000000
|
||
000000000000000BFFFFFFFFFFFFFFFF5000000000000000
|
||
0000000000000001DFFFFFFFFFFFFFF70000000000000000
|
||
00000000000000000BFFFFFFFFFFFF500000000000000000
|
||
0000000000000000005DFFFFFFFFA1000000000000000000
|
||
0000000000000000000037ABB96100000000000000000000
|
||
000000000002578888300000000005888864100000000000
|
||
0000000007DFFFFFFFFD9643347BFFFFFFFFFB4000000000
|
||
00000004EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB10000000
|
||
0000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2000000
|
||
000006FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE100000
|
||
00003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB00000
|
||
0000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50000
|
||
0003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0000
|
||
0009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2000
|
||
000DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6000
|
||
000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000
|
||
001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB000
|
||
001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB000
|
||
001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB000
|
||
001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA000
|
||
000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000
|
||
000DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6000
|
||
0009FFFFFFFF8FFFFFFFFFFFFFFFFFFFFFF8FFFFFFFF2000
|
||
0003FFFFFFFF8FFFFFFFFFFFFFFFFFFFFFF8FFFFFFFD0000
|
||
0000BFFFFFFF8FFFFFFFFFFFFFFFFFFFFFF8FFFFFFF50000
|
||
00003FFFFFFF8FFFFFFFFFFFFFFFFFFFFFF8FFFFFFB00000
|
||
000006FFFFFF8FFFFFFFFFFFFFFFFFFFFFF8FFFFFE100000
|
||
0000007FFFFF8FFFFFFFFFFFFFFFFFFFFFF8FFFFD2000000
|
||
00000004EFFF8FFFFFFFFFFFFFFFFFFFFFF8FFFB10000000
|
||
0000000007DF8FFFFFFFFFFFFFFFFFFFFFF8FB4000000000
|
||
000000000002578888888888888888888864100000000000
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
skinparam rectangle<<container>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #438DD5
|
||
BorderColor #3C7FC0
|
||
}
|
||
skinparam database<<container>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #438DD5
|
||
BorderColor #3C7FC0
|
||
}
|
||
skinparam queue<<container>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #438DD5
|
||
BorderColor #3C7FC0
|
||
}
|
||
skinparam actor<<container>> {
|
||
StereotypeFontColor #438DD5
|
||
FontColor #438DD5
|
||
BackgroundColor #438DD5
|
||
BorderColor #3C7FC0
|
||
}
|
||
skinparam person<<container>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #438DD5
|
||
BorderColor #3C7FC0
|
||
}
|
||
|
||
|
||
skinparam rectangle<<external_container>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #B3B3B3
|
||
BorderColor #A6A6A6
|
||
}
|
||
skinparam database<<external_container>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #B3B3B3
|
||
BorderColor #A6A6A6
|
||
}
|
||
skinparam queue<<external_container>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #B3B3B3
|
||
BorderColor #A6A6A6
|
||
}
|
||
skinparam actor<<external_container>> {
|
||
StereotypeFontColor #B3B3B3
|
||
FontColor #B3B3B3
|
||
BackgroundColor #B3B3B3
|
||
BorderColor #A6A6A6
|
||
}
|
||
skinparam person<<external_container>> {
|
||
StereotypeFontColor #FFFFFF
|
||
FontColor #FFFFFF
|
||
BackgroundColor #B3B3B3
|
||
BorderColor #A6A6A6
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
skinparam rectangle<<component>> {
|
||
StereotypeFontColor #000000
|
||
FontColor #000000
|
||
BackgroundColor #85BBF0
|
||
BorderColor #78A8D8
|
||
}
|
||
skinparam database<<component>> {
|
||
StereotypeFontColor #000000
|
||
FontColor #000000
|
||
BackgroundColor #85BBF0
|
||
BorderColor #78A8D8
|
||
}
|
||
skinparam queue<<component>> {
|
||
StereotypeFontColor #000000
|
||
FontColor #000000
|
||
BackgroundColor #85BBF0
|
||
BorderColor #78A8D8
|
||
}
|
||
skinparam actor<<component>> {
|
||
StereotypeFontColor #85BBF0
|
||
FontColor #85BBF0
|
||
BackgroundColor #85BBF0
|
||
BorderColor #78A8D8
|
||
}
|
||
skinparam person<<component>> {
|
||
StereotypeFontColor #000000
|
||
FontColor #000000
|
||
BackgroundColor #85BBF0
|
||
BorderColor #78A8D8
|
||
}
|
||
|
||
|
||
skinparam rectangle<<external_component>> {
|
||
StereotypeFontColor #000000
|
||
FontColor #000000
|
||
BackgroundColor #CCCCCC
|
||
BorderColor #BFBFBF
|
||
}
|
||
skinparam database<<external_component>> {
|
||
StereotypeFontColor #000000
|
||
FontColor #000000
|
||
BackgroundColor #CCCCCC
|
||
BorderColor #BFBFBF
|
||
}
|
||
skinparam queue<<external_component>> {
|
||
StereotypeFontColor #000000
|
||
FontColor #000000
|
||
BackgroundColor #CCCCCC
|
||
BorderColor #BFBFBF
|
||
}
|
||
skinparam actor<<external_component>> {
|
||
StereotypeFontColor #CCCCCC
|
||
FontColor #CCCCCC
|
||
BackgroundColor #CCCCCC
|
||
BorderColor #BFBFBF
|
||
}
|
||
skinparam person<<external_component>> {
|
||
StereotypeFontColor #000000
|
||
FontColor #000000
|
||
BackgroundColor #CCCCCC
|
||
BorderColor #BFBFBF
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
sprite $database [48x48/16] {
|
||
000000000000000000000000000000000000000000000000
|
||
000000000000000000000000000000000000000000000000
|
||
0000000000000002469ABBCDCCBAA8631000000000000000
|
||
0000000000037BFFFFFFFFFFFFFFFFFFFEA6200000000000
|
||
0000000029EFFFFFFFFFFFFFFFFFFFFFFFFFFC6000000000
|
||
00000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE40000000
|
||
000000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7000000
|
||
000008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF100000
|
||
00000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF400000
|
||
00000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF400000
|
||
00000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF400000
|
||
00000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF400000
|
||
000006FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000
|
||
0000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3000000
|
||
00000005DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA10000000
|
||
0000000005BFFFFFFFFFFFFFFFFFFFFFFFFFE82000000000
|
||
00000200000038BEFFFFFFFFFFFFFFFFDA62000000100000
|
||
00000BB2000000000256778988766410000000006E400000
|
||
00000BFFB610000000000000000000000000028EFF400000
|
||
00000BFFFFFC842000000000000000001369DFFFFF400000
|
||
00000BFFFFFFFFFFDB98766556788ACEFFFFFFFFFF400000
|
||
000008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF100000
|
||
000000CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7000000
|
||
00000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE40000000
|
||
0000000029EFFFFFFFFFFFFFFFFFFFFFFFFFFC6000000000
|
||
0000000000038CFFFFFFFFFFFFFFFFFFFEA6200000000000
|
||
00000A6000000002469ABBCDCCBAA863100000002A400000
|
||
00000BFE7100000000000000000000000000004AFF400000
|
||
00000BFFFFC84000000000000000000000259EFFFF400000
|
||
00000BFFFFFFFFEB975432211234458ACFFFFFFFFF400000
|
||
000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF200000
|
||
000002EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA000000
|
||
0000002DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000
|
||
000000006DFFFFFFFFFFFFFFFFFFFFFFFFFFFFA200000000
|
||
000000000038CFFFFFFFFFFFFFFFFFFFFFEA610000000000
|
||
00000820000000468BDEFFFFFFFEECA75200000006400000
|
||
00000BFA30000000000000011000000000000006DF400000
|
||
00000BFFFD830000000000000000000000015AFFFF400000
|
||
00000BFFFFFFFCA753100000000001468BDFFFFFFF400000
|
||
00000AFFFFFFFFFFFFFFFEDDDEEFFFFFFFFFFFFFFF300000
|
||
000004FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD000000
|
||
0000005FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1000000
|
||
00000002AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE600000000
|
||
00000000017CFFFFFFFFFFFFFFFFFFFFFFFEA50000000000
|
||
000000000000048ACFFFFFFFFFFFFFEB9620000000000000
|
||
000000000000000000123445543320000000000000000000
|
||
000000000000000000000000000000000000000000000000
|
||
000000000000000000000000000000000000000000000000
|
||
}
|
||
|
||
|
||
skinparam folderBackgroundColor<<FA DATABASE>> White
|
||
|
||
top to bottom direction
|
||
|
||
rectangle "==Signer client\n\n Send commands to signer" <<external_system>> as SignerClient
|
||
|
||
rectangle "==Signer server\n<size:12>[System]</size>" <<boundary>> as Signer {
|
||
rectangle "==Signer Software" <<boundary>> as SignerSoftware {
|
||
rectangle "==Serial link handler\n//<size:12>[Go]</size>//\n\n Reads and writes to the serial interface" <<component>> as SerialHandler
|
||
rectangle "==Framer\n//<size:12>[Go]</size>//\n\n Parses and creates frames" <<component>> as Framer
|
||
rectangle "==Server protocol\n//<size:12>[Go]</size>//\n\n Server protocol state machine" <<component>> as ServerProtocol
|
||
rectangle "==Protocol handler\n//<size:12>[Go]</size>//\n\n Parses and creates protocol messages" <<component>> as ProtocolHandler
|
||
rectangle "==X.509 signing\n//<size:12>[Go]</size>//\n\n Handles X.509 certificate signing commands" <<component>> as X509SigningHandler
|
||
rectangle "==X.509 revocation\n//<size:12>[Go]</size>//\n\n Handles X.509 certificate revocation commands" <<component>> as X509RevocationHandler
|
||
rectangle "==OpenPGP signing\n//<size:12>[Go]</size>//\n\n Handles OpenPGP key signing commands"" <<component>> as OpenPGPSigningHandler
|
||
rectangle "==X.509 crl\n//<size:12>[Go]</size>//\n\n Handles X.509 CRL retrieval commands" <<component>> as X509CRLHandler
|
||
rectangle "==Health check\n//<size:12>[Go]</size>//\n\n Handles health check commands" <<component>> as HealthHandler
|
||
rectangle "==HSM access\n//<size:12>[Go]</size>//\n\n Handles HSM hardware access" <<component>> as HSMAccess
|
||
rectangle "==Synchronization handler\n//<size:12>[Go]</size>//\n\n Handles synchronization with other signer" <<component>> as SyncHandler
|
||
database "<$database>\n==Certificate repository\n//<size:12>[Go, Embedded Key-Value DB]</size>//" <<component>> as SignerDB
|
||
}
|
||
|
||
queue "==NATS Service\n//<size:12>[NATS]</size>//" <<component>> as NATS
|
||
}
|
||
|
||
rectangle "==Other signer\n<size:12>[System]</size>" <<boundary>> as Signer2 {
|
||
rectangle "==Signer Software" <<boundary>> as SignerSoftware2 {
|
||
rectangle "==Synchronization handler\n//<size:12>[Go]</size>//\n\n Handles synchronization with other signer" <<external_component>> as SyncHandler2
|
||
database "<$database>\n==Certificate repository\n//<size:12>[Go, Embedded Key-Value DB]</size>//" <<external_component>> as SignerDB2
|
||
}
|
||
|
||
queue "==NATS Service\n//<size:12>[NATS]</size>//" <<external_component>> as NATS2
|
||
}
|
||
|
||
rectangle "==HSM\n//<size:12>[PKCS#11]</size>//\n\n Hardware security module" <<external_component>> as HSM
|
||
|
||
SignerClient - ->> SerialHandler : **Uses**\n//<size:12>[USB serial link]</size>//
|
||
|
||
SerialHandler - ->> Framer : **Uses**
|
||
SerialHandler - ->> ServerProtocol : **Uses**
|
||
ServerProtocol - ->> ProtocolHandler : **Uses**
|
||
|
||
ProtocolHandler - ->> X509SigningHandler : **Uses**
|
||
ProtocolHandler - ->> X509CRLHandler : **Uses**
|
||
ProtocolHandler - ->> X509RevocationHandler : **Uses**
|
||
ProtocolHandler - ->> OpenPGPSigningHandler : **Uses**
|
||
ProtocolHandler - ->> HealthHandler : **Uses**
|
||
|
||
X509SigningHandler - ->> HSMAccess : **Uses**
|
||
X509SigningHandler - ->> SignerDB : **Writes**
|
||
|
||
X509RevocationHandler - ->> SignerDB : **Writes**
|
||
|
||
X509CRLHandler - ->> HSMAccess : **Uses**
|
||
X509CRLHandler - ->> SignerDB : **Reads**
|
||
|
||
OpenPGPSigningHandler - ->> HSMAccess : **Uses**
|
||
OpenPGPSigningHandler - ->> SignerDB : **Writes**
|
||
|
||
HealthHandler - ->> HSMAccess : **Checks**
|
||
HealthHandler - ->> SignerDB : **Checks**
|
||
|
||
SyncHandler - ->> SignerDB : **Uses**
|
||
|
||
SyncHandler <<- ->> NATS : **Synchronize**\n//<size:12>[NATS protocol]</size>//
|
||
NATS <<- ->> NATS2 : **Synchronize**\n//<size:12>[NATS/TLS]</size>//
|
||
SyncHandler2 <<- ->> NATS2 : **Synchronize**\n//<size:12>[NATS protocol]</size>//
|
||
|
||
SyncHandler2 - ->> SignerDB2 : **Uses**
|
||
|
||
HSMAccess - ->> HSM : **Uses**\n//<size:12>[PKCS#11]</size>//
|
||
|
||
@enduml
|
||
|
||
PlantUML version 1.2022.7(Mon Aug 22 19:01:30 CEST 2022)
|
||
(GPL source distribution)
|
||
Java Runtime: OpenJDK Runtime Environment
|
||
JVM: OpenJDK 64-Bit Server VM
|
||
Default Encoding: UTF-8
|
||
Language: de
|
||
Country: DE
|
||
--></g></svg> |