blob: bbcfff06baec1009b460678dcaf7a825cc744d8b [file] [log] [blame]
Gilles Peskinec2db5f02021-01-18 20:36:53 +01001
Bence Szépkútie26ccad2021-02-01 14:26:11 +01002<!DOCTYPE html>
Gilles Peskinec2db5f02021-01-18 20:36:53 +01003
4<html xmlns="http://www.w3.org/1999/xhtml">
5 <head>
Bence Szépkútie26ccad2021-02-01 14:26:11 +01006 <meta charset="utf-8" />
Gilles Peskinec2db5f02021-01-18 20:36:53 +01007 <title>9.4. Key identifiers &#8212; PSA Crypto API 1.0.1 documentation</title>
8 <link rel="stylesheet" href="../../_static/alabaster.css" type="text/css" />
9 <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
Bence Szépkútie26ccad2021-02-01 14:26:11 +010010 <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010011 <script type="text/javascript" src="../../_static/jquery.js"></script>
12 <script type="text/javascript" src="../../_static/underscore.js"></script>
13 <script type="text/javascript" src="../../_static/doctools.js"></script>
Bence Szépkútie26ccad2021-02-01 14:26:11 +010014 <script type="text/javascript" src="../../_static/language_data.js"></script>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010015 <link rel="author" title="About these documents" href="../../about.html" />
16 <link rel="index" title="Index" href="../../genindex.html" />
17 <link rel="search" title="Search" href="../../search.html" />
18 <link rel="next" title="9.5. Key policies" href="policy.html" />
19 <link rel="prev" title="9.3. Key lifetimes" href="lifetimes.html" />
20
21 <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
22
Bence Szépkútie26ccad2021-02-01 14:26:11 +010023
Gilles Peskinec2db5f02021-01-18 20:36:53 +010024 <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
25
Bence Szépkútie26ccad2021-02-01 14:26:11 +010026 </head><body>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010027
28
29 <div class="document">
30 <div class="documentwrapper">
31 <div class="bodywrapper">
Bence Szépkútie26ccad2021-02-01 14:26:11 +010032
33
Gilles Peskinec2db5f02021-01-18 20:36:53 +010034 <div class="body" role="main">
35
36 <div class="section" id="key-identifiers">
37<span id="id1"></span><h1>9.4. Key identifiers</h1>
Bence Szépkútie26ccad2021-02-01 14:26:11 +010038<p>Key identifiers are integral values that act as permanent names for persistent keys, or as transient references to volatile keys. Key identifiers use the <a class="reference internal" href="#c.psa_key_id_t" title="psa_key_id_t"><code class="xref any c c-type docutils literal notranslate"><span class="pre">psa_key_id_t</span></code></a> type, and the range of identifier values is divided as follows:</p>
39<dl class="simple">
40<dt><a class="reference internal" href="#c.PSA_KEY_ID_NULL" title="PSA_KEY_ID_NULL"><code class="docutils literal notranslate"><span class="pre">PSA_KEY_ID_NULL</span></code></a><code class="docutils literal notranslate"> <span class="pre">=</span> <span class="pre">0</span></code></dt><dd><p>Reserved as an invalid key identifier.</p>
41</dd>
42<dt><a class="reference internal" href="#c.PSA_KEY_ID_USER_MIN" title="PSA_KEY_ID_USER_MIN"><code class="docutils literal notranslate"><span class="pre">PSA_KEY_ID_USER_MIN</span></code></a><code class="docutils literal notranslate"> <span class="pre">-</span> </code><a class="reference internal" href="#c.PSA_KEY_ID_USER_MAX" title="PSA_KEY_ID_USER_MAX"><code class="docutils literal notranslate"><span class="pre">PSA_KEY_ID_USER_MAX</span></code></a></dt><dd><p>Applications can freely choose persistent key identifiers in this range.</p>
43</dd>
44<dt><a class="reference internal" href="#c.PSA_KEY_ID_VENDOR_MIN" title="PSA_KEY_ID_VENDOR_MIN"><code class="docutils literal notranslate"><span class="pre">PSA_KEY_ID_VENDOR_MIN</span></code></a><code class="docutils literal notranslate"> <span class="pre">-</span> </code><a class="reference internal" href="#c.PSA_KEY_ID_VENDOR_MAX" title="PSA_KEY_ID_VENDOR_MAX"><code class="docutils literal notranslate"><span class="pre">PSA_KEY_ID_VENDOR_MAX</span></code></a></dt><dd><p>Implementations can define additional persistent key identifiers in this range, and must allocate any volatile key identifiers from this range.</p>
45</dd>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010046</dl>
47<p>Key identifiers outside these ranges are reserved for future use.</p>
Bence Szépkútie26ccad2021-02-01 14:26:11 +010048<p>Key identifiers are output from a successful call to one of the key creation functions. For persistent keys, this is the same identifier as the one specified in the key attributes used to create the key. The key identifier remains valid until it is invalidated by passing it to <a class="reference internal" href="management.html#c.psa_destroy_key" title="psa_destroy_key"><code class="xref any c c-func docutils literal notranslate"><span class="pre">psa_destroy_key()</span></code></a>. A volatile key identifier must not be used after it has been invalidated.</p>
49<p>If an invalid key identifier is provided as a parameter in any function, the function will return <a class="reference internal" href="../library/status.html#c.PSA_ERROR_INVALID_HANDLE" title="PSA_ERROR_INVALID_HANDLE"><code class="xref any c c-macro docutils literal notranslate"><span class="pre">PSA_ERROR_INVALID_HANDLE</span></code></a>; except for the special case of calling <a class="reference internal" href="management.html#c.psa_destroy_key" title="psa_destroy_key"><code class="docutils literal notranslate"><span class="pre">psa_destroy_key</span></code></a><code class="docutils literal notranslate"><span class="pre">(</span></code><a class="reference internal" href="#c.PSA_KEY_ID_NULL" title="PSA_KEY_ID_NULL"><code class="docutils literal notranslate"><span class="pre">PSA_KEY_ID_NULL</span></code></a><code class="docutils literal notranslate"><span class="pre">)</span></code>, which has no effect and always returns <a class="reference internal" href="../library/status.html#c.PSA_SUCCESS" title="PSA_SUCCESS"><code class="xref any c c-macro docutils literal notranslate"><span class="pre">PSA_SUCCESS</span></code></a>.</p>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010050<p>Valid key identifiers must have distinct values within the same application. If the implementation provides <a class="reference internal" href="../../overview/goals.html#isolation"><span class="std std-ref">caller isolation</span></a>, then key identifiers are local to each application. That is, the same key identifier in two applications corresponds to two different keys.</p>
51<div class="section" id="key-identifier-type">
52<h2>9.4.1. Key identifier type</h2>
53<div class="section" id="psa_key_id_t">
Bence Szépkútie26ccad2021-02-01 14:26:11 +010054<span id="c.psa_key_id_t"></span><h3><code class="docutils literal notranslate"><span class="pre">psa_key_id_t</span></code> (type)</h3>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010055<p>Key identifier.</p>
Bence Szépkútie26ccad2021-02-01 14:26:11 +010056<pre class="literal-block">typedef uint32_t <a class="reference internal" href="#c.psa_key_id_t" title="psa_key_id_t">psa_key_id_t</a>;</pre>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010057<p>A key identifier can be a permanent name for a persistent key, or a transient reference to volatile key. See <a class="reference internal" href="#key-identifiers"><span class="secref">Key identifiers</span></a>.</p>
58</div>
59<div class="section" id="PSA_KEY_ID_NULL">
Bence Szépkútie26ccad2021-02-01 14:26:11 +010060<span id="c.PSA_KEY_ID_NULL"></span><h3><code class="docutils literal notranslate"><span class="pre">PSA_KEY_ID_NULL</span></code> (macro)</h3>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010061<p>The null key identifier.</p>
Bence Szépkútie26ccad2021-02-01 14:26:11 +010062<pre class="literal-block">#define <a class="reference internal" href="#c.PSA_KEY_ID_NULL" title="PSA_KEY_ID_NULL">PSA_KEY_ID_NULL</a> ((<a class="reference internal" href="#c.psa_key_id_t" title="psa_key_id_t">psa_key_id_t</a>)0)</pre>
63<p>The null key identifier is always invalid, except when used without in a call to <a class="reference internal" href="management.html#c.psa_destroy_key" title="psa_destroy_key"><code class="xref any c c-func docutils literal notranslate"><span class="pre">psa_destroy_key()</span></code></a> which will return <a class="reference internal" href="../library/status.html#c.PSA_SUCCESS" title="PSA_SUCCESS"><code class="xref any c c-macro docutils literal notranslate"><span class="pre">PSA_SUCCESS</span></code></a>.</p>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010064</div>
65<div class="section" id="PSA_KEY_ID_USER_MIN">
Bence Szépkútie26ccad2021-02-01 14:26:11 +010066<span id="c.PSA_KEY_ID_USER_MIN"></span><h3><code class="docutils literal notranslate"><span class="pre">PSA_KEY_ID_USER_MIN</span></code> (macro)</h3>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010067<p>The minimum value for a key identifier chosen by the application.</p>
Bence Szépkútie26ccad2021-02-01 14:26:11 +010068<pre class="literal-block">#define <a class="reference internal" href="#c.PSA_KEY_ID_USER_MIN" title="PSA_KEY_ID_USER_MIN">PSA_KEY_ID_USER_MIN</a> ((<a class="reference internal" href="#c.psa_key_id_t" title="psa_key_id_t">psa_key_id_t</a>)0x00000001)</pre>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010069</div>
70<div class="section" id="PSA_KEY_ID_USER_MAX">
Bence Szépkútie26ccad2021-02-01 14:26:11 +010071<span id="c.PSA_KEY_ID_USER_MAX"></span><h3><code class="docutils literal notranslate"><span class="pre">PSA_KEY_ID_USER_MAX</span></code> (macro)</h3>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010072<p>The maximum value for a key identifier chosen by the application.</p>
Bence Szépkútie26ccad2021-02-01 14:26:11 +010073<pre class="literal-block">#define <a class="reference internal" href="#c.PSA_KEY_ID_USER_MAX" title="PSA_KEY_ID_USER_MAX">PSA_KEY_ID_USER_MAX</a> ((<a class="reference internal" href="#c.psa_key_id_t" title="psa_key_id_t">psa_key_id_t</a>)0x3fffffff)</pre>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010074</div>
75<div class="section" id="PSA_KEY_ID_VENDOR_MIN">
Bence Szépkútie26ccad2021-02-01 14:26:11 +010076<span id="c.PSA_KEY_ID_VENDOR_MIN"></span><h3><code class="docutils literal notranslate"><span class="pre">PSA_KEY_ID_VENDOR_MIN</span></code> (macro)</h3>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010077<p>The minimum value for a key identifier chosen by the implementation.</p>
Bence Szépkútie26ccad2021-02-01 14:26:11 +010078<pre class="literal-block">#define <a class="reference internal" href="#c.PSA_KEY_ID_VENDOR_MIN" title="PSA_KEY_ID_VENDOR_MIN">PSA_KEY_ID_VENDOR_MIN</a> ((<a class="reference internal" href="#c.psa_key_id_t" title="psa_key_id_t">psa_key_id_t</a>)0x40000000)</pre>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010079</div>
80<div class="section" id="PSA_KEY_ID_VENDOR_MAX">
Bence Szépkútie26ccad2021-02-01 14:26:11 +010081<span id="c.PSA_KEY_ID_VENDOR_MAX"></span><h3><code class="docutils literal notranslate"><span class="pre">PSA_KEY_ID_VENDOR_MAX</span></code> (macro)</h3>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010082<p>The maximum value for a key identifier chosen by the implementation.</p>
Bence Szépkútie26ccad2021-02-01 14:26:11 +010083<pre class="literal-block">#define <a class="reference internal" href="#c.PSA_KEY_ID_VENDOR_MAX" title="PSA_KEY_ID_VENDOR_MAX">PSA_KEY_ID_VENDOR_MAX</a> ((<a class="reference internal" href="#c.psa_key_id_t" title="psa_key_id_t">psa_key_id_t</a>)0x7fffffff)</pre>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010084</div>
85</div>
86<div class="section" id="attribute-accessors">
87<h2>9.4.2. Attribute accessors</h2>
88<div class="section" id="psa_set_key_id">
Bence Szépkútie26ccad2021-02-01 14:26:11 +010089<span id="c.psa_set_key_id"></span><h3><code class="docutils literal notranslate"><span class="pre">psa_set_key_id</span></code> (function)</h3>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010090<p>Declare a key as persistent and set its key identifier.</p>
Bence Szépkútie26ccad2021-02-01 14:26:11 +010091<pre class="literal-block">void <a class="reference internal" href="#c.psa_set_key_id" title="psa_set_key_id">psa_set_key_id</a>(<a class="reference internal" href="attributes.html#c.psa_key_attributes_t" title="psa_key_attributes_t">psa_key_attributes_t</a> * attributes,
92 <a class="reference internal" href="#c.psa_key_id_t" title="psa_key_id_t">psa_key_id_t</a> id);</pre>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010093<p class="rubric">Parameters</p>
Bence Szépkútie26ccad2021-02-01 14:26:11 +010094<dl class="simple">
95<dt> <code class="docutils literal notranslate"><span class="pre">attributes</span></code></dt><dd><p>The attribute object to write to.</p>
96</dd>
97<dt> <code class="docutils literal notranslate"><span class="pre">id</span></code></dt><dd><p>The persistent identifier for the key.</p>
98</dd>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010099</dl>
Bence Szépkútie26ccad2021-02-01 14:26:11 +0100100<p class="rubric">Returns: <code class="docutils literal notranslate"><span class="pre">void</span></code></p>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100101<p class="rubric">Description</p>
Bence Szépkútie26ccad2021-02-01 14:26:11 +0100102<p>The application must choose a value for <code class="docutils literal notranslate"><span class="pre">id</span></code> between <a class="reference internal" href="#c.PSA_KEY_ID_USER_MIN" title="PSA_KEY_ID_USER_MIN"><code class="xref any c c-macro docutils literal notranslate"><span class="pre">PSA_KEY_ID_USER_MIN</span></code></a> and <a class="reference internal" href="#c.PSA_KEY_ID_USER_MAX" title="PSA_KEY_ID_USER_MAX"><code class="xref any c c-macro docutils literal notranslate"><span class="pre">PSA_KEY_ID_USER_MAX</span></code></a>.</p>
103<p>If the attribute object currently declares the key as volatile, which is the default lifetime of an attribute object, this function sets the lifetime attribute to <a class="reference internal" href="lifetimes.html#c.PSA_KEY_LIFETIME_PERSISTENT" title="PSA_KEY_LIFETIME_PERSISTENT"><code class="xref any c c-macro docutils literal notranslate"><span class="pre">PSA_KEY_LIFETIME_PERSISTENT</span></code></a>.</p>
104<p>This function does not access storage, it merely stores the given value in the attribute object. The persistent key will be written to storage when the attribute object is passed to a key creation function such as <a class="reference internal" href="management.html#c.psa_import_key" title="psa_import_key"><code class="xref any c c-func docutils literal notranslate"><span class="pre">psa_import_key()</span></code></a>, <a class="reference internal" href="management.html#c.psa_generate_key" title="psa_generate_key"><code class="xref any c c-func docutils literal notranslate"><span class="pre">psa_generate_key()</span></code></a>, <a class="reference internal" href="../ops/kdf.html#c.psa_key_derivation_output_key" title="psa_key_derivation_output_key"><code class="xref any c c-func docutils literal notranslate"><span class="pre">psa_key_derivation_output_key()</span></code></a> or <a class="reference internal" href="management.html#c.psa_copy_key" title="psa_copy_key"><code class="xref any c c-func docutils literal notranslate"><span class="pre">psa_copy_key()</span></code></a>.</p>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100105<div class="admonition-implementation-note admonition">
Bence Szépkútie26ccad2021-02-01 14:26:11 +0100106<p class="admonition-title">Implementation note</p>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100107<p>This is a simple accessor function that is not required to validate its inputs. The following approaches can be used to provide an efficient implementation:</p>
Bence Szépkútie26ccad2021-02-01 14:26:11 +0100108<ul class="simple">
109<li><p>This function can be declared as <code class="docutils literal notranslate"><span class="pre">static</span></code> or <code class="docutils literal notranslate"><span class="pre">inline</span></code>, instead of using the default external linkage.</p></li>
110<li><p>This function can be provided as a function-like macro. In this form, the macro must evaluate each of its arguments exactly once, as if it was a function call.</p></li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100111</ul>
112</div>
113</div>
114<div class="section" id="psa_get_key_id">
Bence Szépkútie26ccad2021-02-01 14:26:11 +0100115<span id="c.psa_get_key_id"></span><h3><code class="docutils literal notranslate"><span class="pre">psa_get_key_id</span></code> (function)</h3>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100116<p>Retrieve the key identifier from key attributes.</p>
Bence Szépkútie26ccad2021-02-01 14:26:11 +0100117<pre class="literal-block"><a class="reference internal" href="#c.psa_key_id_t" title="psa_key_id_t">psa_key_id_t</a> <a class="reference internal" href="#c.psa_get_key_id" title="psa_get_key_id">psa_get_key_id</a>(const <a class="reference internal" href="attributes.html#c.psa_key_attributes_t" title="psa_key_attributes_t">psa_key_attributes_t</a> * attributes);</pre>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100118<p class="rubric">Parameters</p>
Bence Szépkútie26ccad2021-02-01 14:26:11 +0100119<dl class="simple">
120<dt> <code class="docutils literal notranslate"><span class="pre">attributes</span></code></dt><dd><p>The key attribute object to query.</p>
121</dd>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100122</dl>
Bence Szépkútie26ccad2021-02-01 14:26:11 +0100123<p class="rubric">Returns: <a class="reference internal" href="#c.psa_key_id_t" title="psa_key_id_t"><code class="docutils literal notranslate"><span class="pre">psa_key_id_t</span></code></a></p>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100124<p>The persistent identifier stored in the attribute object. This value is unspecified if the attribute object declares the key as volatile.</p>
125<p class="rubric">Description</p>
126<div class="admonition-implementation-note admonition">
Bence Szépkútie26ccad2021-02-01 14:26:11 +0100127<p class="admonition-title">Implementation note</p>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100128<p>This is a simple accessor function that is not required to validate its inputs. The following approaches can be used to provide an efficient implementation:</p>
Bence Szépkútie26ccad2021-02-01 14:26:11 +0100129<ul class="simple">
130<li><p>This function can be declared as <code class="docutils literal notranslate"><span class="pre">static</span></code> or <code class="docutils literal notranslate"><span class="pre">inline</span></code>, instead of using the default external linkage.</p></li>
131<li><p>This function can be provided as a function-like macro. In this form, the macro must evaluate each of its arguments exactly once, as if it was a function call.</p></li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100132</ul>
133</div>
134</div>
135</div>
136</div>
137
138
139 </div>
Bence Szépkútie26ccad2021-02-01 14:26:11 +0100140
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100141 </div>
142 </div>
143 <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
144 <div class="sphinxsidebarwrapper"><h3><a href="../../index.html"><b>PSA Crypto API</b></a></h3>
145IHI 0086<br/>
146Non-confidential<br/>
147Version 1.0.1
148<span style="color: red; font-weight: bold;"></span>
149<ul>
150<li class="toctree-l1"><a class="reference internal" href="../../about.html">About this document</a></li>
151</ul>
152<ul class="current">
153<li class="toctree-l1"><a class="reference internal" href="../../overview/intro.html">1. Introduction</a></li>
154<li class="toctree-l1"><a class="reference internal" href="../../overview/goals.html">2. Design goals</a></li>
155<li class="toctree-l1"><a class="reference internal" href="../../overview/functionality.html">3. Functionality overview</a></li>
156<li class="toctree-l1"><a class="reference internal" href="../../overview/sample-arch.html">4. Sample architectures</a></li>
157<li class="toctree-l1"><a class="reference internal" href="../../overview/conventions.html">5. Library conventions</a></li>
158<li class="toctree-l1"><a class="reference internal" href="../../overview/implementation.html">6. Implementation considerations</a></li>
159<li class="toctree-l1"><a class="reference internal" href="../../overview/usage.html">7. Usage considerations</a></li>
160<li class="toctree-l1"><a class="reference internal" href="../library/index.html">8. Library management reference</a></li>
161<li class="toctree-l1 current"><a class="reference internal" href="index.html">9. Key management reference</a><ul class="current">
162<li class="toctree-l2"><a class="reference internal" href="attributes.html">9.1. Key attributes</a></li>
163<li class="toctree-l2"><a class="reference internal" href="types.html">9.2. Key types</a></li>
164<li class="toctree-l2"><a class="reference internal" href="lifetimes.html">9.3. Key lifetimes</a></li>
165<li class="toctree-l2 current"><a class="current reference internal" href="#">9.4. Key identifiers</a><ul>
166<li class="toctree-l3"><a class="reference internal" href="#key-identifier-type">9.4.1. Key identifier type</a></li>
167<li class="toctree-l3"><a class="reference internal" href="#attribute-accessors">9.4.2. Attribute accessors</a></li>
168</ul>
169</li>
170<li class="toctree-l2"><a class="reference internal" href="policy.html">9.5. Key policies</a></li>
171<li class="toctree-l2"><a class="reference internal" href="management.html">9.6. Key management functions</a></li>
172</ul>
173</li>
174<li class="toctree-l1"><a class="reference internal" href="../ops/index.html">10. Cryptographic operation reference</a></li>
175</ul>
176<ul>
177<li class="toctree-l1"><a class="reference internal" href="../../appendix/example_header.html">Example header file</a></li>
178<li class="toctree-l1"><a class="reference internal" href="../../appendix/specdef_values.html">Example macro implementations</a></li>
179<li class="toctree-l1"><a class="reference internal" href="../../appendix/history.html">Changes to the API</a></li>
180</ul>
181<ul>
182<li class="toctree-l1"><a class="reference internal" href="../../psa_c-identifiers.html">Index of API elements</a></li>
183</ul>
184<div id="searchbox" style="display: none" role="search">
Bence Szépkútie26ccad2021-02-01 14:26:11 +0100185 <h3 id="searchlabel">Quick search</h3>
186 <div class="searchformwrapper">
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100187 <form class="search" action="../../search.html" method="get">
Bence Szépkútie26ccad2021-02-01 14:26:11 +0100188 <input type="text" name="q" aria-labelledby="searchlabel" />
189 <input type="submit" value="Go" />
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100190 </form>
Bence Szépkútie26ccad2021-02-01 14:26:11 +0100191 </div>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100192</div>
193<script type="text/javascript">$('#searchbox').show(0);</script>
194 </div>
195 </div>
196 <div class="clearer"></div>
197 </div>
198 <div class="footer">
199 &copy; 2018-2020, Arm Limited or its affiliates. All rights reserved.
200
201 |
Bence Szépkútie26ccad2021-02-01 14:26:11 +0100202 Powered by <a href="http://sphinx-doc.org/">Sphinx 2.1.2</a>
203 &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100204
205 </div>
206
207
208
209
210 </body>
211</html>