wolfBoot-examples/sim-OTA/sim-OTA.svg

1 line
24 KiB
XML

<?plantuml 1.2026.2?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" data-diagram-type="SEQUENCE" height="1126px" preserveAspectRatio="none" style="width:725px;height:1126px;background:#FFFFFF;" version="1.1" viewBox="0 0 725 1126" width="725px" zoomAndPan="magnify"><title>OTA Sequence</title><defs/><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="103.8311" x="306.6289" y="28.5352">OTA Sequence</text><rect fill="none" height="118.2422" style="stroke:#000000;stroke-width:1.5;" width="313.7363" x="10" y="208.2188"/><rect fill="none" height="168.8633" style="stroke:#000000;stroke-width:1.5;" width="313.7363" x="10" y="340.4609"/><rect fill="none" height="118.2422" style="stroke:#000000;stroke-width:1.5;" width="324.9043" x="10" y="523.3242"/><g class="participant-lifeline" data-entity-uid="part1" data-qualified-name="wolfBoot" id="part1-lifeline"><g><title>wolfBoot</title><rect fill="#000000" fill-opacity="0.00000" height="1016.9375" width="8" x="52.5347" y="73.9766"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="56" x2="56" y1="73.9766" y2="1090.9141"/></g></g><g class="participant-lifeline" data-entity-uid="part2" data-qualified-name="TPM" id="part2-lifeline"><g><title>TPM</title><rect fill="#000000" fill-opacity="0.00000" height="1016.9375" width="8" x="288.4116" y="73.9766"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="292.0869" x2="292.0869" y1="73.9766" y2="1090.9141"/></g></g><g class="participant-lifeline" data-entity-uid="part3" data-qualified-name="app" id="part3-lifeline"><g><title>app</title><rect fill="#000000" fill-opacity="0.00000" height="1016.9375" width="8" x="339.4136" y="73.9766"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="342.7363" x2="342.7363" y1="73.9766" y2="1090.9141"/></g></g><g class="participant-lifeline" data-entity-uid="part4" data-qualified-name="MQTT_Broker" id="part4-lifeline"><g><title>MQTT_Broker</title><rect fill="#000000" fill-opacity="0.00000" height="1016.9375" width="8" x="656.2231" y="73.9766"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="659.3574" x2="659.3574" y1="73.9766" y2="1090.9141"/></g></g><g class="participant participant-head" data-entity-uid="part1" data-qualified-name="wolfBoot" id="part1-head"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="73.0693" x="20" y="42.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="59.0693" x="27" y="63.0234">wolfBoot</text></g><g class="participant participant-tail" data-entity-uid="part1" data-qualified-name="wolfBoot" id="part1-tail"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="73.0693" x="20" y="1089.9141"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="59.0693" x="27" y="1110.4492">wolfBoot</text></g><g class="participant participant-head" data-entity-uid="part2" data-qualified-name="TPM" id="part2-head"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="42.6494" x="271.0869" y="42.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="28.6494" x="278.0869" y="63.0234">TPM</text></g><g class="participant participant-tail" data-entity-uid="part2" data-qualified-name="TPM" id="part2-tail"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="42.6494" x="271.0869" y="1089.9141"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="28.6494" x="278.0869" y="1110.4492">TPM</text></g><g class="participant participant-head" data-entity-uid="part3" data-qualified-name="app" id="part3-head"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="39.3545" x="323.7363" y="42.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="25.3545" x="330.7363" y="63.0234">app</text></g><g class="participant participant-tail" data-entity-uid="part3" data-qualified-name="app" id="part3-tail"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="39.3545" x="323.7363" y="1089.9141"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="25.3545" x="330.7363" y="1110.4492">app</text></g><g class="participant participant-head" data-entity-uid="part4" data-qualified-name="MQTT_Broker" id="part4-head"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="105.7314" x="607.3574" y="42.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="91.7314" x="614.3574" y="63.0234">MQTT_Broker</text></g><g class="participant participant-tail" data-entity-uid="part4" data-qualified-name="MQTT_Broker" id="part4-tail"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="105.7314" x="607.3574" y="1089.9141"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="91.7314" x="614.3574" y="1110.4492">MQTT_Broker</text></g><g class="message" data-entity-1="part1" data-entity-2="part2" id="msg1"><polygon fill="#181818" points="280.4116,101.2871,290.4116,105.2871,280.4116,109.2871,284.4116,105.2871" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="56.5347" x2="286.4116" y1="105.2871" y2="105.2871"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="8.5757" x="120.5588" y="100.5449">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="95.2529" x="133.1345" y="100.5449">TPM2_Startup()</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg2"><polygon fill="#181818" points="67.5347,130.5977,57.5347,134.5977,67.5347,138.5977,63.5347,134.5977" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="61.5347" x2="291.4116" y1="134.5977" y2="134.5977"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="8.5757" x="112.2529" y="129.8555">2</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="111.8647" x="124.8286" y="129.8555">TPM_RC_SUCCESS</text></g><g class="message" data-entity-1="part1" data-entity-2="part2" id="msg3"><polygon fill="#181818" points="280.4116,159.9082,290.4116,163.9082,280.4116,167.9082,284.4116,163.9082" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="56.5347" x2="286.4116" y1="163.9082" y2="163.9082"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="8.5757" x="118.4292" y="159.166">3</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="99.5122" x="131.0049" y="159.166">TPM2_SelfTest()</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg4"><polygon fill="#181818" points="67.5347,189.2188,57.5347,193.2188,67.5347,197.2188,63.5347,193.2188" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="61.5347" x2="291.4116" y1="193.2188" y2="193.2188"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="8.5757" x="112.2529" y="188.4766">4</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="111.8647" x="124.8286" y="188.4766">TPM_RC_SUCCESS</text></g><path d="M10,208.2188 L154.436,208.2188 L154.436,215.5293 L144.436,225.5293 L10,225.5293 L10,208.2188" fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="118.2422" style="stroke:#000000;stroke-width:1.5;" width="313.7363" x="10" y="208.2188"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="99.436" x="25" y="221.7871">Measured Boot</text><g class="message" data-entity-1="part1" data-entity-2="part1" id="msg5"><line style="stroke:#181818;stroke-width:1;" x1="56.5347" x2="98.5347" y1="246.8398" y2="246.8398"/><line style="stroke:#181818;stroke-width:1;" x1="98.5347" x2="98.5347" y1="246.8398" y2="259.8398"/><line style="stroke:#181818;stroke-width:1;" x1="57.5347" x2="98.5347" y1="259.8398" y2="259.8398"/><polygon fill="#181818" points="67.5347,255.8398,57.5347,259.8398,67.5347,263.8398,63.5347,259.8398" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="8.5757" x="63.5347" y="242.0977">5</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="66.5679" x="76.1104" y="242.0977">Hash itself</text></g><g class="message" data-entity-1="part1" data-entity-2="part2" id="msg6"><polygon fill="#181818" points="280.4116,285.1504,290.4116,289.1504,280.4116,293.1504,284.4116,289.1504" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="56.5347" x2="286.4116" y1="289.1504" y2="289.1504"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="8.5757" x="78.2771" y="284.4082">6</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="179.8164" x="90.8528" y="284.4082">TPM2_PCR_Extend(Index 16)</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg7"><polygon fill="#181818" points="67.5347,314.4609,57.5347,318.4609,67.5347,322.4609,63.5347,318.4609" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="61.5347" x2="291.4116" y1="318.4609" y2="318.4609"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="8.5757" x="112.2529" y="313.7188">7</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="111.8647" x="124.8286" y="313.7188">TPM_RC_SUCCESS</text></g><path d="M10,340.4609 L144.1401,340.4609 L144.1401,347.7715 L134.1401,357.7715 L10,357.7715 L10,340.4609" fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="168.8633" style="stroke:#000000;stroke-width:1.5;" width="313.7363" x="10" y="340.4609"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="89.1401" x="25" y="354.0293">Root of Trust</text><path d="M61,362.7715 L61,402.7715 L256,402.7715 L256,372.7715 L246,362.7715 L61,362.7715" fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M246,362.7715 L246,372.7715 L256,372.7715 L246,362.7715" fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="174.5098" x="67" y="380.3398">Read the hash of public key</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="117.6982" x="67" y="395.6504">stored in NV Index</text><g class="message" data-entity-1="part1" data-entity-2="part2" id="msg8"><polygon fill="#181818" points="280.4116,425.7031,290.4116,429.7031,280.4116,433.7031,284.4116,429.7031" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="56.5347" x2="286.4116" y1="429.7031" y2="429.7031"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="8.5757" x="115.5823" y="424.9609">8</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="105.2061" x="128.158" y="424.9609">TPM2_NV_Read()</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg9"><polygon fill="#181818" points="67.5347,455.0137,57.5347,459.0137,67.5347,463.0137,63.5347,459.0137" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="61.5347" x2="291.4116" y1="459.0137" y2="459.0137"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="8.5757" x="112.2529" y="454.2715">9</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="111.8647" x="124.8286" y="454.2715">TPM_RC_SUCCESS</text></g><g class="message" data-entity-1="part1" data-entity-2="part1" id="msg10"><line style="stroke:#181818;stroke-width:1;" x1="56.5347" x2="98.5347" y1="488.3242" y2="488.3242"/><line style="stroke:#181818;stroke-width:1;" x1="98.5347" x2="98.5347" y1="488.3242" y2="501.3242"/><line style="stroke:#181818;stroke-width:1;" x1="57.5347" x2="98.5347" y1="501.3242" y2="501.3242"/><polygon fill="#181818" points="67.5347,497.3242,57.5347,501.3242,67.5347,505.3242,63.5347,501.3242" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="17.1514" x="63.5347" y="483.582">10</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="200.7256" x="84.686" y="483.582">Compare the hash of public key</text></g><path d="M10,523.3242 L329.9043,523.3242 L329.9043,530.6348 L319.9043,540.6348 L10,540.6348 L10,523.3242" fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="118.2422" style="stroke:#000000;stroke-width:1.5;" width="324.9043" x="10" y="523.3242"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="274.9043" x="25" y="536.8926">Verify the signature of application image</text><g class="message" data-entity-1="part1" data-entity-2="part1" id="msg11"><line style="stroke:#181818;stroke-width:1;" x1="56.5347" x2="98.5347" y1="561.9453" y2="561.9453"/><line style="stroke:#181818;stroke-width:1;" x1="98.5347" x2="98.5347" y1="561.9453" y2="574.9453"/><line style="stroke:#181818;stroke-width:1;" x1="57.5347" x2="98.5347" y1="574.9453" y2="574.9453"/><polygon fill="#181818" points="67.5347,570.9453,57.5347,574.9453,67.5347,578.9453,63.5347,574.9453" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="17.1514" x="63.5347" y="557.2031">11</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="98.249" x="84.686" y="557.2031">Hash the image</text></g><g class="message" data-entity-1="part1" data-entity-2="part2" id="msg12"><polygon fill="#181818" points="280.4116,600.2559,290.4116,604.2559,280.4116,608.2559,284.4116,604.2559" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="56.5347" x2="286.4116" y1="604.2559" y2="604.2559"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="17.1514" x="91.0105" y="599.5137">12</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="145.7739" x="112.1619" y="599.5137">TPM2_VerifySignature()</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg13"><polygon fill="#181818" points="67.5347,629.5664,57.5347,633.5664,67.5347,637.5664,63.5347,633.5664" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="61.5347" x2="291.4116" y1="633.5664" y2="633.5664"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="17.1514" x="107.9651" y="628.8242">13</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="111.8647" x="129.1165" y="628.8242">TPM_RC_SUCCESS</text></g><g class="message" data-entity-1="part1" data-entity-2="part3" id="msg14"><polygon fill="#181818" points="331.4136,665.877,341.4136,669.877,331.4136,673.877,335.4136,669.877" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="56.5347" x2="337.4136" y1="669.877" y2="669.877"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="17.1514" x="117.3779" y="665.1348">14</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="144.041" x="138.5293" y="665.1348">Trigger the application</text></g><rect fill="#EEEEEE" height="3" style="stroke:#EEEEEE;stroke-width:1;" width="718.0889" x="0" y="698.5322"/><line style="stroke:#000000;stroke-width:1;" x1="0" x2="718.0889" y1="698.5322" y2="698.5322"/><line style="stroke:#000000;stroke-width:1;" x1="0" x2="718.0889" y1="701.5322" y2="701.5322"/><rect fill="#EEEEEE" height="23.3105" style="stroke:#000000;stroke-width:2;" width="245.499" x="236.2949" y="687.877"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="227.2144" x="242.2949" y="704.4453">TCP &amp; TLS connection established</text><g class="message" data-entity-1="part3" data-entity-2="part4" id="msg15"><polygon fill="#181818" points="648.2231,738.498,658.2231,742.498,648.2231,746.498,652.2231,742.498" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="343.4136" x2="654.2231" y1="742.498" y2="742.498"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="17.1514" x="392.4636" y="737.7559">15</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="197.5581" x="413.615" y="737.7559">MQTT Connect with credentials</text></g><g class="message" data-entity-1="part4" data-entity-2="part3" id="msg16"><polygon fill="#181818" points="354.4136,767.8086,344.4136,771.8086,354.4136,775.8086,350.4136,771.8086" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="348.4136" x2="659.2231" y1="771.8086" y2="771.8086"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="17.1514" x="430.7083" y="767.0664">16</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="121.0688" x="451.8596" y="767.0664">MQTT Connect Ack</text></g><g class="message" data-entity-1="part3" data-entity-2="part4" id="msg17"><polygon fill="#181818" points="648.2231,797.1191,658.2231,801.1191,648.2231,805.1191,652.2231,801.1191" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="343.4136" x2="654.2231" y1="801.1191" y2="801.1191"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="17.1514" x="439.7981" y="796.377">17</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="102.8892" x="460.9495" y="796.377">MQTT Subscribe</text></g><g class="message" data-entity-1="part4" data-entity-2="part3" id="msg18"><polygon fill="#181818" points="354.4136,826.4297,344.4136,830.4297,354.4136,834.4297,350.4136,830.4297" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="348.4136" x2="659.2231" y1="830.4297" y2="830.4297"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="17.1514" x="426.1284" y="825.6875">18</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="130.2285" x="447.2798" y="825.6875">MQTT Subscribe Ack</text></g><polygon fill="#FEFFDD" points="313,843.4297,372,843.4297,382,869.4297,372,896.4297,313,896.4297,303,869.4297,313,843.4297" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="46.8521" x="315" y="859.998">Waiting</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="18.0845" x="315" y="875.3086">for</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="55.1611" x="315" y="890.6191">message</text><g class="message" data-entity-1="part4" data-entity-2="part3" id="msg19"><polygon fill="#181818" points="354.4136,919.6719,344.4136,923.6719,354.4136,927.6719,350.4136,923.6719" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="348.4136" x2="659.2231" y1="923.6719" y2="923.6719"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="17.1514" x="447.4946" y="918.9297">19</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="87.4961" x="468.646" y="918.9297">MQTT Publish</text></g><g class="message" data-entity-1="part3" data-entity-2="part3" id="msg20"><line style="stroke:#181818;stroke-width:1;" x1="343.4136" x2="385.4136" y1="952.9824" y2="952.9824"/><line style="stroke:#181818;stroke-width:1;" x1="385.4136" x2="385.4136" y1="952.9824" y2="965.9824"/><line style="stroke:#181818;stroke-width:1;" x1="344.4136" x2="385.4136" y1="965.9824" y2="965.9824"/><polygon fill="#181818" points="354.4136,961.9824,344.4136,965.9824,354.4136,969.9824,350.4136,965.9824" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="17.1514" x="350.4136" y="948.2402">20</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="281.6582" x="371.5649" y="948.2402">Verify the signature of downloaded firmware</text></g><g class="message" data-entity-1="part3" data-entity-2="part3" id="msg21"><line style="stroke:#181818;stroke-width:1;" x1="343.4136" x2="385.4136" y1="995.293" y2="995.293"/><line style="stroke:#181818;stroke-width:1;" x1="385.4136" x2="385.4136" y1="995.293" y2="1008.293"/><line style="stroke:#181818;stroke-width:1;" x1="344.4136" x2="385.4136" y1="1008.293" y2="1008.293"/><polygon fill="#181818" points="354.4136,1004.293,344.4136,1008.293,354.4136,1012.293,350.4136,1008.293" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="17.1514" x="350.4136" y="990.5508">21</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="261.5742" x="371.5649" y="990.5508">Write the new firmware into internal flash</text></g><g class="message" data-entity-1="part3" data-entity-2="part1" id="msg22"><polygon fill="#181818" points="67.5347,1033.6035,57.5347,1037.6035,67.5347,1041.6035,63.5347,1037.6035" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="61.5347" x2="342.4136" y1="1037.6035" y2="1037.6035"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="17.1514" x="130.3049" y="1032.8613">22</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="118.187" x="151.4563" y="1032.8613">Trigger the update</text></g><path d="M61,1050.6035 L61,1075.6035 L423,1075.6035 L423,1060.6035 L413,1050.6035 L61,1050.6035" fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><path d="M413,1050.6035 L413,1060.6035 L423,1060.6035 L413,1050.6035" fill="#FEFFDD" style="stroke:#181818;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="341.1548" x="67" y="1068.1719">The downloaded firmware will be applied in next boot</text><?plantuml-src bLF1Zfim4Btp5NEgqaCEtKCFAoLI5gsqbPfj6cZs4WaP6C2AiQazRh9_ty59DhG2RNj1WDzxy-RDc2GfX6_f2XBywL4N6Bc3r9smeWLt-RL6vqIDAoLh3GLgGXi9JqRxDkVNer7LWp4qNwQRzJtmuovBI5ZotUnZn9_pvHKIJhDjd2K_ulWnISQvgAeK7RrBhgtn7QnHE6-nX1up4BpHdeHhG99ZtT62ctYRFPu8TJdxeaiymQVFxvLcxANybe_1L91QxoZIXX2ih1k26tUBeWHg49hU26CxdojPm05VzzgHwSrB3Syx2EL7FJxlibxcFmAzGMBJya1nmiAWbnrQMRq6dEDP2-9SUx3eEWOBaaQ3R7aLfcFkkNz3RbsS2oHNxTc_n7pJOHkCu7HhjA7Gm5UqM40QR-03f5yJA8pMM0I_l4Y2MtKDXxnOH4oPBzVVqpHxiEQ0zXxw3uue4E0egO621y9RBeLoqG1wCV07VbKSfYGJdxl2oXodDDu0GQK9gsD-SMi1yY8aILtlTMNiNhVdApWbjV6XnRELy7jgbAKvQcL4oMbKqhP7tei1wyLAEk-9nkCRW9UJJFz0guM2IebhgS7W1cFnNIa8n-z2okSZ7ZXufI2_ZFHy7pIU279c_GO0?></g></svg>