blob: 39dc94b44dad7918cb64646985bedcff67fc838d [file] [log] [blame]
Gilles Peskine06995ff2019-05-21 19:50:19 +02001
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
Gilles Peskine89f0a532019-01-31 11:47:57 +01005<html xmlns="http://www.w3.org/1999/xhtml">
Gilles Peskine06995ff2019-05-21 19:50:19 +02006 <head>
Gilles Peskine06995ff2019-05-21 19:50:19 +02007 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Gilles Peskinec2db5f02021-01-18 20:36:53 +01008 <title>PSA Cryptography API 1.0 &#8212; PSA Crypto API 1.0.1 documentation</title>
Gilles Peskine06995ff2019-05-21 19:50:19 +02009 <link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
10 <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
Gilles Peskine6c723a22020-04-17 16:57:52 +020011 <script type="text/javascript">
12 var DOCUMENTATION_OPTIONS = {
13 URL_ROOT: './',
Gilles Peskinec2db5f02021-01-18 20:36:53 +010014 VERSION: '1.0.1',
Gilles Peskine6c723a22020-04-17 16:57:52 +020015 COLLAPSE_INDEX: false,
16 FILE_SUFFIX: '.html',
Gilles Peskinec2db5f02021-01-18 20:36:53 +010017 HAS_SOURCE: false,
Gilles Peskine6c723a22020-04-17 16:57:52 +020018 SOURCELINK_SUFFIX: '.txt'
19 };
20 </script>
Gilles Peskine06995ff2019-05-21 19:50:19 +020021 <script type="text/javascript" src="_static/jquery.js"></script>
22 <script type="text/javascript" src="_static/underscore.js"></script>
23 <script type="text/javascript" src="_static/doctools.js"></script>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010024 <link rel="author" title="About these documents" href="about.html" />
Gilles Peskine06995ff2019-05-21 19:50:19 +020025 <link rel="index" title="Index" href="genindex.html" />
26 <link rel="search" title="Search" href="search.html" />
Gilles Peskinec2db5f02021-01-18 20:36:53 +010027 <link rel="next" title="About this document" href="about.html" />
Gilles Peskine06995ff2019-05-21 19:50:19 +020028
29 <link rel="stylesheet" href="_static/custom.css" type="text/css" />
30
Gilles Peskine06995ff2019-05-21 19:50:19 +020031 <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
32
Gilles Peskine6c723a22020-04-17 16:57:52 +020033 </head>
34 <body>
Gilles Peskine06995ff2019-05-21 19:50:19 +020035
36
37 <div class="document">
38 <div class="documentwrapper">
39 <div class="bodywrapper">
Gilles Peskine06995ff2019-05-21 19:50:19 +020040 <div class="body" role="main">
41
Gilles Peskinec2db5f02021-01-18 20:36:53 +010042 <a class="reference internal image-reference" href="_images/Arm_logo_blue_150LG.png"><img alt="_images/Arm_logo_blue_150LG.png" class="align-right" src="_images/Arm_logo_blue_150LG.png" style="width: 5cm;" /></a>
43<div class="section" id="doctitle-docversion">
Gilles Peskine6c723a22020-04-17 16:57:52 +020044<h1>PSA Cryptography API 1.0</h1>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010045<table border="1" class="titletable docutils align-left">
46<colgroup>
47<col width="50%" />
48<col width="50%" />
49</colgroup>
50<tbody valign="top">
51<tr class="row-odd"><td>Document number:</td>
52<td>IHI 0086</td>
53</tr>
54<tr class="row-even"><td>Release Quality:</td>
55<td>Final</td>
56</tr>
57<tr class="row-odd"><td>Issue Number:</td>
58<td>1</td>
59</tr>
60<tr class="row-even"><td>Confidentiality:</td>
61<td>Non-confidential</td>
62</tr>
63<tr class="row-odd"><td>Date of Issue:</td>
64<td>27/08/2020</td>
65</tr>
66</tbody>
67</table>
68<p class="titlecopyright">Copyright © 2018-2020, Arm Limited. All rights reserved.</p>
69<p><span class="sectiontitle">Contents</span></p>
Gilles Peskine06995ff2019-05-21 19:50:19 +020070<div class="toctree-wrapper compound">
71<ul>
Gilles Peskinec2db5f02021-01-18 20:36:53 +010072<li class="toctree-l1"><a class="reference internal" href="about.html">About this document</a><ul>
73<li class="toctree-l2"><a class="reference internal" href="about.html#release-information">Release information</a></li>
74<li class="toctree-l2"><a class="reference internal" href="about.html#arm-non-confidential-document-licence-licence">Arm Non-Confidential Document Licence (“Licence”)</a></li>
75<li class="toctree-l2"><a class="reference internal" href="about.html#references">References</a></li>
76<li class="toctree-l2"><a class="reference internal" href="about.html#terms-and-abbreviations">Terms and abbreviations</a></li>
77<li class="toctree-l2"><a class="reference internal" href="about.html#potential-for-change">Potential for change</a></li>
78<li class="toctree-l2"><a class="reference internal" href="about.html#conventions">Conventions</a></li>
79<li class="toctree-l2"><a class="reference internal" href="about.html#pseudocode-descriptions">Pseudocode descriptions</a></li>
80<li class="toctree-l2"><a class="reference internal" href="about.html#assembler-syntax-descriptions">Assembler syntax descriptions</a></li>
81<li class="toctree-l2"><a class="reference internal" href="about.html#feedback">Feedback</a></li>
82</ul>
83</li>
84</ul>
85</div>
86<div class="toctree-wrapper compound">
87<ul>
88<li class="toctree-l1"><a class="reference internal" href="overview/intro.html">1. Introduction</a></li>
89<li class="toctree-l1"><a class="reference internal" href="overview/goals.html">2. Design goals</a><ul>
90<li class="toctree-l2"><a class="reference internal" href="overview/goals.html#suitable-for-constrained-devices">2.1. Suitable for constrained devices</a></li>
91<li class="toctree-l2"><a class="reference internal" href="overview/goals.html#a-keystore-interface">2.2. A keystore interface</a></li>
92<li class="toctree-l2"><a class="reference internal" href="overview/goals.html#optional-isolation">2.3. Optional isolation</a></li>
93<li class="toctree-l2"><a class="reference internal" href="overview/goals.html#choice-of-algorithms">2.4. Choice of algorithms</a></li>
94<li class="toctree-l2"><a class="reference internal" href="overview/goals.html#ease-of-use">2.5. Ease of use</a></li>
95<li class="toctree-l2"><a class="reference internal" href="overview/goals.html#example-use-cases">2.6. Example use cases</a><ul>
96<li class="toctree-l3"><a class="reference internal" href="overview/goals.html#network-security-tls">2.6.1. Network Security (TLS)</a></li>
97<li class="toctree-l3"><a class="reference internal" href="overview/goals.html#secure-storage">2.6.2. Secure Storage</a></li>
98<li class="toctree-l3"><a class="reference internal" href="overview/goals.html#network-credentials">2.6.3. Network Credentials</a></li>
99<li class="toctree-l3"><a class="reference internal" href="overview/goals.html#device-pairing">2.6.4. Device Pairing</a></li>
100<li class="toctree-l3"><a class="reference internal" href="overview/goals.html#secure-boot">2.6.5. Secure Boot</a></li>
101<li class="toctree-l3"><a class="reference internal" href="overview/goals.html#attestation">2.6.6. Attestation</a></li>
102<li class="toctree-l3"><a class="reference internal" href="overview/goals.html#factory-provisioning">2.6.7. Factory Provisioning</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200103</ul>
104</li>
105</ul>
106</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100107<li class="toctree-l1"><a class="reference internal" href="overview/functionality.html">3. Functionality overview</a><ul>
108<li class="toctree-l2"><a class="reference internal" href="overview/functionality.html#library-management">3.1. Library management</a></li>
109<li class="toctree-l2"><a class="reference internal" href="overview/functionality.html#key-management">3.2. Key management</a><ul>
110<li class="toctree-l3"><a class="reference internal" href="overview/functionality.html#key-identifiers">3.2.1. Key identifiers</a></li>
111<li class="toctree-l3"><a class="reference internal" href="overview/functionality.html#key-lifetimes">3.2.2. Key lifetimes</a></li>
112<li class="toctree-l3"><a class="reference internal" href="overview/functionality.html#key-policies">3.2.3. Key policies</a></li>
113<li class="toctree-l3"><a class="reference internal" href="overview/functionality.html#recommendations-of-minimum-standards-for-key-management">3.2.4. Recommendations of minimum standards for key management</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200114</ul>
115</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100116<li class="toctree-l2"><a class="reference internal" href="overview/functionality.html#symmetric-cryptography">3.3. Symmetric cryptography</a><ul>
117<li class="toctree-l3"><a class="reference internal" href="overview/functionality.html#single-part-functions">3.3.1. Single-part Functions</a></li>
118<li class="toctree-l3"><a class="reference internal" href="overview/functionality.html#multi-part-operations">3.3.2. Multi-part operations</a></li>
119<li class="toctree-l3"><a class="reference internal" href="overview/functionality.html#message-digests-hashes">3.3.3. Message digests (Hashes)</a></li>
120<li class="toctree-l3"><a class="reference internal" href="overview/functionality.html#message-authentication-codes-macs">3.3.4. Message authentication codes (MACs)</a></li>
121<li class="toctree-l3"><a class="reference internal" href="overview/functionality.html#encryption-and-decryption">3.3.5. Encryption and decryption</a></li>
122<li class="toctree-l3"><a class="reference internal" href="overview/functionality.html#authenticated-encryption-aead">3.3.6. Authenticated encryption (AEAD)</a></li>
123<li class="toctree-l3"><a class="reference internal" href="overview/functionality.html#key-derivation">3.3.7. Key derivation</a></li>
124<li class="toctree-l3"><a class="reference internal" href="overview/functionality.html#example-of-the-symmetric-cryptography-api">3.3.8. Example of the symmetric cryptography API</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200125</ul>
126</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100127<li class="toctree-l2"><a class="reference internal" href="overview/functionality.html#asymmetric-cryptography">3.4. Asymmetric cryptography</a><ul>
128<li class="toctree-l3"><a class="reference internal" href="overview/functionality.html#asymmetric-encryption">3.4.1. Asymmetric encryption</a></li>
129<li class="toctree-l3"><a class="reference internal" href="overview/functionality.html#hash-and-sign">3.4.2. Hash-and-sign</a></li>
130<li class="toctree-l3"><a class="reference internal" href="overview/functionality.html#key-agreement">3.4.3. Key agreement</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200131</ul>
132</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100133<li class="toctree-l2"><a class="reference internal" href="overview/functionality.html#randomness-and-key-generation">3.5. Randomness and key generation</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200134</ul>
135</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100136<li class="toctree-l1"><a class="reference internal" href="overview/sample-arch.html">4. Sample architectures</a><ul>
137<li class="toctree-l2"><a class="reference internal" href="overview/sample-arch.html#single-partition-architecture">4.1. Single-partition architecture</a></li>
138<li class="toctree-l2"><a class="reference internal" href="overview/sample-arch.html#cryptographic-token-and-single-application-processor">4.2. Cryptographic token and single-application processor</a></li>
139<li class="toctree-l2"><a class="reference internal" href="overview/sample-arch.html#cryptoprocessor-with-no-key-storage">4.3. Cryptoprocessor with no key storage</a></li>
140<li class="toctree-l2"><a class="reference internal" href="overview/sample-arch.html#multi-client-cryptoprocessor">4.4. Multi-client cryptoprocessor</a></li>
141<li class="toctree-l2"><a class="reference internal" href="overview/sample-arch.html#multi-cryptoprocessor-architecture">4.5. Multi-cryptoprocessor architecture</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200142</ul>
143</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100144<li class="toctree-l1"><a class="reference internal" href="overview/conventions.html">5. Library conventions</a><ul>
145<li class="toctree-l2"><a class="reference internal" href="overview/conventions.html#error-handling">5.1. Error handling</a><ul>
146<li class="toctree-l3"><a class="reference internal" href="overview/conventions.html#return-status">5.1.1. Return status</a></li>
147<li class="toctree-l3"><a class="reference internal" href="overview/conventions.html#behavior-on-error">5.1.2. Behavior on error</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200148</ul>
149</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100150<li class="toctree-l2"><a class="reference internal" href="overview/conventions.html#parameter-conventions">5.2. Parameter conventions</a><ul>
151<li class="toctree-l3"><a class="reference internal" href="overview/conventions.html#pointer-conventions">5.2.1. Pointer conventions</a></li>
152<li class="toctree-l3"><a class="reference internal" href="overview/conventions.html#input-buffer-sizes">5.2.2. Input buffer sizes</a></li>
153<li class="toctree-l3"><a class="reference internal" href="overview/conventions.html#output-buffer-sizes">5.2.3. Output buffer sizes</a></li>
154<li class="toctree-l3"><a class="reference internal" href="overview/conventions.html#overlap-between-parameters">5.2.4. Overlap between parameters</a></li>
155<li class="toctree-l3"><a class="reference internal" href="overview/conventions.html#stability-of-parameters">5.2.5. Stability of parameters</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200156</ul>
157</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100158<li class="toctree-l2"><a class="reference internal" href="overview/conventions.html#key-types-and-algorithms">5.3. Key types and algorithms</a><ul>
159<li class="toctree-l3"><a class="reference internal" href="overview/conventions.html#structure-of-key-and-algorithm-types">5.3.1. Structure of key and algorithm types</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200160</ul>
161</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100162<li class="toctree-l2"><a class="reference internal" href="overview/conventions.html#concurrent-calls">5.4. Concurrent calls</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200163</ul>
164</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100165<li class="toctree-l1"><a class="reference internal" href="overview/implementation.html">6. Implementation considerations</a><ul>
166<li class="toctree-l2"><a class="reference internal" href="overview/implementation.html#implementation-specific-aspects-of-the-interface">6.1. Implementation-specific aspects of the interface</a><ul>
167<li class="toctree-l3"><a class="reference internal" href="overview/implementation.html#implementation-profile">6.1.1. Implementation profile</a></li>
168<li class="toctree-l3"><a class="reference internal" href="overview/implementation.html#implementation-specific-types">6.1.2. Implementation-specific types</a></li>
169<li class="toctree-l3"><a class="reference internal" href="overview/implementation.html#implementation-specific-macros">6.1.3. Implementation-specific macros</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200170</ul>
171</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100172<li class="toctree-l2"><a class="reference internal" href="overview/implementation.html#porting-to-a-platform">6.2. Porting to a platform</a><ul>
173<li class="toctree-l3"><a class="reference internal" href="overview/implementation.html#platform-assumptions">6.2.1. Platform assumptions</a></li>
174<li class="toctree-l3"><a class="reference internal" href="overview/implementation.html#platform-specific-types">6.2.2. Platform-specific types</a></li>
175<li class="toctree-l3"><a class="reference internal" href="overview/implementation.html#cryptographic-hardware-support">6.2.3. Cryptographic hardware support</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200176</ul>
177</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100178<li class="toctree-l2"><a class="reference internal" href="overview/implementation.html#security-requirements-and-recommendations">6.3. Security requirements and recommendations</a><ul>
179<li class="toctree-l3"><a class="reference internal" href="overview/implementation.html#error-detection">6.3.1. Error detection</a></li>
180<li class="toctree-l3"><a class="reference internal" href="overview/implementation.html#indirect-object-references">6.3.2. Indirect object references</a></li>
181<li class="toctree-l3"><a class="reference internal" href="overview/implementation.html#memory-cleanup">6.3.3. Memory cleanup</a></li>
182<li class="toctree-l3"><a class="reference internal" href="overview/implementation.html#managing-key-material">6.3.4. Managing key material</a></li>
183<li class="toctree-l3"><a class="reference internal" href="overview/implementation.html#safe-outputs-on-error">6.3.5. Safe outputs on error</a></li>
184<li class="toctree-l3"><a class="reference internal" href="overview/implementation.html#attack-resistance">6.3.6. Attack resistance</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200185</ul>
186</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100187<li class="toctree-l2"><a class="reference internal" href="overview/implementation.html#other-implementation-considerations">6.4. Other implementation considerations</a><ul>
188<li class="toctree-l3"><a class="reference internal" href="overview/implementation.html#philosophy-of-resource-management">6.4.1. Philosophy of resource management</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200189</ul>
190</li>
191</ul>
192</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100193<li class="toctree-l1"><a class="reference internal" href="overview/usage.html">7. Usage considerations</a><ul>
194<li class="toctree-l2"><a class="reference internal" href="overview/usage.html#security-recommendations">7.1. Security recommendations</a><ul>
195<li class="toctree-l3"><a class="reference internal" href="overview/usage.html#always-check-for-errors">7.1.1. Always check for errors</a></li>
196<li class="toctree-l3"><a class="reference internal" href="overview/usage.html#shared-memory-and-concurrency">7.1.2. Shared memory and concurrency</a></li>
197<li class="toctree-l3"><a class="reference internal" href="overview/usage.html#cleaning-up-after-use">7.1.3. Cleaning up after use</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200198</ul>
199</li>
200</ul>
201</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100202<li class="toctree-l1"><a class="reference internal" href="api/library/index.html">8. Library management reference</a><ul>
203<li class="toctree-l2"><a class="reference internal" href="api/library/status.html">8.1. PSA status codes</a><ul>
204<li class="toctree-l3"><a class="reference internal" href="api/library/status.html#status-type">8.1.1. Status type</a></li>
205<li class="toctree-l3"><a class="reference internal" href="api/library/status.html#success-codes">8.1.2. Success codes</a></li>
206<li class="toctree-l3"><a class="reference internal" href="api/library/status.html#error-codes">8.1.3. Error codes</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200207</ul>
208</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100209<li class="toctree-l2"><a class="reference internal" href="api/library/library.html">8.2. PSA Crypto library</a><ul>
210<li class="toctree-l3"><a class="reference internal" href="api/library/library.html#api-version">8.2.1. API version</a></li>
211<li class="toctree-l3"><a class="reference internal" href="api/library/library.html#library-initialization">8.2.2. Library initialization</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200212</ul>
213</li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200214</ul>
215</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100216<li class="toctree-l1"><a class="reference internal" href="api/keys/index.html">9. Key management reference</a><ul>
217<li class="toctree-l2"><a class="reference internal" href="api/keys/attributes.html">9.1. Key attributes</a><ul>
218<li class="toctree-l3"><a class="reference internal" href="api/keys/attributes.html#managing-key-attributes">9.1.1. Managing key attributes</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200219</ul>
220</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100221<li class="toctree-l2"><a class="reference internal" href="api/keys/types.html">9.2. Key types</a><ul>
222<li class="toctree-l3"><a class="reference internal" href="api/keys/types.html#key-type-encoding">9.2.1. Key type encoding</a></li>
223<li class="toctree-l3"><a class="reference internal" href="api/keys/types.html#key-categories">9.2.2. Key categories</a></li>
224<li class="toctree-l3"><a class="reference internal" href="api/keys/types.html#symmetric-keys">9.2.3. Symmetric keys</a></li>
225<li class="toctree-l3"><a class="reference internal" href="api/keys/types.html#rsa-keys">9.2.4. RSA keys</a></li>
226<li class="toctree-l3"><a class="reference internal" href="api/keys/types.html#elliptic-curve-keys">9.2.5. Elliptic Curve keys</a></li>
227<li class="toctree-l3"><a class="reference internal" href="api/keys/types.html#diffie-hellman-keys">9.2.6. Diffie Hellman keys</a></li>
228<li class="toctree-l3"><a class="reference internal" href="api/keys/types.html#attribute-accessors">9.2.7. Attribute accessors</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200229</ul>
230</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100231<li class="toctree-l2"><a class="reference internal" href="api/keys/lifetimes.html">9.3. Key lifetimes</a><ul>
232<li class="toctree-l3"><a class="reference internal" href="api/keys/lifetimes.html#volatile-keys">9.3.1. Volatile keys</a></li>
233<li class="toctree-l3"><a class="reference internal" href="api/keys/lifetimes.html#persistent-keys">9.3.2. Persistent keys</a></li>
234<li class="toctree-l3"><a class="reference internal" href="api/keys/lifetimes.html#lifetime-encodings">9.3.3. Lifetime encodings</a></li>
235<li class="toctree-l3"><a class="reference internal" href="api/keys/lifetimes.html#lifetime-values">9.3.4. Lifetime values</a></li>
236<li class="toctree-l3"><a class="reference internal" href="api/keys/lifetimes.html#attribute-accessors">9.3.5. Attribute accessors</a></li>
237<li class="toctree-l3"><a class="reference internal" href="api/keys/lifetimes.html#support-macros">9.3.6. Support macros</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200238</ul>
239</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100240<li class="toctree-l2"><a class="reference internal" href="api/keys/ids.html">9.4. Key identifiers</a><ul>
241<li class="toctree-l3"><a class="reference internal" href="api/keys/ids.html#key-identifier-type">9.4.1. Key identifier type</a></li>
242<li class="toctree-l3"><a class="reference internal" href="api/keys/ids.html#attribute-accessors">9.4.2. Attribute accessors</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200243</ul>
244</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100245<li class="toctree-l2"><a class="reference internal" href="api/keys/policy.html">9.5. Key policies</a><ul>
246<li class="toctree-l3"><a class="reference internal" href="api/keys/policy.html#permitted-algorithms">9.5.1. Permitted algorithms</a></li>
247<li class="toctree-l3"><a class="reference internal" href="api/keys/policy.html#key-usage-flags">9.5.2. Key usage flags</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200248</ul>
249</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100250<li class="toctree-l2"><a class="reference internal" href="api/keys/management.html">9.6. Key management functions</a><ul>
251<li class="toctree-l3"><a class="reference internal" href="api/keys/management.html#key-creation">9.6.1. Key creation</a></li>
252<li class="toctree-l3"><a class="reference internal" href="api/keys/management.html#key-destruction">9.6.2. Key destruction</a></li>
253<li class="toctree-l3"><a class="reference internal" href="api/keys/management.html#key-export">9.6.3. Key export</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200254</ul>
255</li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200256</ul>
257</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100258<li class="toctree-l1"><a class="reference internal" href="api/ops/index.html">10. Cryptographic operation reference</a><ul>
259<li class="toctree-l2"><a class="reference internal" href="api/ops/algorithms.html">10.1. Algorithms</a><ul>
260<li class="toctree-l3"><a class="reference internal" href="api/ops/algorithms.html#algorithm-encoding">10.1.1. Algorithm encoding</a></li>
261<li class="toctree-l3"><a class="reference internal" href="api/ops/algorithms.html#algorithm-categories">10.1.2. Algorithm categories</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200262</ul>
263</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100264<li class="toctree-l2"><a class="reference internal" href="api/ops/hashes.html">10.2. Message digests</a><ul>
265<li class="toctree-l3"><a class="reference internal" href="api/ops/hashes.html#hash-algorithms">10.2.1. Hash algorithms</a></li>
266<li class="toctree-l3"><a class="reference internal" href="api/ops/hashes.html#single-part-hashing-functions">10.2.2. Single-part hashing functions</a></li>
267<li class="toctree-l3"><a class="reference internal" href="api/ops/hashes.html#multi-part-hashing-operations">10.2.3. Multi-part hashing operations</a></li>
268<li class="toctree-l3"><a class="reference internal" href="api/ops/hashes.html#support-macros">10.2.4. Support macros</a></li>
269<li class="toctree-l3"><a class="reference internal" href="api/ops/hashes.html#hash-suspend-state">10.2.5. Hash suspend state</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200270</ul>
271</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100272<li class="toctree-l2"><a class="reference internal" href="api/ops/macs.html">10.3. Message authentication codes (MAC)</a><ul>
273<li class="toctree-l3"><a class="reference internal" href="api/ops/macs.html#mac-algorithms">10.3.1. MAC algorithms</a></li>
274<li class="toctree-l3"><a class="reference internal" href="api/ops/macs.html#single-part-mac-functions">10.3.2. Single-part MAC functions</a></li>
275<li class="toctree-l3"><a class="reference internal" href="api/ops/macs.html#multi-part-mac-operations">10.3.3. Multi-part MAC operations</a></li>
276<li class="toctree-l3"><a class="reference internal" href="api/ops/macs.html#support-macros">10.3.4. Support macros</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200277</ul>
278</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100279<li class="toctree-l2"><a class="reference internal" href="api/ops/ciphers.html">10.4. Unauthenticated ciphers</a><ul>
280<li class="toctree-l3"><a class="reference internal" href="api/ops/ciphers.html#cipher-algorithms">10.4.1. Cipher algorithms</a></li>
281<li class="toctree-l3"><a class="reference internal" href="api/ops/ciphers.html#single-part-cipher-functions">10.4.2. Single-part cipher functions</a></li>
282<li class="toctree-l3"><a class="reference internal" href="api/ops/ciphers.html#multi-part-cipher-operations">10.4.3. Multi-part cipher operations</a></li>
283<li class="toctree-l3"><a class="reference internal" href="api/ops/ciphers.html#support-macros">10.4.4. Support macros</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200284</ul>
285</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100286<li class="toctree-l2"><a class="reference internal" href="api/ops/aead.html">10.5. Authenticated encryption with associated data (AEAD)</a><ul>
287<li class="toctree-l3"><a class="reference internal" href="api/ops/aead.html#aead-algorithms">10.5.1. AEAD algorithms</a></li>
288<li class="toctree-l3"><a class="reference internal" href="api/ops/aead.html#single-part-aead-functions">10.5.2. Single-part AEAD functions</a></li>
289<li class="toctree-l3"><a class="reference internal" href="api/ops/aead.html#multi-part-aead-operations">10.5.3. Multi-part AEAD operations</a></li>
290<li class="toctree-l3"><a class="reference internal" href="api/ops/aead.html#support-macros">10.5.4. Support macros</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200291</ul>
292</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100293<li class="toctree-l2"><a class="reference internal" href="api/ops/kdf.html">10.6. Key derivation</a><ul>
294<li class="toctree-l3"><a class="reference internal" href="api/ops/kdf.html#key-derivation-algorithms">10.6.1. Key derivation algorithms</a></li>
295<li class="toctree-l3"><a class="reference internal" href="api/ops/kdf.html#input-step-types">10.6.2. Input step types</a></li>
296<li class="toctree-l3"><a class="reference internal" href="api/ops/kdf.html#key-derivation-functions">10.6.3. Key derivation functions</a></li>
297<li class="toctree-l3"><a class="reference internal" href="api/ops/kdf.html#support-macros">10.6.4. Support macros</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200298</ul>
299</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100300<li class="toctree-l2"><a class="reference internal" href="api/ops/sign.html">10.7. Asymmetric signature</a><ul>
301<li class="toctree-l3"><a class="reference internal" href="api/ops/sign.html#asymmetric-signature-algorithms">10.7.1. Asymmetric signature algorithms</a></li>
302<li class="toctree-l3"><a class="reference internal" href="api/ops/sign.html#asymmetric-signature-functions">10.7.2. Asymmetric signature functions</a></li>
303<li class="toctree-l3"><a class="reference internal" href="api/ops/sign.html#support-macros">10.7.3. Support macros</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200304</ul>
305</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100306<li class="toctree-l2"><a class="reference internal" href="api/ops/pke.html">10.8. Asymmetric encryption</a><ul>
307<li class="toctree-l3"><a class="reference internal" href="api/ops/pke.html#asymmetric-encryption-algorithms">10.8.1. Asymmetric encryption algorithms</a></li>
308<li class="toctree-l3"><a class="reference internal" href="api/ops/pke.html#asymmetric-encryption-functions">10.8.2. Asymmetric encryption functions</a></li>
309<li class="toctree-l3"><a class="reference internal" href="api/ops/pke.html#support-macros">10.8.3. Support macros</a></li>
Gilles Peskine6c723a22020-04-17 16:57:52 +0200310</ul>
311</li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100312<li class="toctree-l2"><a class="reference internal" href="api/ops/ka.html">10.9. Key agreement</a><ul>
313<li class="toctree-l3"><a class="reference internal" href="api/ops/ka.html#key-agreement-algorithms">10.9.1. Key agreement algorithms</a></li>
314<li class="toctree-l3"><a class="reference internal" href="api/ops/ka.html#standalone-key-agreement">10.9.2. Standalone key agreement</a></li>
315<li class="toctree-l3"><a class="reference internal" href="api/ops/ka.html#combining-key-agreement-and-key-derivation">10.9.3. Combining key agreement and key derivation</a></li>
316<li class="toctree-l3"><a class="reference internal" href="api/ops/ka.html#support-macros">10.9.4. Support macros</a></li>
317</ul>
318</li>
319<li class="toctree-l2"><a class="reference internal" href="api/ops/rng.html">10.10. Other cryptographic services</a><ul>
320<li class="toctree-l3"><a class="reference internal" href="api/ops/rng.html#random-number-generation">10.10.1. Random number generation</a></li>
Gilles Peskine6c723a22020-04-17 16:57:52 +0200321</ul>
322</li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200323</ul>
324</li>
325</ul>
326</div>
Gilles Peskine6c723a22020-04-17 16:57:52 +0200327<div class="toctree-wrapper compound">
328<ul>
329<li class="toctree-l1"><a class="reference internal" href="appendix/example_header.html">Example header file</a><ul>
330<li class="toctree-l2"><a class="reference internal" href="appendix/example_header.html#psa-crypto-h">psa/crypto.h</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200331</ul>
Gilles Peskine6c723a22020-04-17 16:57:52 +0200332</li>
333<li class="toctree-l1"><a class="reference internal" href="appendix/specdef_values.html">Example macro implementations</a><ul>
334<li class="toctree-l2"><a class="reference internal" href="appendix/specdef_values.html#algorithm-macros">Algorithm macros</a></li>
335<li class="toctree-l2"><a class="reference internal" href="appendix/specdef_values.html#key-type-macros">Key type macros</a></li>
336<li class="toctree-l2"><a class="reference internal" href="appendix/specdef_values.html#hash-suspend-state-macros">Hash suspend state macros</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200337</ul>
Gilles Peskine6c723a22020-04-17 16:57:52 +0200338</li>
339<li class="toctree-l1"><a class="reference internal" href="appendix/history.html">Changes to the API</a><ul>
Gilles Peskine6c723a22020-04-17 16:57:52 +0200340<li class="toctree-l2"><a class="reference internal" href="appendix/history.html#document-change-history">Document change history</a><ul>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100341<li class="toctree-l3"><a class="reference internal" href="appendix/history.html#changes-between-1-0-0-and-1-0-1">Changes between <em>1.0.0</em> and <em>1.0.1</em></a></li>
Gilles Peskine6c723a22020-04-17 16:57:52 +0200342<li class="toctree-l3"><a class="reference internal" href="appendix/history.html#changes-between-1-0-beta-3-and-1-0-0">Changes between <em>1.0 beta 3</em> and <em>1.0.0</em></a></li>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100343<li class="toctree-l3"><a class="reference internal" href="appendix/history.html#changes-between-1-0-beta-2-and-1-0-beta-3">Changes between <em>1.0 beta 2</em> and <em>1.0 beta 3</em></a></li>
344<li class="toctree-l3"><a class="reference internal" href="appendix/history.html#changes-between-1-0-beta-1-and-1-0-beta-2">Changes between <em>1.0 beta 1</em> and <em>1.0 beta 2</em></a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200345</ul>
Gilles Peskine6c723a22020-04-17 16:57:52 +0200346</li>
347<li class="toctree-l2"><a class="reference internal" href="appendix/history.html#planned-changes-for-version-1-0-x">Planned changes for version 1.0.x</a></li>
348<li class="toctree-l2"><a class="reference internal" href="appendix/history.html#future-additions">Future additions</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200349</ul>
Gilles Peskine6c723a22020-04-17 16:57:52 +0200350</li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200351</ul>
Gilles Peskine89f0a532019-01-31 11:47:57 +0100352</div>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100353</div>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200354
355
356 </div>
Gilles Peskine89f0a532019-01-31 11:47:57 +0100357 </div>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200358 </div>
359 <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100360 <div class="sphinxsidebarwrapper"><h3><a href="#"><b>PSA Crypto API</b></a></h3>
361IHI 0086<br/>
362Non-confidential<br/>
363Version 1.0.1
364<span style="color: red; font-weight: bold;"></span>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200365<ul>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100366<li class="toctree-l1"><a class="reference internal" href="about.html">About this document</a></li>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200367</ul>
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100368<ul>
369<li class="toctree-l1"><a class="reference internal" href="overview/intro.html">1. Introduction</a></li>
370<li class="toctree-l1"><a class="reference internal" href="overview/goals.html">2. Design goals</a></li>
371<li class="toctree-l1"><a class="reference internal" href="overview/functionality.html">3. Functionality overview</a></li>
372<li class="toctree-l1"><a class="reference internal" href="overview/sample-arch.html">4. Sample architectures</a></li>
373<li class="toctree-l1"><a class="reference internal" href="overview/conventions.html">5. Library conventions</a></li>
374<li class="toctree-l1"><a class="reference internal" href="overview/implementation.html">6. Implementation considerations</a></li>
375<li class="toctree-l1"><a class="reference internal" href="overview/usage.html">7. Usage considerations</a></li>
376<li class="toctree-l1"><a class="reference internal" href="api/library/index.html">8. Library management reference</a></li>
377<li class="toctree-l1"><a class="reference internal" href="api/keys/index.html">9. Key management reference</a></li>
378<li class="toctree-l1"><a class="reference internal" href="api/ops/index.html">10. Cryptographic operation reference</a></li>
379</ul>
380<ul>
381<li class="toctree-l1"><a class="reference internal" href="appendix/example_header.html">Example header file</a></li>
382<li class="toctree-l1"><a class="reference internal" href="appendix/specdef_values.html">Example macro implementations</a></li>
383<li class="toctree-l1"><a class="reference internal" href="appendix/history.html">Changes to the API</a></li>
384</ul>
385<ul>
386<li class="toctree-l1"><a class="reference internal" href="psa_c-identifiers.html">Index of API elements</a></li>
387</ul>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200388<div id="searchbox" style="display: none" role="search">
389 <h3>Quick search</h3>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200390 <form class="search" action="search.html" method="get">
Gilles Peskine6c723a22020-04-17 16:57:52 +0200391 <div><input type="text" name="q" /></div>
392 <div><input type="submit" value="Go" /></div>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200393 <input type="hidden" name="check_keywords" value="yes" />
394 <input type="hidden" name="area" value="default" />
395 </form>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200396</div>
397<script type="text/javascript">$('#searchbox').show(0);</script>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200398 </div>
399 </div>
400 <div class="clearer"></div>
401 </div>
402 <div class="footer">
Gilles Peskinec2db5f02021-01-18 20:36:53 +0100403 &copy; 2018-2020, Arm Limited or its affiliates. All rights reserved.
Gilles Peskine06995ff2019-05-21 19:50:19 +0200404
405 |
Gilles Peskine6c723a22020-04-17 16:57:52 +0200406 Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.7</a>
407 &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
Gilles Peskine06995ff2019-05-21 19:50:19 +0200408
Gilles Peskine06995ff2019-05-21 19:50:19 +0200409 </div>
410
411
412
413
414 </body>
415</html>