blob: dad8826d618c1a5b5f87ea76c0507438f6f1cd44 [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>3.3.3. Key Store &#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="3.3.4. Key Object" href="apis-sss_key_object.html" />
<link rel="prev" title="3.3.2. Session" href="apis-sss_session.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 current"><a class="reference internal" href="../../stack/index.html">3. Plug &amp; Trust MW Stack</a><ul class="current">
<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 current"><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="../ex/doc/puf-scp03.html">3.17. SCP03 with PUF</a></li>
<li class="toctree-l2"><a class="reference internal" href="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"><a class="reference internal" href="../../semslite/doc/index.html">7. SEMS Lite Agent</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../semslite/doc/sems_lite_overview.html">7.1. SEMS Lite Overview (Only for SE051)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../semslite/doc/sems_lite_package.html">7.2. Update Package</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../semslite/doc/sems_lite_usage.html">7.3. SEMS Lite Agent Usage</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../semslite/doc/sems_lite_mgmt_api.html">7.4. SEMS Lite management APIs</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../semslite/doc/sems_lite_process.html">7.5. SEMS Lite Agent Package Load Process</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../semslite/doc/sems_lite_api.html">7.6. APIs</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../semslite/doc/sems_lite_known_issue.html">7.7. SEMS Lite Known Issue</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../semslite/doc/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="../plugin/openssl/scripts/readme.html">8.1. Introduction on OpenSSL engine</a></li>
<li class="toctree-l2"><a class="reference internal" href="../plugin/mbedtls/scripts/readme.html">8.2. Introduction on mbedTLS ALT Implementation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../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="../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="#">3.3.3. Key Store</a><ul>
<li><a class="reference internal" href="#apis">3.3.3.1. APIs</a></li>
<li><a class="reference internal" href="#key-format">3.3.3.2. Key Format</a><ul>
<li><a class="reference internal" href="#ec-key-pair">3.3.3.2.1. EC Key pair</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</ul>
</li>
<li>
<a href="apis-sss_session.html" title="Previous Chapter: 3.3.2. Session"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">&laquo; 3.3.2. Session</span>
</a>
</li>
<li>
<a href="apis-sss_key_object.html" title="Next Chapter: 3.3.4. Key Object"><span class="glyphicon glyphicon-chevron-right visible-sm"></span><span class="hidden-sm hidden-tablet">3.3.4. Key Object &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 current"><a class="reference internal" href="../../stack/index.html">3. Plug &amp; Trust MW Stack</a><ul class="current">
<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 current"><a class="reference internal" href="../../sss-apis.html">3.3. SSS APIs</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="introduction.html">3.3.1. SSS: Introduction</a></li>
<li class="toctree-l3"><a class="reference internal" href="apis-sss_session.html">3.3.2. Session</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">3.3.3. Key Store</a></li>
<li class="toctree-l3"><a class="reference internal" href="apis-sss_key_object.html">3.3.4. Key Object</a></li>
<li class="toctree-l3"><a class="reference internal" href="apis-sss_asymmetric.html">3.3.5. Asymmetric</a></li>
<li class="toctree-l3"><a class="reference internal" href="apis-sss_policy.html">3.3.6. Policies</a></li>
<li class="toctree-l3"><a class="reference internal" href="../ex/doc/ex-boot.html">3.3.7. Example Boot-Up</a></li>
<li class="toctree-l3"><a class="reference internal" href="apis-sss_key-format.html">3.3.8. SSS api key format (asymmetric keys)</a></li>
</ul>
</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="../ex/doc/puf-scp03.html">3.17. SCP03 with PUF</a></li>
<li class="toctree-l2"><a class="reference internal" href="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></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"><a class="reference internal" href="../../semslite/doc/index.html">7. SEMS Lite Agent</a></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="key-store">
<h1><span class="section-number">3.3.3. </span>Key Store<a class="headerlink" href="#key-store" title="Permalink to this headline"></a></h1>
<p>KeyStore is a container for all secure keys and objects inside
a secure storage.</p>
<img alt="../../_images/key_store.png" src="../../_images/key_store.png" />
<div class="section" id="apis">
<h2><span class="section-number">3.3.3.1. </span>APIs<a class="headerlink" href="#apis" title="Permalink to this headline"></a></h2>
<dl class="group">
<dt>
<em>group</em> <code class="sig-name descname">sss_key_store</code></dt>
<dd><p>Secure storage for keys and certificates. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric">Enums</p>
<dl class="enum">
<dt>
<em class="property">enum </em><code class="sig-name descname">sss_key_store_prop_au8_t</code><br /></dt>
<dd><p>properties of a Key Store that return array </p>
<p><em>Values:</em></p>
<dl class="enumerator">
<dt>
<code class="sig-name descname">kSSS_KeyStoreProp_au8_Optional_Start</code> = 0x00FFFFFFu<br /></dt>
<dd><p>Optional Properties Start </p>
</dd></dl>
</dd></dl>
<dl class="enum">
<dt>
<em class="property">enum </em><code class="sig-name descname">sss_tunnel_dest_t</code><br /></dt>
<dd><p>Entity on the other side of the tunnel </p>
<p><em>Values:</em></p>
<dl class="enumerator">
<dt>
<code class="sig-name descname">kSSS_TunnelDest_None</code> = 0<br /></dt>
<dd><p>Default value </p>
</dd></dl>
<dl class="enumerator">
<dt>
<code class="sig-name descname">kSSS_TunnelType_Se05x_Iot_applet</code><br /></dt>
<dd><p>SE05X IoT Applet </p>
</dd></dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric">Functions</p>
<dl class="function">
<dt>
<a class="reference internal" href="../../api/enum_fsl__sss__api_8h_1a82a023f4d1bf8b22df395d3bffb0ce70.html#_CPPv412sss_status_t" title="sss_status_t">sss_status_t</a> <code class="sig-name descname">sss_key_store_allocate</code><span class="sig-paren">(</span><a class="reference internal" href="../../api/structsss__key__store__t.html#_CPPv415sss_key_store_t" title="sss_key_store_t">sss_key_store_t</a> *<em>keyStore</em>, uint32_t <em>keyStoreId</em><span class="sig-paren">)</span><br /></dt>
<dd><p>Get handle to key store. If the key store already exists, nothing is allocated. If the key store does not exists, new empty key store is created and initialized. Key store context structure is updated with actual information. </p>
<p><dl class="simple">
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">keyStore</span></code>: Pointer to key store context. Key store context is updated on function return. </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">keyStoreId</span></code>: Implementation specific ID, can be used in case security subsystem manages multiple different key stores. </p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="function">
<dt>
void <code class="sig-name descname">sss_key_store_context_free</code><span class="sig-paren">(</span><a class="reference internal" href="../../api/structsss__key__store__t.html#_CPPv415sss_key_store_t" title="sss_key_store_t">sss_key_store_t</a> *<em>keyStore</em><span class="sig-paren">)</span><br /></dt>
<dd><p>Destructor for the key store context. </p>
</dd></dl>
<dl class="function">
<dt>
<a class="reference internal" href="../../api/enum_fsl__sss__api_8h_1a82a023f4d1bf8b22df395d3bffb0ce70.html#_CPPv412sss_status_t" title="sss_status_t">sss_status_t</a> <code class="sig-name descname">sss_key_store_context_init</code><span class="sig-paren">(</span><a class="reference internal" href="../../api/structsss__key__store__t.html#_CPPv415sss_key_store_t" title="sss_key_store_t">sss_key_store_t</a> *<em>keyStore</em>, <a class="reference internal" href="../../api/structsss__session__t.html#_CPPv413sss_session_t" title="sss_session_t">sss_session_t</a> *<em>session</em><span class="sig-paren">)</span><br /></dt>
<dd><p>Constructor for the key store context data structure. </p>
<p><dl class="simple">
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">keyStore</span></code>: Pointer to key store context. Key store context is updated on function return. </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">session</span></code>: Session context. </p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="function">
<dt>
<a class="reference internal" href="../../api/enum_fsl__sss__api_8h_1a82a023f4d1bf8b22df395d3bffb0ce70.html#_CPPv412sss_status_t" title="sss_status_t">sss_status_t</a> <code class="sig-name descname">sss_key_store_erase_key</code><span class="sig-paren">(</span><a class="reference internal" href="../../api/structsss__key__store__t.html#_CPPv415sss_key_store_t" title="sss_key_store_t">sss_key_store_t</a> *<em>keyStore</em>, <a class="reference internal" href="../../api/structsss__object__t.html#_CPPv412sss_object_t" title="sss_object_t">sss_object_t</a> *<em>keyObject</em><span class="sig-paren">)</span><br /></dt>
<dd><p>Delete / destroy allocated keyObect . </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>The sss status. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">keyStore</span></code>: The key store </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">keyObject</span></code>: The key object to be deleted</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="function">
<dt>
<a class="reference internal" href="../../api/enum_fsl__sss__api_8h_1a82a023f4d1bf8b22df395d3bffb0ce70.html#_CPPv412sss_status_t" title="sss_status_t">sss_status_t</a> <code class="sig-name descname">sss_key_store_freeze_key</code><span class="sig-paren">(</span><a class="reference internal" href="../../api/structsss__key__store__t.html#_CPPv415sss_key_store_t" title="sss_key_store_t">sss_key_store_t</a> *<em>keyStore</em>, <a class="reference internal" href="../../api/structsss__object__t.html#_CPPv412sss_object_t" title="sss_object_t">sss_object_t</a> *<em>keyObject</em><span class="sig-paren">)</span><br /></dt>
<dd><p>The referenced key cannot be updated any more. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>The sss status. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">keyStore</span></code>: The key store </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">keyObject</span></code>: The key object to be locked / frozen.</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="function">
<dt>
<a class="reference internal" href="../../api/enum_fsl__sss__api_8h_1a82a023f4d1bf8b22df395d3bffb0ce70.html#_CPPv412sss_status_t" title="sss_status_t">sss_status_t</a> <code class="sig-name descname">sss_key_store_generate_key</code><span class="sig-paren">(</span><a class="reference internal" href="../../api/structsss__key__store__t.html#_CPPv415sss_key_store_t" title="sss_key_store_t">sss_key_store_t</a> *<em>keyStore</em>, <a class="reference internal" href="../../api/structsss__object__t.html#_CPPv412sss_object_t" title="sss_object_t">sss_object_t</a> *<em>keyObject</em>, size_t <em>keyBitLen</em>, void *<em>options</em><span class="sig-paren">)</span><br /></dt>
<dd><p>This function generates key[] in the destination key store. </p>
</dd></dl>
<dl class="function">
<dt>
<a class="reference internal" href="../../api/enum_fsl__sss__api_8h_1a82a023f4d1bf8b22df395d3bffb0ce70.html#_CPPv412sss_status_t" title="sss_status_t">sss_status_t</a> <code class="sig-name descname">sss_key_store_get_key</code><span class="sig-paren">(</span><a class="reference internal" href="../../api/structsss__key__store__t.html#_CPPv415sss_key_store_t" title="sss_key_store_t">sss_key_store_t</a> *<em>keyStore</em>, <a class="reference internal" href="../../api/structsss__object__t.html#_CPPv412sss_object_t" title="sss_object_t">sss_object_t</a> *<em>keyObject</em>, uint8_t *<em>data</em>, size_t *<em>dataLen</em>, size_t *<em>pKeyBitLen</em><span class="sig-paren">)</span><br /></dt>
<dd><p>This function exports plain key[] from key store (if constraints and user id allows reading) </p>
</dd></dl>
<dl class="function">
<dt>
<a class="reference internal" href="../../api/enum_fsl__sss__api_8h_1a82a023f4d1bf8b22df395d3bffb0ce70.html#_CPPv412sss_status_t" title="sss_status_t">sss_status_t</a> <code class="sig-name descname">sss_key_store_load</code><span class="sig-paren">(</span><a class="reference internal" href="../../api/structsss__key__store__t.html#_CPPv415sss_key_store_t" title="sss_key_store_t">sss_key_store_t</a> *<em>keyStore</em><span class="sig-paren">)</span><br /></dt>
<dd><p>Load from persistent memory to cached objects. </p>
</dd></dl>
<dl class="function">
<dt>
<a class="reference internal" href="../../api/enum_fsl__sss__api_8h_1a82a023f4d1bf8b22df395d3bffb0ce70.html#_CPPv412sss_status_t" title="sss_status_t">sss_status_t</a> <code class="sig-name descname">sss_key_store_open_key</code><span class="sig-paren">(</span><a class="reference internal" href="../../api/structsss__key__store__t.html#_CPPv415sss_key_store_t" title="sss_key_store_t">sss_key_store_t</a> *<em>keyStore</em>, <a class="reference internal" href="../../api/structsss__object__t.html#_CPPv412sss_object_t" title="sss_object_t">sss_object_t</a> *<em>keyObject</em><span class="sig-paren">)</span><br /></dt>
<dd><p>Access key store using one more level of encryption. </p>
<p>e.g. Access keys / encryption key during storage</p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>The sss status. </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">keyStore</span></code>: The key store </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">keyObject</span></code>: The key object that is to be used as a KEK (Key Encryption Key)</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="function">
<dt>
<a class="reference internal" href="../../api/enum_fsl__sss__api_8h_1a82a023f4d1bf8b22df395d3bffb0ce70.html#_CPPv412sss_status_t" title="sss_status_t">sss_status_t</a> <code class="sig-name descname">sss_key_store_save</code><span class="sig-paren">(</span><a class="reference internal" href="../../api/structsss__key__store__t.html#_CPPv415sss_key_store_t" title="sss_key_store_t">sss_key_store_t</a> *<em>keyStore</em><span class="sig-paren">)</span><br /></dt>
<dd><p>Save all cached persistent objects to persistent memory. </p>
</dd></dl>
<dl class="function">
<dt>
<a class="reference internal" href="../../api/enum_fsl__sss__api_8h_1a82a023f4d1bf8b22df395d3bffb0ce70.html#_CPPv412sss_status_t" title="sss_status_t">sss_status_t</a> <code class="sig-name descname">sss_key_store_set_key</code><span class="sig-paren">(</span><a class="reference internal" href="../../api/structsss__key__store__t.html#_CPPv415sss_key_store_t" title="sss_key_store_t">sss_key_store_t</a> *<em>keyStore</em>, <a class="reference internal" href="../../api/structsss__object__t.html#_CPPv412sss_object_t" title="sss_object_t">sss_object_t</a> *<em>keyObject</em>, <em class="property">const</em> uint8_t *<em>data</em>, size_t <em>dataLen</em>, size_t <em>keyBitLen</em>, void *<em>options</em>, size_t <em>optionsLen</em><span class="sig-paren">)</span><br /></dt>
<dd><p>This function moves data[] from memory to the destination key store. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p></p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">keyStore</span></code>: Key store context </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">keyObject</span></code>: Reference to a key and it’s properties </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">data</span></code>: Data to be stored in Key. When setting ecc private key only, do not include key header. </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">dataLen</span></code>: Length of the data </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">keyBitLen</span></code>: Crypto algorithm key bit length </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">options</span></code>: Pointer to implementation specific options </p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">optionsLen</span></code>: Length of the options in bytes</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
</div>
<dl class="class">
<dt>
<em class="property">struct </em><code class="sig-name descname">sss_key_store_t</code><br /></dt>
<dd><em>#include &lt;fsl_sss_api.h&gt;</em><p>Store for secure and non secure key objects within a cryptographic system. </p>
<p><ul class="simple">
<li><p>A cryptographic system may have more than partitions to store such keys. </p></li>
</ul>
</p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric">Public Members</p>
<dl class="member">
<dt>
uint8_t <code class="sig-name descname">data</code>[(0 + (1 * sizeof(void *)) + (4 * sizeof(void *)) + 16)]<br /></dt>
<dd></dd></dl>
<dl class="member">
<dt>
<em class="property">struct</em> <a class="reference internal" href="../../api/structsss__key__store__t.html#_CPPv415sss_key_store_t" title="sss_key_store_t">sss_key_store_t</a>::<strong>[anonymous]</strong> <code class="sig-name descname">extension</code><br /></dt>
<dd><p>Reserved memory for implementation specific extension </p>
</dd></dl>
<dl class="member">
<dt>
<a class="reference internal" href="../../api/structsss__session__t.html#_CPPv413sss_session_t" title="sss_session_t">sss_session_t</a> *<code class="sig-name descname">session</code><br /></dt>
<dd><p>Virtual connection between application (user context) and specific security subsystem and function thereof. </p>
</dd></dl>
</div>
</dd></dl>
</dd></dl>
</div>
<div class="section" id="key-format">
<h2><span class="section-number">3.3.3.2. </span>Key Format<a class="headerlink" href="#key-format" title="Permalink to this headline"></a></h2>
<p>The <code class="docutils literal notranslate"><span class="pre">sss_key_store_set_key</span></code> and <code class="docutils literal notranslate"><span class="pre">sss_key_store_get_key</span></code> API’s do not impose a specific
format on the data parameter. Different implementations of the SSS API can have different
capabilities in dealing with an input format (relevant for <code class="docutils literal notranslate"><span class="pre">sss_key_store_set_key</span></code>) and will use
a specific output format (relevant for <code class="docutils literal notranslate"><span class="pre">sss_key_store_get_key</span></code>). The following section illustrates this by
taking the example of the SE050 implementation in the context of EC Key pairs.</p>
<div class="section" id="ec-key-pair">
<h3><span class="section-number">3.3.3.2.1. </span>EC Key pair<a class="headerlink" href="#ec-key-pair" title="Permalink to this headline"></a></h3>
<p>When passing an EC key pair as data argument to the <code class="docutils literal notranslate"><span class="pre">sss_key_store_set_key</span></code> API, the key pair data must be DER encoded
using either the pkcs#8 format or classic OpenSSL format.</p>
<p>When retrieving an EC key pair as data argument from the <code class="docutils literal notranslate"><span class="pre">sss_key_store_get</span></code> API, the full key pair cannot be retrieved.
Instead the public key value is returned. The public key is retrieved in ANSI X9.62 uncompressed format.</p>
</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>