blob: 4d17466c5c0ccba8df4d9e94e6d9c33791349ecf [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright 2019 NXP
This software is owned or controlled by NXP and may only be used
strictly in accordance with the applicable license terms. By expressly
accepting such terms or by downloading, installing, activating and/or
otherwise using the software, you are agreeing that you have read, and
that you agree to comply with and are bound by, such license terms. If
you do not agree to be bound by the applicable license terms, then you
may not retain, install, activate or otherwise use the software.
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>7.2. Update Package &#8212; Plug &amp; Trust MW v03.00.05 documentation</title>
<link rel="stylesheet" href="../../_static/bootstrap-sphinx.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="../../_static/graphviz.css" />
<script id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/language_data.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="7.3. SEMS Lite Agent Usage" href="sems_lite_usage.html" />
<link rel="prev" title="7.1. SEMS Lite Overview (Only for SE051)" href="sems_lite_overview.html" />
<meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'>
<meta name="apple-mobile-web-app-capable" content="yes">
<script type="text/javascript" src="../../_static/js/jquery-1.11.0.min.js "></script>
<script type="text/javascript" src="../../_static/js/jquery-fix.js "></script>
<script type="text/javascript" src="../../_static/bootstrap-3.3.7/js/bootstrap.min.js "></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js "></script>
</head><body>
<div id="navbar" class="navbar navbar-inverse navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<!-- .btn-navbar is used as the toggle for collapsed navbar content -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../../toc.html"><span><img src="../../_static/NXP_logo_JPG.jpg"></span>
MW</a>
<span class="navbar-text navbar-version pull-left"><b>v03.00.05</b></span>
</div>
<div class="collapse navbar-collapse nav-collapse">
<ul class="nav navbar-nav">
<li class="dropdown globaltoc-container">
<a role="button"
id="dLabelGlobalToc"
data-toggle="dropdown"
data-target="#"
href="../../toc.html">TOC <b class="caret"></b></a>
<ul class="dropdown-menu globaltoc"
role="menu"
aria-labelledby="dLabelGlobalToc"><ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">1. NXP Plug &amp; Trust Middleware</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../organization-of-documentation.html">1.1. Organization of Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../folder-structure.html">1.2. Folder Structure</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sw-prerequisites.html">1.3. List of Platform Prerequisites</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../changes/index.html">2. Changes</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../changes/pending.html">2.1. Pending Refactoring items</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/pending.html#known-limitations">2.2. Known limitations</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v03_00_05.html">2.3. Release <code class="docutils literal notranslate"><span class="pre">v03.00.05</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v03_00_04.html">2.4. Release <code class="docutils literal notranslate"><span class="pre">v03.00.04</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v03_00_03.html">2.5. Release <code class="docutils literal notranslate"><span class="pre">v03.00.03</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v03_00_02.html">2.6. Release <code class="docutils literal notranslate"><span class="pre">v03.00.02</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_16_01.html">2.7. Release <code class="docutils literal notranslate"><span class="pre">v02.16.01</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_16_00.html">2.8. Release <code class="docutils literal notranslate"><span class="pre">v02.16.00</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_15_00.html">2.9. Release <code class="docutils literal notranslate"><span class="pre">v02.15.00</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_14_00.html">2.10. Release <code class="docutils literal notranslate"><span class="pre">v02.14.00</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_12_00.html">2.11. Release <code class="docutils literal notranslate"><span class="pre">v02.12.05</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_12_00.html#release-v02-12-04">2.12. Release <code class="docutils literal notranslate"><span class="pre">v02.12.04</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_12_00.html#release-v02-12-03">2.13. Release <code class="docutils literal notranslate"><span class="pre">v02.12.03</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_12_00.html#release-v02-12-02">2.14. Release <code class="docutils literal notranslate"><span class="pre">v02.12.02</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_12_00.html#release-v02-12-01">2.15. Release <code class="docutils literal notranslate"><span class="pre">v02.12.01</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_12_00.html#release-v02-12-00">2.16. Release <code class="docutils literal notranslate"><span class="pre">v02.12.00</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_11_03.html">2.17. Release <code class="docutils literal notranslate"><span class="pre">v02.11.03</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_11_01.html">2.18. Internal Release <code class="docutils literal notranslate"><span class="pre">v02.11.01</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_11_00.html">2.19. Release <code class="docutils literal notranslate"><span class="pre">v02.11.00</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_10_00.html">2.20. Release <code class="docutils literal notranslate"><span class="pre">v02.10.00</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_09_00.html">2.21. Release <code class="docutils literal notranslate"><span class="pre">v02.09.00</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_07_00.html">2.22. Release <code class="docutils literal notranslate"><span class="pre">v02.07.00</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_06_00.html">2.23. Release <code class="docutils literal notranslate"><span class="pre">v02.06.00</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_05_00_to_v02_03_00.html">2.24. Release <code class="docutils literal notranslate"><span class="pre">v02.05.00</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_05_00_to_v02_03_00.html#release-v02-04-00">2.25. Release <code class="docutils literal notranslate"><span class="pre">v02.04.00</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../changes/v02_05_00_to_v02_03_00.html#release-02-03-00">2.26. Release <code class="docutils literal notranslate"><span class="pre">02.03.00</span></code></a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../stack/index.html">3. Plug &amp; Trust MW Stack</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../stack/features.html">3.1. Features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../stack/features.html#plug-trust-mw-block-diagram">3.2. Plug &amp; Trust MW : Block Diagram</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sss-apis.html">3.3. SSS APIs</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../stack/se05xfeatures.html">3.4. SSS APIs: SE051 vs SE050</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../stack/param_checks.html">3.5. Parameter Check &amp; Conventions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../stack/i2cm.html">3.6. I2CM / Secure Sensor</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../stack/logging.html">3.7. Logging</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../stack/feature-file.html">3.8. Feature File - <code class="docutils literal notranslate"><span class="pre">fsl_sss_ftr.h</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="../../stack/platf-scp-from-fs.html">3.9. Using Platform SCP Keys from File System</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../stack/auth/auth-objects.html">3.10. Auth Objects</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../stack/auth/auth-objects-userid.html">3.11. Auth Objects : UserID</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../stack/auth/auth-objects-aeskey.html">3.12. Auth Objects : AESKey</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../stack/auth/auth-objects-eckey.html">3.13. Auth Objects : ECKey</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../stack/key-id-range.html">3.14. Key Id Range and Purpose</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../stack/key-id-range.html#authentication-keys">3.15. Authentication Keys</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../stack/key-id-range.html#trust-provisioned-keyids">3.16. Trust provisioned KeyIDs</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sss/ex/doc/puf-scp03.html">3.17. SCP03 with PUF</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sss/doc/sss_heap_management.html">3.18. SSS Heap Management</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../building/index.html">4. Building / Compiling</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../building/windows.html">4.1. Windows Build</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../building/frdm-k64f-sdk.html">4.2. Import MCUXPresso projects from SDK</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../building/frdm-k64f-cmake.html">4.3. Freedom K64F Build (CMake - Advanced)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../building/imx6.html">4.4. i.MX Linux Build</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../building/rpi3.html">4.5. Raspberry Pi Build</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../building/cmake.html">4.6. CMake</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../scripts/cmake_options.html">4.7. CMake Options</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../demos/index.html">5. Demo and Examples</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../demos/index.html#demo-list">5.1. Demo List</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../demos/index.html#sss-api-examples">5.2. SSS API Examples</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../demos/index.html#cloud-demos">5.3. Cloud Demos</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../demos/index.html#linux-specific-demos">5.4. Linux Specific Demos</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../demos/index.html#opc-ua-example">5.5. OPC-UA Example</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../demos/index.html#arm-psa-example">5.6. ARM PSA Example</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../demos/index.html#se05x-examples">5.7. SE05X Examples</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../demos/index.html#openssl-examples">5.8. OpenSSL Examples</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../demos/index.html#tests-for-user-crypto">5.9. Tests for User Crypto</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../demos/index.html#nxpnfcrdlib-examples">5.10. NXPNFCRDLIB examples</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../demos/index.html#ease-of-use-examples">5.11. Ease-of-Use examples</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../demos/index.html#semslite-examples">5.12. Semslite examples</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../demos/index.html#puf-examples">5.13. PUF examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../edgelock2go-agent.html">6. NXP EdgeLock 2GO Agent</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../nxp_iot_agent/doc/introduction.html">6.1. Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../nxp_iot_agent/doc/introduction.html#building-and-running-the-edgelock-2go-agent">6.2. Building and running the EdgeLock 2GO agent</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../nxp_iot_agent/doc/introduction.html#datastore-keystore">6.3. Datastore / Keystore</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../nxp_iot_agent/doc/introduction.html#connection-to-the-edgelock-2go-cloud-service">6.4. Connection to the EdgeLock 2GO cloud service</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../nxp_iot_agent/doc/introduction.html#claim-codes">6.5. Claim Codes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../nxp_iot_agent/doc/edgelock2go_agent_apis.html">6.6. API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../nxp_iot_agent/doc/readme_usage_examples.html">6.7. Usage Examples</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">7. SEMS Lite Agent</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="sems_lite_overview.html">7.1. SEMS Lite Overview (Only for SE051)</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">7.2. Update Package</a></li>
<li class="toctree-l2"><a class="reference internal" href="sems_lite_usage.html">7.3. SEMS Lite Agent Usage</a></li>
<li class="toctree-l2"><a class="reference internal" href="sems_lite_mgmt_api.html">7.4. SEMS Lite management APIs</a></li>
<li class="toctree-l2"><a class="reference internal" href="sems_lite_process.html">7.5. SEMS Lite Agent Package Load Process</a></li>
<li class="toctree-l2"><a class="reference internal" href="sems_lite_api.html">7.6. APIs</a></li>
<li class="toctree-l2"><a class="reference internal" href="sems_lite_known_issue.html">7.7. SEMS Lite Known Issue</a></li>
<li class="toctree-l2"><a class="reference internal" href="demo_update.html">7.8. SEMS Lite DEMOs</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">8. Plugins / Add-ins</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../sss/plugin/openssl/scripts/readme.html">8.1. Introduction on OpenSSL engine</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sss/plugin/mbedtls/scripts/readme.html">8.2. Introduction on mbedTLS ALT Implementation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sss/plugin/psa/Readme.html">8.3. Platform Security Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../plugins/akm.html">8.4. Android Key master</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../sss/plugin/open62541/readme.html">8.5. Introduction on Open62541 (OPC UA stack)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../plugins/wifiEAP/wifiEAP.html">8.6. WiFi EAP Demo with Raspberry Pi3</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../plugins/pkcs11.html">8.7. PKCS#11 Standalone Library</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../cli-tool.html">9. CLI Tool</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../pycli/doc/introduction.html">9.1. Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../pycli/doc/block-diagram.html">9.2. Block Diagram</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../pycli/doc/pre-steps.html">9.3. Steps needed before running <code class="docutils literal notranslate"><span class="pre">ssscli</span></code> tool</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../pycli/doc/running.html">9.4. Running the <code class="docutils literal notranslate"><span class="pre">ssscli</span></code> tool - Windows</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../pycli/Provisioning/readme.html">9.5. CLI Provisioning</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../pycli/doc/readme_usage_examples.html">9.6. Usage Examples</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../pycli/doc/cli_commands_list.html">9.7. List of <code class="docutils literal notranslate"><span class="pre">ssscli</span></code> commands</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../pycli/doc/cli_data_format.html">9.8. CLI Data formats</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../pycli/doc/cli_object_policy.html">9.9. Object Policies Through ssscli</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../appendix/upload_se05x_using_pycli.html">9.10. Upload keys and certificates to SE05X using ssscli tool</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../a71ch.html">10. A71CH</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../a71ch/a71ch_sss.html">10.1. A71CH and SSS API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../a71ch/a71ch_miscellaneous.html">10.2. Miscellaneous</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../a71ch/a71ch_legacy_host_api.html">10.3. A71CH Legacy API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../a71ch/a71ch_legacy_hlse_api.html">10.4. A71CH Legacy HLSE (Generic) API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../a71ch/a71ch_configure_tool.html">10.5. A71CH Legacy Configure Tool</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../appendix.html">11. Appendix</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../appendix/glossary.html">11.1. Glossary</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../appendix/vcom.html">11.2. APDU Commands over VCOM</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../appendix/vs2019-setup.html">11.3. Visual Studio 2019 Setup</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../appendix/ide_mcux.html">11.4. Setting up MCUXPresso IDE</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../dev-platforms.html">11.5. Development Platforms</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../appendix/se_uid.html">11.6. How to get SE Platform Information and UID</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../appendix/version_info.html">11.7. Version Information</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../demos/Certificate_Chains/Readme.html">11.8. Certificate Chains</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../appendix/rjct_server.html">11.9. JRCP_v1 Server</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../appendix/platfscp.html">11.10. Using own Platform SCP03 Keys</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../appendix/apdu_write_to_buffer.html">11.11. Write APDU to buffer</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../api/api_list.html">11.12. Plug &amp; Trust MW APIs</a></li>
</ul>
</li>
</ul>
</ul>
</li>
<li class="dropdown">
<a role="button"
id="dLabelLocalToc"
data-toggle="dropdown"
data-target="#"
href="#">Page <b class="caret"></b></a>
<ul class="dropdown-menu localtoc"
role="menu"
aria-labelledby="dLabelLocalToc"><ul>
<li><a class="reference internal" href="#">7.2. Update Package</a><ul>
<li><a class="reference internal" href="#package-meta-data">7.2.1. Package Meta Data</a></li>
<li><a class="reference internal" href="#multicastcommands-in-protocol-buffer-format">7.2.2. MulticastCommands In Protocol Buffer Format</a></li>
<li><a class="reference internal" href="#generator-tools">7.2.3. Generator Tools</a><ul>
<li><a class="reference internal" href="#json-generator">7.2.3.1. JSON Generator</a></li>
<li><a class="reference internal" href="#sems-lite-generator">7.2.3.2. SEMS Lite Generator</a></li>
<li><a class="reference internal" href="#generator-tool-version-compatibility">7.2.3.3. Generator Tool Version Compatibility</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</ul>
</li>
<li>
<a href="sems_lite_overview.html" title="Previous Chapter: 7.1. SEMS Lite Overview (Only for SE051)"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">&laquo; 7.1. SEMS Lit...</span>
</a>
</li>
<li>
<a href="sems_lite_usage.html" title="Next Chapter: 7.3. SEMS Lite Agent Usage"><span class="glyphicon glyphicon-chevron-right visible-sm"></span><span class="hidden-sm hidden-tablet">7.3. SEMS Lit... &raquo;</span>
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-3">
<div id="sidebar" class="bs-sidenav" role="complementary">
<div class="sidebar-header">
<h3>Plug &amp; Trust MW</h3>
</div>
<div class="row">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">1. NXP Plug &amp; Trust Middleware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../changes/index.html">2. Changes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../stack/index.html">3. Plug &amp; Trust MW Stack</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../building/index.html">4. Building / Compiling</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../demos/index.html">5. Demo and Examples</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../edgelock2go-agent.html">6. NXP EdgeLock 2GO Agent</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">7. SEMS Lite Agent</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="sems_lite_overview.html">7.1. SEMS Lite Overview (Only for SE051)</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">7.2. Update Package</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#package-meta-data">7.2.1. Package Meta Data</a></li>
<li class="toctree-l3"><a class="reference internal" href="#multicastcommands-in-protocol-buffer-format">7.2.2. MulticastCommands In Protocol Buffer Format</a></li>
<li class="toctree-l3"><a class="reference internal" href="#generator-tools">7.2.3. Generator Tools</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="sems_lite_usage.html">7.3. SEMS Lite Agent Usage</a></li>
<li class="toctree-l2"><a class="reference internal" href="sems_lite_mgmt_api.html">7.4. SEMS Lite management APIs</a></li>
<li class="toctree-l2"><a class="reference internal" href="sems_lite_process.html">7.5. SEMS Lite Agent Package Load Process</a></li>
<li class="toctree-l2"><a class="reference internal" href="sems_lite_api.html">7.6. APIs</a></li>
<li class="toctree-l2"><a class="reference internal" href="sems_lite_known_issue.html">7.7. SEMS Lite Known Issue</a></li>
<li class="toctree-l2"><a class="reference internal" href="demo_update.html">7.8. SEMS Lite DEMOs</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../plugins/index.html">8. Plugins / Add-ins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../cli-tool.html">9. CLI Tool</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../a71ch.html">10. A71CH</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../appendix.html">11. Appendix</a></li>
</ul>
</div>
<div class="row">
<form class="form" action="../../search.html" method="get">
<div class="form-group">
<label for="Search">Search:</label>
<input type="text" name="q" class="form-control" placeholder="Search" />
</div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div>
<div class="body col-md-9 content" role="main">
<div class="section" id="update-package">
<h1><span class="section-number">7.2. </span>Update Package<a class="headerlink" href="#update-package" title="Permalink to this headline">ΒΆ</a></h1>
<p>SEMS Lite agent gets an <em>update package</em> from the <em>update manager</em>. The upgrade package contains package meta data header and set of APDUs(MulticastCommands) to be sent to the SE for update. It may optionally also contain host control commands (e.g. Reset the secure element).</p>
<p>Format of the <em>update package</em>:</p>
<img alt="../../_images/Package.jpg" src="../../_images/Package.jpg" />
<p>NXP provides customer package meta data and Multicast commands in JSON file. NXP also provides generator tool to turn the JSON file to binary file and .c/.h files. Customer can decide which one to be used by <em>update manager</em> according to their platform. <em>Update manager</em> should create <em>update package</em> from these files. This chapter has provided examples for the use of generator. It also provides links to the demos which will use the generated files to create <em>update package</em>.</p>
<div class="section" id="package-meta-data">
<h2><span class="section-number">7.2.1. </span>Package Meta Data<a class="headerlink" href="#package-meta-data" title="Permalink to this headline">ΒΆ</a></h2>
<p>Package meta data includes information such as version and memory requirement. These information will help SEMS Lite agent to preprocess package before loading APDU commands to SE.</p>
<ul class="simple">
<li><p>MulticastPackageFormatVersion: Version information of this json Format for MulticastPackages.</p></li>
<li><p>TargetEntityID: Entity ID, 16bytes long Binary Coded Decimal, of the target device where this MulticastPackage is intended to be executed on. It is an identifier of the key-set of the Multicast Applet Loader.</p></li>
<li><p>Target12nc: Target 12nc is a 12 digit numerical code identifying the target device where this MulticastPackage is intended to be executed on, as known to customers and used on EdgeLock2Go to identify device types.</p></li>
<li><p>requiredFreeBytesNonVolatileMemory: Minimum required free Non Volatile memory in bytes that have to be available on the target device before execution of this MulticastPackage.</p></li>
<li><p>requiredFreeBytesTransientMemory: Minimum required free transient (RAM) memory in bytes that have to be available on the target device before execution of this MulticastPackage.</p></li>
<li><p>MulticastPackageName: Giving a descriptive name to the complete Multicast Package.</p></li>
<li><p>MulticastPackageVersion: Version information of this MulticastPackage, describing the sum version over all contained content.</p></li>
<li><p>SubComponentMetaData: A list of subcomponents of this MulticastPackage, designating all Executable Load Files (ELFs) Contained. It usually contains one entry, but can have multiple in the case multiple dependent ELFs get modified. This list can be empty, e.g. for a KeyRotation or deletion of content.</p></li>
<li><p>SubComponentMetaData name: A human readable name for this subcomponent.</p></li>
<li><p>SubComponentMetaData aid: The Application Identifier (AID) of the Executable Load File (ELF) which makes up the content of this subcomponent. This is stored as string to have it formatted in upper-case hexadecimal and therefore recognizable form.</p></li>
<li><p>SubComponentMetaData version: Version information of this subcomponent.</p></li>
<li><p>SubComponentMetaData minimumPreviousVersion: Minimum version number of this subcomponent as installed on the secure element before this script is executed. If this field is omitted there is no minimum version requirement, e.g. initial Installation of an applet.</p></li>
<li><p>SignatureOverCommands: The signature over the multicast commands in an machine readable form. So it does not have to be parsed form the script commands. String encoding (upper-case hexadecimal) is chosen here, as many json parsers can not handle such large integer values.</p></li>
<li><p>MulticastCommands: The complete Multicast Applet Loader Script (certificate, signature, encrypted and signed commands) in ls-cgt format, encoded in base64.</p></li>
</ul>
</div>
<div class="section" id="multicastcommands-in-protocol-buffer-format">
<h2><span class="section-number">7.2.2. </span>MulticastCommands In Protocol Buffer Format<a class="headerlink" href="#multicastcommands-in-protocol-buffer-format" title="Permalink to this headline">ΒΆ</a></h2>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Advanced information</p>
<p>The information below is for advanced users and
kept here for the sake of completeness of information.
This section can be skipped.</p>
</div>
<p>Technically, the APDUS(MulticastCommands) in <em>update package</em> is encoded in Protocol Buffers format
(<a class="reference external" href="https://developers.google.com/protocol-buffers/">https://developers.google.com/protocol-buffers/</a>) as defined below</p>
<div class="highlight-protobuf notranslate"><div class="highlight"><pre><span></span><span class="cm">/* Full request from cloud/host to the agent */</span>
<span class="kd">message</span> <span class="nc">Requests</span> <span class="p">{</span>
<span class="cm">/* An array of RequestPayload */</span>
<span class="k">repeated</span> <span class="n">RequestPayload</span> <span class="na">payload</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="cm">/* Consolidated response from the agent to the cloud/host */</span>
<span class="kd">message</span> <span class="nc">Responses</span> <span class="p">{</span>
<span class="cm">/* An array of ResponsePayload */</span>
<span class="k">repeated</span> <span class="n">ResponsePayload</span> <span class="na">responses</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
</div>
<div class="highlight-protobuf notranslate"><div class="highlight"><pre><span></span><span class="cm">/* The request payload would be either of these */</span>
<span class="kd">message</span> <span class="nc">RequestPayload</span> <span class="p">{</span>
<span class="k">oneof</span> <span class="n">payload</span> <span class="p">{</span>
<span class="cm">/* Hello from EdgeLock 2GO cloud service to the EdgeLock 2GO agent.</span>
<span class="cm"> *</span>
<span class="cm"> * Used only by EdgeLock 2GO agent. */</span>
<span class="n">AgentHelloRequest</span> <span class="na">hello</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="cm">/** Good Bye from EdgeLock 2GO cloud service to the EdgeLock 2GO agent.</span>
<span class="cm"> *</span>
<span class="cm"> * Used only by EdgeLock 2GO agent. */</span>
<span class="n">AgentGoodbyeRequest</span> <span class="na">goodbye</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
<span class="n">AgentCrlRequest</span> <span class="na">crl</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<span class="cm">/* An APDU to a SE.</span>
<span class="cm"> *</span>
<span class="cm"> * Used both by EdgeLock 2GO agent and SEMS Lite agent. */</span>
<span class="n">ApduRequest</span> <span class="na">apdu</span> <span class="o">=</span> <span class="mi">20</span><span class="p">;</span>
<span class="cm">/* Message to read and write configuration data.</span>
<span class="cm"> *</span>
<span class="cm"> * Used only by EdgeLock 2GO agent. */</span>
<span class="n">DatastoreRequest</span> <span class="na">datastore</span> <span class="o">=</span> <span class="mi">30</span><span class="p">;</span>
<span class="cm">/* Message to contol the host software on the device.</span>
<span class="cm"> *</span>
<span class="cm"> * Not implemented. */</span>
<span class="n">RpcRequest</span> <span class="k">rpc</span> <span class="o">=</span> <span class="mi">40</span><span class="p">;</span>
<span class="cm">/*</span>
<span class="cm"> *</span>
<span class="cm"> * Used only by SEMS Lite Agent */</span>
<span class="n">HostControlCmdRequest</span> <span class="na">hostCmd</span> <span class="o">=</span> <span class="mi">50</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<div class="highlight-protobuf notranslate"><div class="highlight"><pre><span></span><span class="kd">message</span> <span class="nc">ApduRequest</span> <span class="p">{</span>
<span class="cm">/* Array of bytes to be sent to the SE */</span>
<span class="k">optional</span> <span class="kt">bytes</span> <span class="kd">message</span> <span class="o">=</span> <span class="mi">100</span><span class="p">;</span>
<span class="cm">/* What response is expected from the SE for this APDU?</span>
<span class="cm"> *</span>
<span class="cm"> * If this field is skipped from protobuf, then,</span>
<span class="cm"> * only 0x9000 is expected from the SE</span>
<span class="cm"> *</span>
<span class="cm"> * There are potentially multiple distinct values</span>
<span class="cm"> * are expected the from the SE, then this</span>
<span class="cm"> * can be an array of those values.</span>
<span class="cm"> *</span>
<span class="cm"> * e.g. expectation: [ 0x9000, 0x6A82 ]</span>
<span class="cm"> *</span>
<span class="cm"> * For complex schems where a every big range/mask</span>
<span class="cm"> * is expected, e.g. 6AXX, 6DXX then the upper</span>
<span class="cm"> * 16 bits are treated as mask.</span>
<span class="cm"> *</span>
<span class="cm"> * e.g. expectation: [ 0x00FF6A00, 0x00FF6D00 ]</span>
<span class="cm"> *</span>
<span class="cm"> * This field is unused by EdgeLock 2GO cloud service.</span>
<span class="cm"> */</span>
<span class="k">repeated</span> <span class="kt">uint32</span> <span class="na">expectation</span> <span class="o">=</span> <span class="mi">101</span><span class="p">;</span>
<span class="p">}</span>
<span class="cm">/* Response from the SE to host */</span>
<span class="kd">message</span> <span class="nc">ApduResponse</span> <span class="p">{</span>
<span class="cm">/* Byte array */</span>
<span class="k">optional</span> <span class="kt">bytes</span> <span class="kd">message</span> <span class="o">=</span> <span class="mi">100</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="generator-tools">
<h2><span class="section-number">7.2.3. </span>Generator Tools<a class="headerlink" href="#generator-tools" title="Permalink to this headline">ΒΆ</a></h2>
<p>NXP provides 2 generator tools in <code class="docutils literal notranslate"><span class="pre">semslit/tools/sems-lite-generator</span></code> directory:</p>
<ul class="simple">
<li><p>JSON Generator:</p></li>
</ul>
<p>A tool to convert the output of CGT tool to a JSON format output</p>
<ul class="simple">
<li><p>SEMS Lite generator:</p></li>
</ul>
<p>A tool to convert JSON output to binary file and .c/.h files which will be used by <em>update manager</em></p>
<img alt="../../_images/Package_generator.jpg" src="../../_images/Package_generator.jpg" />
<div class="section" id="json-generator">
<h3><span class="section-number">7.2.3.1. </span>JSON Generator<a class="headerlink" href="#json-generator" title="Permalink to this headline">ΒΆ</a></h3>
<p>Usage: MulticastPackageCli.py [-h] –config_file [CONFIG_FILE] –script_file [SCRIPT_FILE] –out [OUT]</p>
<p>Arguments:</p>
<ul class="simple">
<li><dl class="simple">
<dt>–config_file [CONFIG_FILE]</dt><dd><p>Config File for MulticastPackage generation. It should follow the format defined in <code class="docutils literal notranslate"><span class="pre">semslit/tools/sems-lite-generator/schema/MulticastPackage.jsonschema</span></code>. NXP provides an example in <code class="docutils literal notranslate"><span class="pre">semslit/tools/sems-lite-generator/config/ExampleConfig.json</span></code></p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>–script_file [SCRIPT_FILE]</dt><dd><p>Encrypted and Signed script as output by the ls-cgt tool.</p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>–out [OUT]</dt><dd><p>Output MulticastPackage json file.</p>
</dd>
</dl>
</li>
</ul>
<p>Example:</p>
<blockquote>
<div><p>python ./MulticastPackageCli.py –config_file .config.json –script_file .encrypted.txt –out .Upgrade_IoTApplet.json</p>
</div></blockquote>
</div>
<div class="section" id="sems-lite-generator">
<span id="id1"></span><h3><span class="section-number">7.2.3.2. </span>SEMS Lite Generator<a class="headerlink" href="#sems-lite-generator" title="Permalink to this headline">ΒΆ</a></h3>
<p>Usage: generate.py [-h] [-i INPUT_JSON] [-o OUTPUT_PATH] [-n NAME] [-p PROTOC_PATH]</p>
<p>Process sems-lite-generator arguments</p>
<dl>
<dt>Arguments:</dt><dd><dl class="option-list">
<dt><kbd><span class="option">-h</span>, <span class="option">--help</span></kbd></dt>
<dd><p>show this help message and exit</p>
</dd>
<dt><kbd><span class="option">-i</span>, <span class="option">--input_json <var>INPUT_JSON</var></span></kbd></dt>
<dd><p>input json file</p>
</dd>
<dt><kbd><span class="option">-o</span>, <span class="option">--output_path <var>OUTPUT_PATH</var></span></kbd></dt>
<dd><p>output folder path</p>
</dd>
<dt><kbd><span class="option">-n</span>, <span class="option">--name <var>NAME</var></span></kbd></dt>
<dd><p>stem name of output files. By default, it would use the same name as input json file.</p>
</dd>
<dt><kbd><span class="option">-p</span>, <span class="option">--protoc_path <var>PROTOC_PATH</var></span></kbd></dt>
<dd><p>protoc file path. Use tools/mw_onverter/protoc.exe by default</p>
</dd>
</dl>
</dd>
</dl>
<p>Example:</p>
<blockquote>
<div><p>python ./generate.py -i ./Upgrade_NXP-IoTApplet-6.0.json -o ./</p>
</div></blockquote>
<p>The generated files:</p>
<ul class="simple">
<li><p>Upgrade_NXP-IoTApplet-6.0.bin: Binary file. It can be used for platforms that have a file system (Windows, Linux, etc). It is encoded in TLV as following:</p></li>
</ul>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="mh">0x21</span> <span class="n">Len</span> <span class="n">multicastPackage</span>
<span class="o">|-</span> <span class="mh">0x22</span> <span class="n">Len</span> <span class="n">Major</span> <span class="n">Minor</span> <span class="n">MulticastPackageFormatVersion</span>
<span class="o">|-</span> <span class="mh">0x23</span> <span class="n">Len</span> <span class="n">Binary</span> <span class="n">TargetEntityID</span>
<span class="o">|-</span> <span class="mh">0x2f</span> <span class="n">Len</span> <span class="n">Binary</span> <span class="n">Target12nc</span>
<span class="o">|-</span> <span class="mh">0x24</span> <span class="n">Len</span> <span class="n">u32</span><span class="o">/</span><span class="n">u16</span> <span class="n">requiredFreeBytesNonVolatileMemory</span>
<span class="o">|-</span> <span class="mh">0x25</span> <span class="n">Len</span> <span class="n">u32</span><span class="o">/</span><span class="n">u16</span> <span class="n">requiredFreeBytesTransientMemory</span>
<span class="o">|-</span> <span class="mh">0x26</span> <span class="n">Len</span> <span class="n">String</span> <span class="n">MulticastPackageName</span>
<span class="o">|-</span> <span class="mh">0x27</span> <span class="n">Len</span> <span class="n">Major</span> <span class="n">Minor</span> <span class="n">MulticastPackageVersion</span>
<span class="o">|-</span> <span class="mh">0x28</span> <span class="n">Len</span> <span class="n">SubComponentMetaData</span>
<span class="o">|-</span> <span class="o">|-</span> <span class="mh">0x2B</span> <span class="n">Len</span> <span class="n">String</span> <span class="n">SubComponentMetaData1</span><span class="p">.</span><span class="n">name</span>
<span class="o">|-</span> <span class="o">|-</span> <span class="mh">0x2C</span> <span class="n">Len</span> <span class="n">Binary</span> <span class="n">SubComponentMetaData1</span><span class="p">.</span><span class="n">aid</span>
<span class="o">|-</span> <span class="o">|-</span> <span class="mh">0x2D</span> <span class="n">Len</span> <span class="n">Major</span> <span class="n">Minor</span> <span class="n">SubComponentMetaData1</span><span class="p">.</span><span class="n">version</span>
<span class="o">|-</span> <span class="o">|-</span> <span class="mh">0x2E</span> <span class="n">Len</span> <span class="n">Major</span> <span class="n">Minor</span> <span class="n">SubComponentMetaData1</span><span class="p">.</span><span class="n">minimumPreviousVersion</span>
<span class="o">|-</span> <span class="o">|-</span> <span class="mh">0x2B</span> <span class="n">Len</span> <span class="n">String</span> <span class="n">SubComponentMetaData2</span><span class="p">.</span><span class="n">name</span>
<span class="o">|-</span> <span class="o">|-</span> <span class="mh">0x2C</span> <span class="n">Len</span> <span class="n">Binary</span> <span class="n">SubComponentMetaData2</span><span class="p">.</span><span class="n">aid</span>
<span class="o">|-</span> <span class="o">|-</span> <span class="mh">0x2D</span> <span class="n">Len</span> <span class="n">Major</span> <span class="n">Minor</span> <span class="n">SubComponentMetaData2</span><span class="p">.</span><span class="n">version</span>
<span class="o">|-</span> <span class="o">|-</span> <span class="mh">0x2E</span> <span class="n">Len</span> <span class="n">Major</span> <span class="n">Minor</span> <span class="n">SubComponentMetaData2</span><span class="p">.</span><span class="n">minimumPreviousVersion</span>
<span class="p">...</span>
<span class="o">|-</span> <span class="o">|-</span> <span class="mh">0x2B</span> <span class="n">Len</span> <span class="n">String</span> <span class="n">SubComponentMetaDataN</span><span class="p">.</span><span class="n">name</span>
<span class="o">|-</span> <span class="o">|-</span> <span class="mh">0x2C</span> <span class="n">Len</span> <span class="n">Binary</span> <span class="n">SubComponentMetaDataN</span><span class="p">.</span><span class="n">aid</span>
<span class="o">|-</span> <span class="o">|-</span> <span class="mh">0x2D</span> <span class="n">Len</span> <span class="n">Major</span> <span class="n">Minor</span> <span class="n">SubComponentMetaDataN</span><span class="p">.</span><span class="n">version</span>
<span class="o">|-</span> <span class="o">|-</span> <span class="mh">0x2E</span> <span class="n">Len</span> <span class="n">Major</span> <span class="n">Minor</span> <span class="n">SubComponentMetaDataN</span><span class="p">.</span><span class="n">minimumPreviousVersion</span>
<span class="o">|-</span> <span class="mh">0x29</span> <span class="n">Len</span> <span class="n">Binary</span> <span class="n">SignatureOverCommands</span>
<span class="o">|-</span> <span class="mh">0x2A</span> <span class="n">Len</span> <span class="n">Binary</span> <span class="n">MulticastCommands</span>
</pre></div>
</div>
<ul class="simple">
<li><p>Upgrade_NXP-IoTApplet-6.0.c and .h: These 2 files instantiate <em>update package</em>. They can be integrated into customer tools and can be used for all platforms.</p></li>
</ul>
<p>We provide examples for how to use the generated files: <a class="reference internal" href="../../demos/demo-list.html#demo-list-sems-lite"><span class="std std-numref">Section 5.1.1.12</span></a> <a class="reference internal" href="../../demos/demo-list.html#demo-list-sems-lite"><span class="std std-ref">SEMS Demos</span></a></p>
</div>
<div class="section" id="generator-tool-version-compatibility">
<h3><span class="section-number">7.2.3.3. </span>Generator Tool Version Compatibility<a class="headerlink" href="#generator-tool-version-compatibility" title="Permalink to this headline">ΒΆ</a></h3>
<p>NXP provides both SEMS Lite generate tool and JSON format in semslite\tools folder. Generate tool should only work with the JSON schema in the same release. For example, in SEMS Lite 2.0.0 (Refer to semslite\version_info.txt) the JSON package format version is 1.2. Generate tool should only use this JSON schema.</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<tbody>
<tr class="row-odd"><td></td>
<td><p><code class="docutils literal notranslate"><span class="pre">JSON</span> <span class="pre">package</span> <span class="pre">format</span> <span class="pre">1.1</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">JSON</span> <span class="pre">package</span> <span class="pre">format</span> <span class="pre">1.2</span></code></p></td>
</tr>
<tr class="row-even"><td><p>SEMS Lite 1.0.0</p></td>
<td><p>Supported</p></td>
<td><p>Not supported</p></td>
</tr>
<tr class="row-odd"><td><p>SEMS Lite 2.0.0</p></td>
<td><p>Not supported</p></td>
<td><p>Supported</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="container">
<p class="pull-right">
<a href="#">Back to top</a>
</p>
<p>
&copy; Copyright 2018-2020, NXP.<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.4.1.<br/>
</p>
</div>
</footer>
</body>
</html>