blob: 6eb37691315c0fe32c80a31666e5bc370888ca42 [file] [log] [blame]
Jaeden Ameroe54e6932018-08-06 16:19:58 +01001<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6<meta name="generator" content="Doxygen 1.8.13"/>
7<meta name="viewport" content="width=device-width, initial-scale=1"/>
8<title>Platform Security Architecture — cryptography and keystore interface: Key lifetime</title>
9<link href="tabs.css" rel="stylesheet" type="text/css"/>
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<link href="search/search.css" rel="stylesheet" type="text/css"/>
13<script type="text/javascript" src="search/searchdata.js"></script>
14<script type="text/javascript" src="search/search.js"></script>
15<link href="doxygen.css" rel="stylesheet" type="text/css" />
16</head>
17<body>
18<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
19<div id="titlearea">
20<table cellspacing="0" cellpadding="0">
21 <tbody>
22 <tr style="height: 56px;">
23 <td id="projectalign" style="padding-left: 0.5em;">
24 <div id="projectname">Platform Security Architecture — cryptography and keystore interface
25 &#160;<span id="projectnumber">Working draft</span>
26 </div>
27 </td>
28 </tr>
29 </tbody>
30</table>
31</div>
32<!-- end header part -->
33<!-- Generated by Doxygen 1.8.13 -->
34<script type="text/javascript">
35var searchBox = new SearchBox("searchBox", "search",false,'Search');
36</script>
37<script type="text/javascript" src="menudata.js"></script>
38<script type="text/javascript" src="menu.js"></script>
39<script type="text/javascript">
40$(function() {
41 initMenu('',true,false,'search.php','Search');
42 $(document).ready(function() { init_search(); });
43});
44</script>
45<div id="main-nav"></div>
46</div><!-- top -->
47<!-- window showing the filter options -->
48<div id="MSearchSelectWindow"
49 onmouseover="return searchBox.OnSearchSelectShow()"
50 onmouseout="return searchBox.OnSearchSelectHide()"
51 onkeydown="return searchBox.OnSearchSelectKey(event)">
52</div>
53
54<!-- iframe showing the search results (closed by default) -->
55<div id="MSearchResultsWindow">
56<iframe src="javascript:void(0)" frameborder="0"
57 name="MSearchResults" id="MSearchResults">
58</iframe>
59</div>
60
61<div class="header">
62 <div class="summary">
63<a href="#define-members">Macros</a> &#124;
64<a href="#typedef-members">Typedefs</a> &#124;
65<a href="#func-members">Functions</a> </div>
66 <div class="headertitle">
67<div class="title">Key lifetime</div> </div>
68</div><!--header-->
69<div class="contents">
70<table class="memberdecls">
71<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
72Macros</h2></td></tr>
73<tr class="memitem:ga8b438870ba69489b685730d346455108"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__persistence.html#ga8b438870ba69489b685730d346455108">PSA_KEY_LIFETIME_VOLATILE</a>&#160;&#160;&#160;((<a class="el" href="group__persistence.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a>)0x00000000)</td></tr>
74<tr class="separator:ga8b438870ba69489b685730d346455108"><td class="memSeparator" colspan="2">&#160;</td></tr>
75<tr class="memitem:ga3713a01c5fcd5f7eae46ff22ceaf6d02"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__persistence.html#ga3713a01c5fcd5f7eae46ff22ceaf6d02">PSA_KEY_LIFETIME_PERSISTENT</a>&#160;&#160;&#160;((<a class="el" href="group__persistence.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a>)0x00000001)</td></tr>
76<tr class="separator:ga3713a01c5fcd5f7eae46ff22ceaf6d02"><td class="memSeparator" colspan="2">&#160;</td></tr>
77<tr class="memitem:gae6b8443238ef1900cf132550d7df557f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__persistence.html#gae6b8443238ef1900cf132550d7df557f">PSA_KEY_LIFETIME_WRITE_ONCE</a>&#160;&#160;&#160;((<a class="el" href="group__persistence.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a>)0x7fffffff)</td></tr>
78<tr class="separator:gae6b8443238ef1900cf132550d7df557f"><td class="memSeparator" colspan="2">&#160;</td></tr>
79</table><table class="memberdecls">
80<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
81Typedefs</h2></td></tr>
82<tr class="memitem:ga6821ff6dd39dc2bc370ded760ad8b0cf"><td class="memItemLeft" align="right" valign="top">typedef uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__persistence.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a></td></tr>
83<tr class="separator:ga6821ff6dd39dc2bc370ded760ad8b0cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
84</table><table class="memberdecls">
85<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
86Functions</h2></td></tr>
87<tr class="memitem:gaf0daaa1dba14dc324ca83dfe1495a5e2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__basic.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__persistence.html#gaf0daaa1dba14dc324ca83dfe1495a5e2">psa_get_key_lifetime</a> (<a class="el" href="group__platform.html#gac3da92a6b8a7f0c01dc348f8e0432e4c">psa_key_slot_t</a> key, <a class="el" href="group__persistence.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a> *lifetime)</td></tr>
88<tr class="memdesc:gaf0daaa1dba14dc324ca83dfe1495a5e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the lifetime of a key slot. <a href="#gaf0daaa1dba14dc324ca83dfe1495a5e2">More...</a><br /></td></tr>
89<tr class="separator:gaf0daaa1dba14dc324ca83dfe1495a5e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
90<tr class="memitem:ga1bd1ee6d00ebd9962fc6ad72cbd22ef8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__basic.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__persistence.html#ga1bd1ee6d00ebd9962fc6ad72cbd22ef8">psa_set_key_lifetime</a> (<a class="el" href="group__platform.html#gac3da92a6b8a7f0c01dc348f8e0432e4c">psa_key_slot_t</a> key, <a class="el" href="group__persistence.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a> lifetime)</td></tr>
91<tr class="memdesc:ga1bd1ee6d00ebd9962fc6ad72cbd22ef8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Change the lifetime of a key slot. <a href="#ga1bd1ee6d00ebd9962fc6ad72cbd22ef8">More...</a><br /></td></tr>
92<tr class="separator:ga1bd1ee6d00ebd9962fc6ad72cbd22ef8"><td class="memSeparator" colspan="2">&#160;</td></tr>
93</table>
94<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
95<h2 class="groupheader">Macro Definition Documentation</h2>
96<a id="ga3713a01c5fcd5f7eae46ff22ceaf6d02"></a>
97<h2 class="memtitle"><span class="permalink"><a href="#ga3713a01c5fcd5f7eae46ff22ceaf6d02">&#9670;&nbsp;</a></span>PSA_KEY_LIFETIME_PERSISTENT</h2>
98
99<div class="memitem">
100<div class="memproto">
101 <table class="memname">
102 <tr>
103 <td class="memname">#define PSA_KEY_LIFETIME_PERSISTENT&#160;&#160;&#160;((<a class="el" href="group__persistence.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a>)0x00000001)</td>
104 </tr>
105 </table>
106</div><div class="memdoc">
107<p>A persistent key slot retains its content as long as it is not explicitly destroyed. </p>
108
109</div>
110</div>
111<a id="ga8b438870ba69489b685730d346455108"></a>
112<h2 class="memtitle"><span class="permalink"><a href="#ga8b438870ba69489b685730d346455108">&#9670;&nbsp;</a></span>PSA_KEY_LIFETIME_VOLATILE</h2>
113
114<div class="memitem">
115<div class="memproto">
116 <table class="memname">
117 <tr>
118 <td class="memname">#define PSA_KEY_LIFETIME_VOLATILE&#160;&#160;&#160;((<a class="el" href="group__persistence.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a>)0x00000000)</td>
119 </tr>
120 </table>
121</div><div class="memdoc">
122<p>A volatile key slot retains its content as long as the application is running. It is guaranteed to be erased on a power reset. </p>
123
124</div>
125</div>
126<a id="gae6b8443238ef1900cf132550d7df557f"></a>
127<h2 class="memtitle"><span class="permalink"><a href="#gae6b8443238ef1900cf132550d7df557f">&#9670;&nbsp;</a></span>PSA_KEY_LIFETIME_WRITE_ONCE</h2>
128
129<div class="memitem">
130<div class="memproto">
131 <table class="memname">
132 <tr>
133 <td class="memname">#define PSA_KEY_LIFETIME_WRITE_ONCE&#160;&#160;&#160;((<a class="el" href="group__persistence.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a>)0x7fffffff)</td>
134 </tr>
135 </table>
136</div><div class="memdoc">
137<p>A write-once key slot may not be modified once a key has been set. It will retain its content as long as the device remains operational. </p>
138
139</div>
140</div>
141<h2 class="groupheader">Typedef Documentation</h2>
142<a id="ga6821ff6dd39dc2bc370ded760ad8b0cf"></a>
143<h2 class="memtitle"><span class="permalink"><a href="#ga6821ff6dd39dc2bc370ded760ad8b0cf">&#9670;&nbsp;</a></span>psa_key_lifetime_t</h2>
144
145<div class="memitem">
146<div class="memproto">
147 <table class="memname">
148 <tr>
149 <td class="memname">typedef uint32_t <a class="el" href="group__persistence.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a></td>
150 </tr>
151 </table>
152</div><div class="memdoc">
153<p>Encoding of key lifetimes. </p>
154
155</div>
156</div>
157<h2 class="groupheader">Function Documentation</h2>
158<a id="gaf0daaa1dba14dc324ca83dfe1495a5e2"></a>
159<h2 class="memtitle"><span class="permalink"><a href="#gaf0daaa1dba14dc324ca83dfe1495a5e2">&#9670;&nbsp;</a></span>psa_get_key_lifetime()</h2>
160
161<div class="memitem">
162<div class="memproto">
163 <table class="memname">
164 <tr>
165 <td class="memname"><a class="el" href="group__basic.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> psa_get_key_lifetime </td>
166 <td>(</td>
167 <td class="paramtype"><a class="el" href="group__platform.html#gac3da92a6b8a7f0c01dc348f8e0432e4c">psa_key_slot_t</a>&#160;</td>
168 <td class="paramname"><em>key</em>, </td>
169 </tr>
170 <tr>
171 <td class="paramkey"></td>
172 <td></td>
173 <td class="paramtype"><a class="el" href="group__persistence.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a> *&#160;</td>
174 <td class="paramname"><em>lifetime</em>&#160;</td>
175 </tr>
176 <tr>
177 <td></td>
178 <td>)</td>
179 <td></td><td></td>
180 </tr>
181 </table>
182</div><div class="memdoc">
183
184<p>Retrieve the lifetime of a key slot. </p>
185<p>The assignment of lifetimes to slots is implementation-dependent.</p>
186<dl class="params"><dt>Parameters</dt><dd>
187 <table class="params">
188 <tr><td class="paramdir"></td><td class="paramname">key</td><td>Slot to query. </td></tr>
189 <tr><td class="paramdir">[out]</td><td class="paramname">lifetime</td><td>On success, the lifetime value.</td></tr>
190 </table>
191 </dd>
192</dl>
193<dl class="retval"><dt>Return values</dt><dd>
194 <table class="retval">
195 <tr><td class="paramname"><a class="el" href="group__basic.html#ga4cc859e2c66ca381c7418db3527a65e1">PSA_SUCCESS</a></td><td>Success. </td></tr>
196 <tr><td class="paramname"><a class="el" href="group__basic.html#ga798df25a505ebf931f7bec1f80f1f85f">PSA_ERROR_INVALID_ARGUMENT</a></td><td>The key slot is invalid. </td></tr>
197 <tr><td class="paramname"><a class="el" href="group__basic.html#ga5cdb6948371d49e916106249020ea3f7">PSA_ERROR_COMMUNICATION_FAILURE</a></td><td></td></tr>
198 <tr><td class="paramname"><a class="el" href="group__basic.html#ga08b10e70fa5ff0b05c631d9f8f6b2c6b">PSA_ERROR_HARDWARE_FAILURE</a></td><td></td></tr>
199 <tr><td class="paramname"><a class="el" href="group__basic.html#ga2c5dda1485cb54f2385cb9c1279a7004">PSA_ERROR_TAMPERING_DETECTED</a></td><td></td></tr>
200 </table>
201 </dd>
202</dl>
203
204</div>
205</div>
206<a id="ga1bd1ee6d00ebd9962fc6ad72cbd22ef8"></a>
207<h2 class="memtitle"><span class="permalink"><a href="#ga1bd1ee6d00ebd9962fc6ad72cbd22ef8">&#9670;&nbsp;</a></span>psa_set_key_lifetime()</h2>
208
209<div class="memitem">
210<div class="memproto">
211 <table class="memname">
212 <tr>
213 <td class="memname"><a class="el" href="group__basic.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> psa_set_key_lifetime </td>
214 <td>(</td>
215 <td class="paramtype"><a class="el" href="group__platform.html#gac3da92a6b8a7f0c01dc348f8e0432e4c">psa_key_slot_t</a>&#160;</td>
216 <td class="paramname"><em>key</em>, </td>
217 </tr>
218 <tr>
219 <td class="paramkey"></td>
220 <td></td>
221 <td class="paramtype"><a class="el" href="group__persistence.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a>&#160;</td>
222 <td class="paramname"><em>lifetime</em>&#160;</td>
223 </tr>
224 <tr>
225 <td></td>
226 <td>)</td>
227 <td></td><td></td>
228 </tr>
229 </table>
230</div><div class="memdoc">
231
232<p>Change the lifetime of a key slot. </p>
233<p>Whether the lifetime of a key slot can be changed at all, and if so whether the lifetime of an occupied key slot can be changed, is implementation-dependent.</p>
234<dl class="params"><dt>Parameters</dt><dd>
235 <table class="params">
236 <tr><td class="paramname">key</td><td>Slot whose lifetime is to be changed. </td></tr>
237 <tr><td class="paramname">lifetime</td><td>The lifetime value to set for the given key slot.</td></tr>
238 </table>
239 </dd>
240</dl>
241<dl class="retval"><dt>Return values</dt><dd>
242 <table class="retval">
243 <tr><td class="paramname"><a class="el" href="group__basic.html#ga4cc859e2c66ca381c7418db3527a65e1">PSA_SUCCESS</a></td><td>Success. </td></tr>
244 <tr><td class="paramname"><a class="el" href="group__basic.html#ga798df25a505ebf931f7bec1f80f1f85f">PSA_ERROR_INVALID_ARGUMENT</a></td><td>The key slot is invalid, or the lifetime value is invalid. </td></tr>
245 <tr><td class="paramname"><a class="el" href="group__basic.html#ga1dcc6d130633ed5db8942257581b55dd">PSA_ERROR_NOT_SUPPORTED</a></td><td>The implementation does not support the specified lifetime value, at least for the specified key slot. </td></tr>
246 <tr><td class="paramname"><a class="el" href="group__basic.html#gac2fee3a51249fbea45360aaa911f3e58">PSA_ERROR_OCCUPIED_SLOT</a></td><td>The slot contains a key, and the implementation does not support changing the lifetime of an occupied slot. </td></tr>
247 <tr><td class="paramname"><a class="el" href="group__basic.html#ga5cdb6948371d49e916106249020ea3f7">PSA_ERROR_COMMUNICATION_FAILURE</a></td><td></td></tr>
248 <tr><td class="paramname"><a class="el" href="group__basic.html#ga08b10e70fa5ff0b05c631d9f8f6b2c6b">PSA_ERROR_HARDWARE_FAILURE</a></td><td></td></tr>
249 <tr><td class="paramname"><a class="el" href="group__basic.html#ga2c5dda1485cb54f2385cb9c1279a7004">PSA_ERROR_TAMPERING_DETECTED</a></td><td></td></tr>
250 </table>
251 </dd>
252</dl>
253
254</div>
255</div>
256</div><!-- contents -->
257<!-- start footer part -->
258<hr class="footer"/><address class="footer"><small>
259Generated by &#160;<a href="http://www.doxygen.org/index.html">
260<img class="footer" src="doxygen.png" alt="doxygen"/>
261</a> 1.8.13
262</small></address>
263</body>
264</html>