842 lines
No EOL
58 KiB
XML
842 lines
No EOL
58 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="851.4px" preserveAspectRatio="none" style="width:1221px;height:851px;background:#FFFFFF;" version="1.1" viewBox="0 0 1221 851" width="1221.6px" zoomAndPan="magnify"><defs/><g><!--MD5=[ef20b3fe45c502f37db21f37a527870c]
|
||
cluster Signer--><g id="cluster_Signer"><rect height="604.2" rx="1.5" ry="1.5" style="stroke:#444444;stroke-width:0.6;fill:none;stroke-dasharray:7.0,7.0;" width="928.8" x="4.2" y="100.2"/><text fill="#444444" font-family="sans-serif" font-size="3.6" font-style="italic" lengthAdjust="spacing" textLength="22.8" x="457.2" y="104.7416">«boundary»</text><text fill="#444444" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="73.2" x="432" y="116.3109">Signer server</text><text fill="#444444" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="36.6" x="450.3" y="125.2582">[System]</text></g><!--MD5=[1bab5bcae8e0c09a8d95c3a3ae22aa87]
|
||
cluster SignerSoftware--><g id="cluster_SignerSoftware"><rect height="548.4" rx="1.5" ry="1.5" style="stroke:#444444;stroke-width:0.6;fill:none;stroke-dasharray:7.0,7.0;" width="811.2" x="18.6" y="141.6"/><text fill="#444444" font-family="sans-serif" font-size="3.6" font-style="italic" lengthAdjust="spacing" textLength="22.8" x="412.8" y="146.1416">«boundary»</text><text fill="#444444" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="88.2" x="380.1" y="157.7109">Signer Software</text></g><!--MD5=[4e4416bf7ebbd0afd89bc8fc82d4e864]
|
||
cluster Signer2--><g id="cluster_Signer2"><rect height="314.4" rx="1.5" ry="1.5" style="stroke:#444444;stroke-width:0.6;fill:none;stroke-dasharray:7.0,7.0;" width="270.6" x="947.4" y="533.4"/><text fill="#444444" font-family="sans-serif" font-size="3.6" font-style="italic" lengthAdjust="spacing" textLength="22.8" x="1071.3" y="537.9416">«boundary»</text><text fill="#444444" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="68.4" x="1048.5" y="549.5109">Other signer</text><text fill="#444444" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="36.6" x="1064.4" y="558.4582">[System]</text></g><!--MD5=[fd28193bdccf8ac8e7e1a1a0fe20b8a9]
|
||
cluster SignerSoftware2--><g id="cluster_SignerSoftware2"><rect height="258.6" rx="1.5" ry="1.5" style="stroke:#444444;stroke-width:0.6;fill:none;stroke-dasharray:7.0,7.0;" width="147.6" x="1056" y="574.8"/><text fill="#444444" font-family="sans-serif" font-size="3.6" font-style="italic" lengthAdjust="spacing" textLength="22.8" x="1118.4" y="579.3416">«boundary»</text><text fill="#444444" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="88.2" x="1085.7" y="590.9109">Signer Software</text></g><!--MD5=[8f869394a97c4ccf4e0e1a7d0f555823]
|
||
entity NATS--><g id="elem_NATS"><path d="M842.4,626.1 L920.4,626.1 C923.4,626.1 923.4,643.0688 923.4,643.0688 C923.4,643.0688 923.4,660.0375 920.4,660.0375 L842.4,660.0375 C839.4,660.0375 839.4,643.0688 839.4,643.0688 C839.4,643.0688 839.4,626.1 842.4,626.1 " fill="#438DD5" style="stroke:#3C7FC0;stroke-width:0.3;"/><path d="M920.4,626.1 C917.4,626.1 917.4,643.0688 917.4,643.0688 C917.4,660.0375 920.4,660.0375 920.4,660.0375 " fill="none" style="stroke:#3C7FC0;stroke-width:0.3;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="42.6" x="857.1" y="635.7832">«container»</text><text fill="#FFFFFF" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="72" x="842.4" y="646.3922">NATS Service</text><text fill="#FFFFFF" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="25.2" x="865.8" y="655.3395">[NATS]</text></g><!--MD5=[1b07182dd713ed4e3be3a95ab68a0fd5]
|
||
entity SerialHandler--><g id="elem_SerialHandler"><rect fill="#85BBF0" height="79.05" rx="1.5" ry="1.5" style="stroke:#78A8D8;stroke-width:0.3;" width="130.2" x="267.9" y="169.8"/><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="49.8" x="308.1" y="182.4832">«component»</text><text fill="#000000" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="98.4" x="283.8" y="193.0922">Serial link handler</text><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="15.6" x="325.2" y="202.0395">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="2.4" x="331.8" y="211.5346"> </text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="99.6" x="283.2" y="221.3127">Reads and writes to the</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="115.8" x="273.9" y="231.0908">serial interface, parses and</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="64.2" x="300.9" y="240.8689">creates frames</text></g><!--MD5=[3d42f30e2a78c2aed96731e8102a93c9]
|
||
entity ProtocolHandler--><g id="elem_ProtocolHandler"><rect fill="#85BBF0" height="69.2719" rx="1.5" ry="1.5" style="stroke:#78A8D8;stroke-width:0.3;" width="101.4" x="282.3" y="294"/><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="49.8" x="308.1" y="306.6832">«component»</text><text fill="#000000" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="89.4" x="288.3" y="317.2922">Protocol handler</text><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="15.6" x="325.2" y="326.2395">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="2.4" x="331.8" y="335.7346"> </text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="80.4" x="292.8" y="345.5127">Parses and creates</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="80.4" x="292.8" y="355.2908">protocol messages</text></g><!--MD5=[1011eedbd8ff904aa9b61ed64da000c5]
|
||
entity X509SigningHandler--><g id="elem_X509SigningHandler"><rect fill="#85BBF0" height="69.2719" rx="1.5" ry="1.5" style="stroke:#78A8D8;stroke-width:0.3;" width="124.2" x="408.3" y="413.7"/><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="49.8" x="445.5" y="426.3832">«component»</text><text fill="#000000" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="72.6" x="434.1" y="436.9922">X.509 signing</text><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="15.6" x="462.6" y="445.9395">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="2.4" x="469.2" y="455.4346"> </text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="107.4" x="416.7" y="465.2127">Handles X.509 certificate</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="80.4" x="430.2" y="474.9908">signing commands</text></g><!--MD5=[1c6dc598b8ad1e32344a0fe24eeaf662]
|
||
entity X509RevocationHandler--><g id="elem_X509RevocationHandler"><rect fill="#85BBF0" height="69.2719" rx="1.5" ry="1.5" style="stroke:#78A8D8;stroke-width:0.3;" width="124.2" x="553.5" y="413.7"/><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="49.8" x="590.7" y="426.3832">«component»</text><text fill="#000000" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="91.2" x="570" y="436.9922">X.509 revocation</text><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="15.6" x="607.8" y="445.9395">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="2.4" x="614.4" y="455.4346"> </text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="107.4" x="561.9" y="465.2127">Handles X.509 certificate</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="95.4" x="567.9" y="474.9908">revocation commands</text></g><!--MD5=[6f59e0a59673b0784d2b49aad5931220]
|
||
entity OpenPGPSigningHandler--><g id="elem_OpenPGPSigningHandler"><rect fill="#85BBF0" height="69.2719" rx="1.5" ry="1.5" style="stroke:#78A8D8;stroke-width:0.3;" width="110.4" x="28.2" y="413.7"/><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="49.8" x="58.5" y="426.3832">«component»</text><text fill="#000000" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="92.4" x="37.2" y="436.9922">OpenPGP signing</text><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="15.6" x="75.6" y="445.9395">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="2.4" x="82.2" y="455.4346"> </text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="93.6" x="36.6" y="465.2127">Handles OpenPGP key</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="84" x="41.4" y="474.9908">signing commands"</text></g><!--MD5=[ac60de3e2d5367fb8173a39d1f6f967e]
|
||
entity X509CRLHandler--><g id="elem_X509CRLHandler"><rect fill="#85BBF0" height="69.2719" rx="1.5" ry="1.5" style="stroke:#78A8D8;stroke-width:0.3;" width="97.8" x="159.9" y="413.7"/><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="49.8" x="183.9" y="426.3832">«component»</text><text fill="#000000" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="47.4" x="185.1" y="436.9922">X.509 crl</text><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="15.6" x="201" y="445.9395">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="2.4" x="207.6" y="455.4346"> </text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="81" x="168.3" y="465.2127">Handles X.509 CRL</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="85.8" x="165.9" y="474.9908">retrieval commands</text></g><!--MD5=[04880e5e31ecc78df75a393e279e8df9]
|
||
entity HealthHandler--><g id="elem_HealthHandler"><rect fill="#85BBF0" height="69.2719" rx="1.5" ry="1.5" style="stroke:#78A8D8;stroke-width:0.3;" width="108.6" x="278.7" y="413.7"/><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="49.8" x="308.1" y="426.3832">«component»</text><text fill="#000000" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="69.6" x="298.2" y="436.9922">Health check</text><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="15.6" x="325.2" y="445.9395">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="2.4" x="331.8" y="455.4346"> </text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="91.8" x="287.1" y="465.2127">Handles health check</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="47.4" x="309.3" y="474.9908">commands</text></g><!--MD5=[58d078c34e72bc75166669b12cea25ab]
|
||
entity HSMAccess--><g id="elem_HSMAccess"><rect fill="#85BBF0" height="69.2719" rx="1.5" ry="1.5" style="stroke:#78A8D8;stroke-width:0.3;" width="116.4" x="154.8" y="608.7"/><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="49.8" x="188.1" y="621.3832">«component»</text><text fill="#000000" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="64.2" x="180.9" y="631.9922">HSM access</text><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="15.6" x="205.2" y="640.9395">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="2.4" x="211.8" y="650.4346"> </text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="99.6" x="163.2" y="660.2127">Handles HSM hardware</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="28.8" x="198.6" y="669.9908">access</text></g><!--MD5=[2db99c1383d9a8197df41033e0363f36]
|
||
entity SyncHandler--><g id="elem_SyncHandler"><rect fill="#85BBF0" height="80.4469" rx="1.5" ry="1.5" style="stroke:#78A8D8;stroke-width:0.3;" width="121.2" x="699" y="408"/><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="49.8" x="734.7" y="420.6832">«component»</text><text fill="#000000" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="85.8" x="714.9" y="431.2922">Synchronization</text><text fill="#000000" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="40.8" x="739.2" y="442.4672">handler</text><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="15.6" x="751.8" y="451.4145">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="2.4" x="758.4" y="460.9096"> </text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="104.4" x="707.4" y="470.6877">Handles synchronization</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="71.4" x="723.9" y="480.4658">with other signer</text></g><!--MD5=[e834ab3daed066426c91d2e7962575e2]
|
||
entity SignerDB--><g id="elem_SignerDB"><path d="M375.6,612 C375.6,606 439.8,606 439.8,606 C439.8,606 504,606 504,612 L504,674.1375 C504,680.1375 439.8,680.1375 439.8,680.1375 C439.8,680.1375 375.6,680.1375 375.6,674.1375 L375.6,612 " fill="#85BBF0" style="stroke:#78A8D8;stroke-width:0.3;"/><path d="M375.6,612 C375.6,618 439.8,618 439.8,618 C439.8,618 504,618 504,612 " fill="none" style="stroke:#78A8D8;stroke-width:0.3;"/><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="49.8" x="414.9" y="627.0832">«component»</text><image height="28.8" width="28.8" x="425.4" 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="628.7813"/><text fill="#000000" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="116.4" x="381.6" y="666.4922">Certificate repository</text><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="110.4" x="384.6" y="675.4395">[Go, Embedded Key-Value DB]</text></g><!--MD5=[8940efdef782accd207644e2a21c9a46]
|
||
entity NATS2--><g id="elem_NATS2"><path d="M960,769.5 L1041.6,769.5 C1044.6,769.5 1044.6,786.4688 1044.6,786.4688 C1044.6,786.4688 1044.6,803.4375 1041.6,803.4375 L960,803.4375 C957,803.4375 957,786.4688 957,786.4688 C957,786.4688 957,769.5 960,769.5 " fill="#B3B3B3" style="stroke:#A6A6A6;stroke-width:0.3;"/><path d="M1041.6,769.5 C1038.6,769.5 1038.6,786.4688 1038.6,786.4688 C1038.6,803.4375 1041.6,803.4375 1041.6,803.4375 " fill="none" style="stroke:#A6A6A6;stroke-width:0.3;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="75.6" x="960" y="779.1832">«external_container»</text><text fill="#FFFFFF" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="72" x="961.8" y="789.7922">NATS Service</text><text fill="#FFFFFF" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="25.2" x="985.2" y="798.7395">[NATS]</text></g><!--MD5=[3d669a59ee04a28ec5dc9358aab5f1b1]
|
||
entity SyncHandler2--><g id="elem_SyncHandler2"><rect fill="#CCCCCC" height="80.4469" rx="1.5" ry="1.5" style="stroke:#BFBFBF;stroke-width:0.3;" width="121.2" x="1067.4" y="603"/><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="82.8" x="1086.6" y="615.6832">«external_component»</text><text fill="#000000" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="85.8" x="1083.3" y="626.2922">Synchronization</text><text fill="#000000" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="40.8" x="1107.6" y="637.4672">handler</text><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="15.6" x="1120.2" y="646.4145">[Go]</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="2.4" x="1126.8" y="655.9096"> </text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="104.4" x="1075.8" y="665.6877">Handles synchronization</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="71.4" x="1092.3" y="675.4658">with other signer</text></g><!--MD5=[d6aaf1a0f5c32983fa5796596196f201]
|
||
entity SignerDB2--><g id="elem_SignerDB2"><path d="M1065.6,755.4 C1065.6,749.4 1129.8,749.4 1129.8,749.4 C1129.8,749.4 1194,749.4 1194,755.4 L1194,817.5375 C1194,823.5375 1129.8,823.5375 1129.8,823.5375 C1129.8,823.5375 1065.6,823.5375 1065.6,817.5375 L1065.6,755.4 " fill="#CCCCCC" style="stroke:#BFBFBF;stroke-width:0.3;"/><path d="M1065.6,755.4 C1065.6,761.4 1129.8,761.4 1129.8,761.4 C1129.8,761.4 1194,761.4 1194,755.4 " fill="none" style="stroke:#BFBFBF;stroke-width:0.3;"/><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="82.8" x="1088.4" y="770.4832">«external_component»</text><image height="28.8" width="28.8" x="1115.4" 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="772.1813"/><text fill="#000000" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="116.4" x="1071.6" y="809.8922">Certificate repository</text><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="110.4" x="1074.6" y="818.8395">[Go, Embedded Key-Value DB]</text></g><!--MD5=[c25eb3bb2a673e49b4700e0aa1b6b6c8]
|
||
entity SignerClient--><g id="elem_SignerClient"><rect fill="#999999" height="51.1125" rx="1.5" ry="1.5" style="stroke:#8A8A8A;stroke-width:0.3;" width="125.4" x="270.3" y="4.2"/><text fill="#FFFFFF" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="67.2" x="299.4" y="16.8832">«external_system»</text><text fill="#FFFFFF" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="67.8" x="299.1" y="27.4922">Signer client</text><text fill="#FFFFFF" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="2.4" x="331.8" y="37.5533"> </text><text fill="#FFFFFF" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="111" x="278.7" y="47.3314">Send commands to signer</text></g><!--MD5=[ff028a7ac4eed75d9278e76cd9053439]
|
||
entity HSM--><g id="elem_HSM"><rect fill="#CCCCCC" height="59.4938" rx="1.5" ry="1.5" style="stroke:#BFBFBF;stroke-width:0.3;" width="127.2" x="149.4" y="756.9"/><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="82.8" x="171.6" y="769.5832">«external_component»</text><text fill="#000000" font-family="sans-serif" font-size="9.6" font-weight="bold" lengthAdjust="spacing" textLength="24.6" x="200.7" y="780.1922">HSM</text><text fill="#000000" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="40.2" x="192.9" y="789.1395">[PKCS#11]</text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="2.4" x="211.8" y="798.6346"> </text><text fill="#000000" font-family="sans-serif" font-size="8.4" lengthAdjust="spacing" textLength="112.8" x="157.8" y="808.4127">Hardware security module</text></g><!--MD5=[c4211f20d77779d002d0636fe4eff351]
|
||
link SignerClient to SerialHandler--><g id="link_SignerClient_SerialHandler"><path d="M333,55.308 C333,83.61 333,130.254 333,164.706 " fill="none" id="SignerClient-to-SerialHandler" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="333,169.698,334.8,164.898,331.2,164.898,333,169.698" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="19.2" x="352.5" y="80.4832">Uses</text><text fill="#666666" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="57" x="333.6" y="88.8645">[USB serial link]</text></g><!--MD5=[a5ac9fd6085cba509022a8449c62ed3f]
|
||
link SerialHandler to ProtocolHandler--><g id="link_SerialHandler_ProtocolHandler"><path d="M333,249.096 C333,261.936 333,276.192 333,289.02 " fill="none" id="SerialHandler-to-ProtocolHandler" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="333,293.856,334.8,289.056,331.2,289.056,333,293.856" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="19.2" x="333.6" y="274.2832">Uses</text></g><!--MD5=[6904b7103d89ba041a727edd177c7033]
|
||
link ProtocolHandler to X509SigningHandler--><g id="link_ProtocolHandler_X509SigningHandler"><path d="M372.372,363.06 C389.55,377.868 409.734,395.28 427.314,410.436 " fill="none" id="ProtocolHandler-to-X509SigningHandler" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="431.022,413.64,428.5647,409.1409,426.2123,411.8661,431.022,413.64" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="19.2" x="402.6" y="388.2832">Uses</text></g><!--MD5=[6e0d1b21c46cf0a1aeb331a2c465700e]
|
||
link ProtocolHandler to X509CRLHandler--><g id="link_ProtocolHandler_X509CRLHandler"><path d="M297.408,363.06 C281.946,377.808 263.79,395.136 247.95,410.25 " fill="none" id="ProtocolHandler-to-X509CRLHandler" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="244.398,413.64,249.1119,411.6253,246.6248,409.0225,244.398,413.64" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="19.2" x="279" y="388.2832">Uses</text></g><!--MD5=[8bd9096c966b0786426f772de5ff586e]
|
||
link ProtocolHandler to X509RevocationHandler--><g id="link_ProtocolHandler_X509RevocationHandler"><path d="M383.874,345.972 C426.912,360.774 489.882,383.682 543,408 C545.448,409.122 547.926,410.292 550.416,411.492 " fill="none" id="ProtocolHandler-to-X509RevocationHandler" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="554.916,413.694,551.3949,409.9682,549.8132,413.2022,554.916,413.694" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="19.2" x="498.6" y="388.2832">Uses</text></g><!--MD5=[7630a6f192d59137aef045c59458f3ad]
|
||
link ProtocolHandler to OpenPGPSigningHandler--><g id="link_ProtocolHandler_OpenPGPSigningHandler"><path d="M282.288,348.75 C244.944,363.732 193.254,385.548 149.4,408 C147.318,409.068 145.212,410.172 143.094,411.306 " fill="none" id="ProtocolHandler-to-OpenPGPSigningHandler" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="138.732,413.676,143.8082,412.9606,142.0862,409.7992,138.732,413.676" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="19.2" x="204.6" y="388.2832">Uses</text></g><!--MD5=[dd0964938e0e2c1d6f26fa00fb2a70e5]
|
||
link ProtocolHandler to HealthHandler--><g id="link_ProtocolHandler_HealthHandler"><path d="M333,363.06 C333,377.31 333,393.972 333,408.72 " fill="none" id="ProtocolHandler-to-HealthHandler" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="333,413.64,334.8,408.84,331.2,408.84,333,413.64" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="19.2" x="333.6" y="388.2832">Uses</text></g><!--MD5=[c03f96c452f26815ba38daf1adeb88ce]
|
||
link X509SigningHandler to HSMAccess--><g id="link_X509SigningHandler_HSMAccess"><path d="M451.68,482.844 C441.522,497.97 427.518,514.44 410.4,523.8 C392.52,533.58 383.766,521.148 364.8,528.6 C321.12,545.772 279.06,579.114 250.338,605.328 " fill="none" id="X509SigningHandler-to-HSMAccess" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="246.726,608.646,251.4773,606.7211,249.04,604.0716,246.726,608.646" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="19.2" x="432" y="517.8832">Uses</text></g><!--MD5=[049c56c40f5ce55919cf848cfeae4412]
|
||
link X509SigningHandler to SignerDB--><g id="link_X509SigningHandler_SignerDB"><path d="M469.302,482.886 C468.6,495.75 467.46,510.492 465.6,523.8 C461.97,549.756 455.796,578.478 450.39,601.182 " fill="none" id="X509SigningHandler-to-SignerDB" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="449.256,605.934,452.1297,601.6888,448.6298,600.846,449.256,605.934" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="26.4" x="468.6" y="517.8832">Writes</text></g><!--MD5=[82b942a05dde6d4abd870be92d5b79e1]
|
||
link X509RevocationHandler to SignerDB--><g id="link_X509RevocationHandler_SignerDB"><path d="M560.058,482.754 C541.632,495.66 521.898,511.428 506.4,528.6 C486.888,550.218 470.346,578.448 458.622,601.41 " fill="none" id="X509RevocationHandler-to-SignerDB" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="456.342,605.928,460.1097,602.4518,456.8949,600.8315,456.342,605.928" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="26.4" x="528.6" y="517.8832">Writes</text></g><!--MD5=[f3fbeda310f19b6def0836f108fb90ae]
|
||
link X509CRLHandler to HSMAccess--><g id="link_X509CRLHandler_HSMAccess"><path d="M195.06,482.736 C192.546,490.392 190.308,498.576 189,506.4 C183.504,539.31 191.046,576.624 199.092,603.864 " fill="none" id="X509CRLHandler-to-HSMAccess" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="200.49,608.484,200.8156,603.3679,197.3713,604.4154,200.49,608.484" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="19.2" x="189.6" y="517.8832">Uses</text></g><!--MD5=[1be83cc4a91ae3618c25e12be491020b]
|
||
link X509CRLHandler to SignerDB--><g id="link_X509CRLHandler_SignerDB"><path d="M257.856,482.772 C261.306,484.764 264.774,486.66 268.2,488.4 C288.966,498.93 298.116,493.356 317.4,506.4 C327.9,513.504 372.84,564.642 405.222,602.172 " fill="none" id="X509CRLHandler-to-SignerDB" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="408.516,605.988,406.7486,601.1759,404.0203,603.5246,408.516,605.988" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="24.6" x="334.8" y="517.8832">Reads</text></g><!--MD5=[1531770e9c84b9a37109fc722a3e41bc]
|
||
link OpenPGPSigningHandler to HSMAccess--><g id="link_OpenPGPSigningHandler_HSMAccess"><path d="M106.122,482.778 C128.91,516.858 163.932,569.22 187.614,604.644 " fill="none" id="OpenPGPSigningHandler-to-HSMAccess" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="190.302,608.658,189.1297,603.6674,186.1373,605.6688,190.302,608.658" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="19.2" x="133.8" y="517.8832">Uses</text></g><!--MD5=[5647650e77d9b601644db74356963c93]
|
||
link OpenPGPSigningHandler to SignerDB--><g id="link_OpenPGPSigningHandler_SignerDB"><path d="M136.014,482.736 C140.448,484.86 144.936,486.786 149.4,488.4 C198.63,506.196 218.544,483.876 265.8,506.4 C276.198,511.356 276.156,516.42 285,523.8 C317.736,551.118 355.692,580.284 385.83,602.886 " fill="none" id="OpenPGPSigningHandler-to-SignerDB" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="389.844,605.886,387.0778,601.57,384.9219,604.453,389.844,605.886" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="26.4" x="285.6" y="517.8832">Writes</text></g><!--MD5=[01fcd97973dce0a15ca3f22ec6f9a33e]
|
||
link HealthHandler to HSMAccess--><g id="link_HealthHandler_HSMAccess"><path d="M278.544,482.46 C275.058,484.494 271.59,486.492 268.2,488.4 C253.026,496.944 243.534,492.24 233.4,506.4 C213.276,534.522 209.382,574.344 209.796,603.666 " fill="none" id="HealthHandler-to-HSMAccess" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="209.91,608.646,211.5981,603.8055,207.9991,603.8891,209.91,608.646" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="28.8" x="234" y="517.8832">Checks</text></g><!--MD5=[8e666ca13f2e292cf801466daea72d33]
|
||
link HealthHandler to SignerDB--><g id="link_HealthHandler_SignerDB"><path d="M353.514,482.76 C358.086,490.494 362.862,498.696 367.2,506.4 C385.044,538.092 404.376,574.47 418.602,601.65 " fill="none" id="HealthHandler-to-SignerDB" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="420.84,605.934,420.2057,600.847,417.0172,602.5184,420.84,605.934" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="28.8" x="376.2" y="517.8832">Checks</text></g><!--MD5=[f6d0a255b9300fdc869edf618776ea20]
|
||
link SyncHandler to SignerDB--><g id="link_SyncHandler_SignerDB"><path d="M698.916,483.69 C695.334,485.37 691.74,486.948 688.2,488.4 C633.648,510.714 618.39,513.282 560.4,523.8 C548.544,525.948 516.57,522.144 506.4,528.6 C480.288,545.166 463.206,575.928 452.88,601.326 " fill="none" id="SyncHandler-to-SignerDB" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="451.098,605.838,454.5393,602.0384,451.1924,600.7125,451.098,605.838" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="19.2" x="639" y="517.8832">Uses</text></g><!--MD5=[ce0bb68167ca79996a54c04fb7a06609]
|
||
link SyncHandler to NATS--><g id="link_SyncHandler_NATS"><path d="M802.014,492.336 C811.836,503.628 821.754,516.132 829.8,528.6 C849.354,558.888 865.236,597.81 873.996,621.444 " fill="none" id="SyncHandler-NATS" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="875.652,625.962,875.6884,620.8357,872.3087,622.0758,875.652,625.962" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="798.69,488.55,800.5066,493.3437,803.2107,490.9672,798.69,488.55" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="50.4" x="828.3" y="513.6832">Synchronize</text><text fill="#666666" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="57" x="825" y="522.0645">[NATS protocol]</text></g><!--MD5=[ac10af24f910bae24644d4ccf6ac738e]
|
||
link NATS to NATS2--><g id="link_NATS_NATS2"><path d="M895.272,664.308 C907.872,682.488 927.318,709.482 946.2,731.4 C956.484,743.34 968.838,755.826 979.194,765.846 " fill="none" id="NATS-NATS2" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="982.908,769.416,980.6986,764.7902,978.2017,767.3835,982.908,769.416" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="892.53,660.336,893.7738,665.3092,896.7372,663.2651,892.53,660.336" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="50.4" x="946.8" y="721.2832">Synchronize</text><text fill="#666666" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="40.8" x="951.6" y="729.6645">[NATS/TLS]</text></g><!--MD5=[06c6604c5c35b105f23e33e7e3e4aba5]
|
||
link SyncHandler2 to NATS2--><g id="link_SyncHandler2_NATS2"><path d="M1089.258,687.108 C1065.864,713.262 1037.148,745.368 1018.908,765.756 " fill="none" id="SyncHandler2-NATS2" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="1015.626,769.428,1020.1677,767.0504,1017.4845,764.6504,1015.626,769.428" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="1092.57,683.412,1088.0251,685.7835,1090.7051,688.1872,1092.57,683.412" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="50.4" x="1068.3" y="721.2832">Synchronize</text><text fill="#666666" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="57" x="1065" y="729.6645">[NATS protocol]</text></g><!--MD5=[19a8c02a4a6c3e2efd241ec79f03fa40]
|
||
link SyncHandler2 to SignerDB2--><g id="link_SyncHandler2_SignerDB2"><path d="M1128.504,683.412 C1128.744,702.426 1129.032,725.208 1129.272,744.468 " fill="none" id="SyncHandler2-to-SignerDB2" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="1129.338,749.286,1131.0779,744.4639,1127.4781,744.5089,1129.338,749.286" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="19.2" x="1129.2" y="725.4832">Uses</text></g><!--MD5=[c3f60d65e94da5508ad0c196407a2043]
|
||
link HSMAccess to HSM--><g id="link_HSMAccess_HSM"><path d="M213,677.862 C213,700.242 213,729.42 213,751.824 " fill="none" id="HSMAccess-to-HSM" style="stroke:#666666;stroke-width:0.6;"/><polygon fill="#666666" points="213,756.786,214.8,751.986,211.2,751.986,213,756.786" style="stroke:#666666;stroke-width:0.6;"/><text fill="#666666" font-family="sans-serif" font-size="7.2" font-weight="bold" lengthAdjust="spacing" textLength="19.2" x="224.1" y="721.2832">Uses</text><text fill="#666666" font-family="sans-serif" font-size="7.2" font-style="italic" lengthAdjust="spacing" textLength="40.2" x="213.6" y="729.6645">[PKCS#11]</text></g><!--MD5=[c9954cc1af4dd87dab4d4e1f05280030]
|
||
@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, parses and creates frames")
|
||
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")
|
||
}
|
||
|
||
ContainerQueue(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")
|
||
}
|
||
|
||
ContainerQueue_Ext(NATS2, "NATS Service", "NATS")
|
||
}
|
||
|
||
Component_Ext(HSM, "HSM", "PKCS#11", "Hardware security module")
|
||
|
||
Rel(SignerClient, SerialHandler, "Uses", "USB serial link")
|
||
|
||
Rel(SerialHandler, 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, parses and creates frames" <<component>> as SerialHandler
|
||
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>//" <<container>> 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_container>> 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 - ->> 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.6(Tue Jun 21 19:34:49 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> |