Update the rendered documentation to 1.0 beta2
Update the PDF and HTML documentation to PSA Crypto API 1.0 beta2.
Documentation generated from psa-crypto at psa-crypto-api-1.0-beta2
with "make export".
diff --git a/docs/PSA_Cryptography_API_Reference.pdf b/docs/PSA_Cryptography_API_Reference.pdf
deleted file mode 100644
index 4403f35..0000000
--- a/docs/PSA_Cryptography_API_Reference.pdf
+++ /dev/null
Binary files differ
diff --git a/docs/PSA_Cryptography_API_Specification.pdf b/docs/PSA_Cryptography_API_Specification.pdf
index 58e58af..8c7dfe8 100644
--- a/docs/PSA_Cryptography_API_Specification.pdf
+++ b/docs/PSA_Cryptography_API_Specification.pdf
Binary files differ
diff --git a/docs/html/annotated.html b/docs/html/annotated.html
index 85abad1..ea8766a 100644
--- a/docs/html/annotated.html
+++ b/docs/html/annotated.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/classes.html b/docs/html/classes.html
index e19d394..8382069 100644
--- a/docs/html/classes.html
+++ b/docs/html/classes.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/crypto_8h.html b/docs/html/crypto_8h.html
index 611ed27..0734526 100644
--- a/docs/html/crypto_8h.html
+++ b/docs/html/crypto_8h.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/crypto_8h_source.html b/docs/html/crypto_8h_source.html
index 4a840c1..f1d6037 100644
--- a/docs/html/crypto_8h_source.html
+++ b/docs/html/crypto_8h_source.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
@@ -90,7 +90,7 @@
<div class="title">crypto.h</div> </div>
</div><!--header-->
<div class="contents">
-<a href="crypto_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">/*</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Copyright (C) 2018, ARM Limited, All Rights Reserved</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * SPDX-License-Identifier: Apache-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License"); you may</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * not use this file except in compliance with the License.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> */</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#ifndef PSA_CRYPTO_H</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#define PSA_CRYPTO_H</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "crypto_platform.h"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <stddef.h></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#ifdef __DOXYGEN_ONLY__</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">/* This __DOXYGEN_ONLY__ block contains mock definitions for things that</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * must be defined in the crypto_platform.h header. These mock definitions</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> * are present in this file as a convenience to generate pretty-printed</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> * documentation that includes those definitions. */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75"> 47</a></span> <span class="keyword">typedef</span> _unsigned_integral_type_ <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#endif </span><span class="comment">/* __DOXYGEN_ONLY__ */</span><span class="preprocessor"></span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">/* The file "crypto_types.h" declares types that encode errors,</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment"> * algorithms, key types, policies, etc. */</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#include "<a class="code" href="crypto__types_8h.html">crypto_types.h</a>"</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">/* The file "crypto_values.h" declares macros to build and analyze values</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment"> * of integral types defined in "crypto_types.h". */</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#include "<a class="code" href="crypto__values_8h.html">crypto_values.h</a>"</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__initialization.html#ga2de150803fc2f7dc6101d5af7e921dd9">psa_crypto_init</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607"> 128</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>psa_key_policy_s <a class="code" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607">psa_key_policy_t</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor">#ifdef __DOXYGEN_ONLY__</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="comment">/* This is an example definition for documentation purposes.</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="comment"> * Implementations should define a suitable value in `crypto_struct.h`.</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="comment"> */</span></div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="group__policy.html#ga5e6bc5f550e88fdc7790f2a75e79f7c5"> 139</a></span> <span class="preprocessor">#define PSA_KEY_POLICY_INIT {0}</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="keyword">static</span> <a class="code" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607">psa_key_policy_t</a> psa_key_policy_init(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="keywordtype">void</span> <a class="code" href="group__policy.html#gac16792fd6d375a5f76d372090df40607">psa_key_policy_set_usage</a>(<a class="code" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607">psa_key_policy_t</a> *policy,</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="group__policy.html#ga7bb9de71337e0e98de843aa7f9b55f25">psa_key_usage_t</a> usage,</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <a class="code" href="group__policy.html#ga7bb9de71337e0e98de843aa7f9b55f25">psa_key_usage_t</a> <a class="code" href="group__policy.html#ga7746662b7503e484774d0ecb5d8ac2ab">psa_key_policy_get_usage</a>(<span class="keyword">const</span> <a class="code" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607">psa_key_policy_t</a> *policy);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> <a class="code" href="group__policy.html#gaadf16b89ace53e1d2cb5bcb0aef24c86">psa_key_policy_get_algorithm</a>(<span class="keyword">const</span> <a class="code" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607">psa_key_policy_t</a> *policy);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__policy.html#ga1e2a6e50b621864f95d438222a3c640b">psa_set_key_policy</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keyword">const</span> <a class="code" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607">psa_key_policy_t</a> *policy);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__policy.html#gaed087d1386b807edee66b2e445ba9111">psa_get_key_policy</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607">psa_key_policy_t</a> *policy);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__key__management.html#ga1e4825ab59260aeb3bdbb3ff07210022">psa_get_key_lifetime</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="code" href="group__key__lifetimes.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a> *lifetime);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__key__management.html#ga40094b77b7a42b9c8e158395113f1a35">psa_allocate_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> *handle);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__key__management.html#gaa9f1c848cf78b80fe2a7b18bb7ccec50">psa_open_key</a>(<a class="code" href="group__key__lifetimes.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a> lifetime,</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="group__key__lifetimes.html#ga11e986351c65bd3dc3c0fe2cd9926e4b">psa_key_id_t</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> *handle);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__key__management.html#ga4108f255d3eaa6d23a7a14b684af8d7c">psa_create_key</a>(<a class="code" href="group__key__lifetimes.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a> lifetime,</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="group__key__lifetimes.html#ga11e986351c65bd3dc3c0fe2cd9926e4b">psa_key_id_t</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> *handle);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__key__management.html#gaa09b720d299dfe6b9f41c36e448078eb">psa_close_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__import__export.html#gac9f999cb4d098663d56095afe81a453a">psa_import_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <a class="code" href="group__crypto__types.html#ga578159487dfc7096cb191b0d2befe628">psa_key_type_t</a> type,</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keyword">const</span> uint8_t *data,</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordtype">size_t</span> data_length);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__import__export.html#ga165085fc1bc7a78b91792fdd94ae102c">psa_destroy_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__import__export.html#gae8939902d6977ea8ad13eb7b4db9a042">psa_get_key_information</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <a class="code" href="group__crypto__types.html#ga578159487dfc7096cb191b0d2befe628">psa_key_type_t</a> *type,</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordtype">size_t</span> *bits);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> </div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__import__export.html#ga091da8d3d39137fd6ad59f2b10234300">psa_set_key_domain_parameters</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <a class="code" href="group__crypto__types.html#ga578159487dfc7096cb191b0d2befe628">psa_key_type_t</a> type,</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keyword">const</span> uint8_t *data,</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordtype">size_t</span> data_length);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> </div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__import__export.html#gae260b92e32ac5d63f7dfc6ffdf6536f7">psa_get_key_domain_parameters</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  uint8_t *data,</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordtype">size_t</span> data_size,</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordtype">size_t</span> *data_length);</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> </div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__import__export.html#ga902b9a7a6cf34d6111668be777b05eaf">psa_export_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  uint8_t *data,</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordtype">size_t</span> data_size,</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="keywordtype">size_t</span> *data_length);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> </div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__import__export.html#gad760d1f0d4e60972c78cbb4c8a528256">psa_export_public_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  uint8_t *data,</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="keywordtype">size_t</span> data_size,</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keywordtype">size_t</span> *data_length);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span> </div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__import__export.html#ga5c1c24176cfb1517a8806235b3162a9d">psa_copy_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> source_handle,</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> target_handle,</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keyword">const</span> <a class="code" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607">psa_key_policy_t</a> *constraint);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> </div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__hash.html#gac69f7f19d96a56c28cf3799d11b12156">psa_hash_compute</a>(<a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  uint8_t *hash,</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordtype">size_t</span> hash_size,</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="keywordtype">size_t</span> *hash_length);</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> </div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__hash.html#ga0bb6dbd3c310648c3cf7d202413ff0bc">psa_hash_compare</a>(<a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <span class="keyword">const</span> uint8_t *hash,</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> hash_length);</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> </div><div class="line"><a name="l00908"></a><span class="lineno"><a class="line" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab"> 908</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>psa_hash_operation_s <a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a>;</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span> </div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span> <span class="preprocessor">#ifdef __DOXYGEN_ONLY__</span></div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> <span class="comment">/* This is an example definition for documentation purposes.</span></div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> <span class="comment"> * Implementations should define a suitable value in `crypto_struct.h`.</span></div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span> <span class="comment"> */</span></div><div class="line"><a name="l00919"></a><span class="lineno"><a class="line" href="group__hash.html#ga6ab7fe8d3500bc2f21be840b4f4f8d1d"> 919</a></span> <span class="preprocessor">#define PSA_HASH_OPERATION_INIT {0}</span></div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> </div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span> <span class="keyword">static</span> <a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a> psa_hash_operation_init(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> </div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__hash.html#ga8d72896cf70fc4d514c5c6b978912515">psa_hash_setup</a>(<a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a> *operation,</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span> </div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__hash.html#ga65b16ef97d7f650899b7db4b7d1112ff">psa_hash_update</a>(<a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a> *operation,</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <span class="keywordtype">size_t</span> input_length);</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span> </div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__hash.html#ga4795fd06a0067b0adcd92e9627b8c97e">psa_hash_finish</a>(<a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a> *operation,</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  uint8_t *hash,</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  <span class="keywordtype">size_t</span> hash_size,</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keywordtype">size_t</span> *hash_length);</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> </div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__hash.html#ga7be923c5700c9c70ef77ee9b76d1a5c0">psa_hash_verify</a>(<a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a> *operation,</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  <span class="keyword">const</span> uint8_t *hash,</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  <span class="keywordtype">size_t</span> hash_length);</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> </div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__hash.html#gab0b4d5f9912a615559497a467b532928">psa_hash_abort</a>(<a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a> *operation);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> </div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__hash.html#ga39673348f3302b4646bd780034a5aeda">psa_hash_clone</a>(<span class="keyword">const</span> <a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a> *source_operation,</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  <a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a> *target_operation);</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span> </div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__MAC.html#gace78d9b51394f9d4f77952963665897a">psa_mac_compute</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  uint8_t *mac,</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  <span class="keywordtype">size_t</span> mac_size,</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  <span class="keywordtype">size_t</span> *mac_length);</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> </div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__MAC.html#ga08e2e8c21bfe762a907266f3bdd1d07c">psa_mac_verify</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  <span class="keyword">const</span> uint8_t *mac,</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> mac_length);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span> </div><div class="line"><a name="l01240"></a><span class="lineno"><a class="line" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37"> 1240</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>psa_mac_operation_s <a class="code" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a>;</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span> </div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span> <span class="preprocessor">#ifdef __DOXYGEN_ONLY__</span></div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span> <span class="comment">/* This is an example definition for documentation purposes.</span></div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> <span class="comment"> * Implementations should define a suitable value in `crypto_struct.h`.</span></div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span> <span class="comment"> */</span></div><div class="line"><a name="l01251"></a><span class="lineno"><a class="line" href="group__MAC.html#ga441b6efc161a4573d06465bd22d9dc2d"> 1251</a></span> <span class="preprocessor">#define PSA_MAC_OPERATION_INIT {0}</span></div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> </div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span> <span class="keyword">static</span> <a class="code" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a> psa_mac_operation_init(<span class="keywordtype">void</span>);</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span> </div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__MAC.html#gad33f2b15119593571ca6b8e7c757ab0e">psa_mac_sign_setup</a>(<a class="code" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a> *operation,</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> </div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__MAC.html#gaa721a59ae6d085ec90c7dc918879a027">psa_mac_verify_setup</a>(<a class="code" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a> *operation,</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span> </div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__MAC.html#ga5560af371497babefe03c9da4e8a1c05">psa_mac_update</a>(<a class="code" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a> *operation,</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>  <span class="keywordtype">size_t</span> input_length);</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span> </div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__MAC.html#gac22bc0125580c96724a09226cfbc97f2">psa_mac_sign_finish</a>(<a class="code" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a> *operation,</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>  uint8_t *mac,</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>  <span class="keywordtype">size_t</span> mac_size,</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>  <span class="keywordtype">size_t</span> *mac_length);</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span> </div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__MAC.html#gac92b2930d6728e1be4d011c05d485822">psa_mac_verify_finish</a>(<a class="code" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a> *operation,</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  <span class="keyword">const</span> uint8_t *mac,</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>  <span class="keywordtype">size_t</span> mac_length);</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> </div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__MAC.html#gacd8dd54855ba1bc0a03f104f252884fd">psa_mac_abort</a>(<a class="code" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a> *operation);</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span> </div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#gac76dda492d9a1ba6b327bff610ec17b2">psa_cipher_encrypt</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>  uint8_t *output,</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>  <span class="keywordtype">size_t</span> output_size,</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>  <span class="keywordtype">size_t</span> *output_length);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span> </div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#ga43d5991711ec45c98af0c1d99f6e0216">psa_cipher_decrypt</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>  uint8_t *output,</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  <span class="keywordtype">size_t</span> output_size,</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>  <span class="keywordtype">size_t</span> *output_length);</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span> </div><div class="line"><a name="l01625"></a><span class="lineno"><a class="line" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa"> 1625</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>psa_cipher_operation_s <a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a>;</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span> </div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span> <span class="preprocessor">#ifdef __DOXYGEN_ONLY__</span></div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span> <span class="comment">/* This is an example definition for documentation purposes.</span></div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span> <span class="comment"> * Implementations should define a suitable value in `crypto_struct.h`.</span></div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span> <span class="comment"> */</span></div><div class="line"><a name="l01636"></a><span class="lineno"><a class="line" href="group__cipher.html#ga2da0541aabf9a4995cf2004e36311919"> 1636</a></span> <span class="preprocessor">#define PSA_CIPHER_OPERATION_INIT {0}</span></div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span> </div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span> <span class="keyword">static</span> <a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a> psa_cipher_operation_init(<span class="keywordtype">void</span>);</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span> </div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#ga2a7fc79a9d150d42dba99f40ee3a185e">psa_cipher_encrypt_setup</a>(<a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a> *operation,</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span> </div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#gaddf8504e5367cd0efb4415bdec004f44">psa_cipher_decrypt_setup</a>(<a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a> *operation,</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span> </div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#ga44857cf5e0c3d134a3c560f8ff5b50aa">psa_cipher_generate_iv</a>(<a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a> *operation,</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *iv,</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>  <span class="keywordtype">size_t</span> iv_size,</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>  <span class="keywordtype">size_t</span> *iv_length);</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span> </div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#ga1359b2101f31637496ce7cc36c6e3d42">psa_cipher_set_iv</a>(<a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a> *operation,</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *iv,</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>  <span class="keywordtype">size_t</span> iv_length);</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span> </div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#gafd0caea99cf1052527e4089d37f5ab91">psa_cipher_update</a>(<a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a> *operation,</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *output,</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>  <span class="keywordtype">size_t</span> output_size,</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>  <span class="keywordtype">size_t</span> *output_length);</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span> </div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#ga1dcb58b8befe23f8a4d7a1d49c99249b">psa_cipher_finish</a>(<a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a> *operation,</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>  uint8_t *output,</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>  <span class="keywordtype">size_t</span> output_size,</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>  <span class="keywordtype">size_t</span> *output_length);</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span> </div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#gaad482cdca2098bca0620596aaa02eaa4">psa_cipher_abort</a>(<a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a> *operation);</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span> </div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#ga44de092cf58bb6c820c5c80a6c51610d">psa_aead_encrypt</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>  <span class="keyword">const</span> uint8_t *nonce,</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>  <span class="keywordtype">size_t</span> nonce_length,</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>  <span class="keyword">const</span> uint8_t *additional_data,</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>  <span class="keywordtype">size_t</span> additional_data_length,</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>  <span class="keyword">const</span> uint8_t *plaintext,</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>  <span class="keywordtype">size_t</span> plaintext_length,</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>  uint8_t *ciphertext,</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>  <span class="keywordtype">size_t</span> ciphertext_size,</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>  <span class="keywordtype">size_t</span> *ciphertext_length);</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span> </div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#gaa8ce6527f2e227f1071fadbf2099793b">psa_aead_decrypt</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>  <span class="keyword">const</span> uint8_t *nonce,</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>  <span class="keywordtype">size_t</span> nonce_length,</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>  <span class="keyword">const</span> uint8_t *additional_data,</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>  <span class="keywordtype">size_t</span> additional_data_length,</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>  <span class="keyword">const</span> uint8_t *ciphertext,</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>  <span class="keywordtype">size_t</span> ciphertext_length,</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>  uint8_t *plaintext,</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>  <span class="keywordtype">size_t</span> plaintext_size,</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>  <span class="keywordtype">size_t</span> *plaintext_length);</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span> </div><div class="line"><a name="l02083"></a><span class="lineno"><a class="line" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed"> 2083</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>psa_aead_operation_s <a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a>;</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span> </div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span> <span class="preprocessor">#ifdef __DOXYGEN_ONLY__</span></div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span> <span class="comment">/* This is an example definition for documentation purposes.</span></div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span> <span class="comment"> * Implementations should define a suitable value in `crypto_struct.h`.</span></div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span> <span class="comment"> */</span></div><div class="line"><a name="l02094"></a><span class="lineno"><a class="line" href="group__aead.html#gaf52e036794c0dc6fbadd93a2b990f366"> 2094</a></span> <span class="preprocessor">#define PSA_AEAD_OPERATION_INIT {0}</span></div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span> </div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span> <span class="keyword">static</span> <a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> psa_aead_operation_init(<span class="keywordtype">void</span>);</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span> </div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#ga47265dc4852f1476f852752218fd12b2">psa_aead_encrypt_setup</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span> </div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#ga439896519d4a367ec86b47f201884152">psa_aead_decrypt_setup</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span> </div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#ga3eadcf2a29f662129ea4fb3454969ba2">psa_aead_generate_nonce</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *nonce,</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>  <span class="keywordtype">size_t</span> nonce_size,</div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>  <span class="keywordtype">size_t</span> *nonce_length);</div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span> </div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#ga40641d0721ca7fe01bbcd9ef635fbc46">psa_aead_set_nonce</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *nonce,</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>  <span class="keywordtype">size_t</span> nonce_length);</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span> </div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#gad3431e28d05002c2a7b0760610176050">psa_aead_set_lengths</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>  <span class="keywordtype">size_t</span> ad_length,</div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>  <span class="keywordtype">size_t</span> plaintext_length);</div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span> </div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#ga6d0eed03f832e5c9c91cb8adf2882569">psa_aead_update_ad</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>  <span class="keywordtype">size_t</span> input_length);</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span> </div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#ga3b105de2088cef7c3d9e2fd8048c841c">psa_aead_update</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *output,</div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>  <span class="keywordtype">size_t</span> output_size,</div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>  <span class="keywordtype">size_t</span> *output_length);</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span> </div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#ga759791bbe1763b377c3b5447641f1fc8">psa_aead_finish</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>  uint8_t *ciphertext,</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>  <span class="keywordtype">size_t</span> ciphertext_size,</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>  <span class="keywordtype">size_t</span> *ciphertext_length,</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>  uint8_t *tag,</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>  <span class="keywordtype">size_t</span> tag_size,</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>  <span class="keywordtype">size_t</span> *tag_length);</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span> </div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#gaaed211fc61977c859d6ff07f39f59219">psa_aead_verify</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>  <span class="keyword">const</span> uint8_t *tag,</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>  <span class="keywordtype">size_t</span> tag_length);</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span> </div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#gae8a5f93d92318c8f592ee9fbb9d36ba0">psa_aead_abort</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation);</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span> </div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__asymmetric.html#ga1b0db9d345b5048cdd39357ac2d56c07">psa_asymmetric_sign</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>  <span class="keyword">const</span> uint8_t *hash,</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>  <span class="keywordtype">size_t</span> hash_length,</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>  uint8_t *signature,</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>  <span class="keywordtype">size_t</span> signature_size,</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>  <span class="keywordtype">size_t</span> *signature_length);</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span> </div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__asymmetric.html#ga1b8e964c8d927e3d632325d762959eb7">psa_asymmetric_verify</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>  <span class="keyword">const</span> uint8_t *hash,</div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>  <span class="keywordtype">size_t</span> hash_length,</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>  <span class="keyword">const</span> uint8_t *signature,</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>  <span class="keywordtype">size_t</span> signature_length);</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span> </div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__asymmetric.html#gad429293b7b0bf2a830b9540a02552004">psa_asymmetric_encrypt</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>  <span class="keyword">const</span> uint8_t *salt,</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>  <span class="keywordtype">size_t</span> salt_length,</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>  uint8_t *output,</div><div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>  <span class="keywordtype">size_t</span> output_size,</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>  <span class="keywordtype">size_t</span> *output_length);</div><div class="line"><a name="l02715"></a><span class="lineno"> 2715</span> </div><div class="line"><a name="l02763"></a><span class="lineno"> 2763</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__asymmetric.html#ga34b55fbaee23dba1a677186fc66a556e">psa_asymmetric_decrypt</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>  <span class="keyword">const</span> uint8_t *salt,</div><div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>  <span class="keywordtype">size_t</span> salt_length,</div><div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>  uint8_t *output,</div><div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>  <span class="keywordtype">size_t</span> output_size,</div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>  <span class="keywordtype">size_t</span> *output_length);</div><div class="line"><a name="l02772"></a><span class="lineno"> 2772</span> </div><div class="line"><a name="l02808"></a><span class="lineno"><a class="line" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b"> 2808</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>psa_crypto_generator_s <a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a>;</div><div class="line"><a name="l02809"></a><span class="lineno"> 2809</span> </div><div class="line"><a name="l02815"></a><span class="lineno"> 2815</span> <span class="preprocessor">#ifdef __DOXYGEN_ONLY__</span></div><div class="line"><a name="l02816"></a><span class="lineno"> 2816</span> <span class="comment">/* This is an example definition for documentation purposes.</span></div><div class="line"><a name="l02817"></a><span class="lineno"> 2817</span> <span class="comment"> * Implementations should define a suitable value in `crypto_struct.h`.</span></div><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span> <span class="comment"> */</span></div><div class="line"><a name="l02819"></a><span class="lineno"><a class="line" href="group__generators.html#ga4788b471385fc667876fbd8a0d3fe062"> 2819</a></span> <span class="preprocessor">#define PSA_CRYPTO_GENERATOR_INIT {0}</span></div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span> </div><div class="line"><a name="l02824"></a><span class="lineno"> 2824</span> <span class="keyword">static</span> <a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> psa_crypto_generator_init(<span class="keywordtype">void</span>);</div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span> </div><div class="line"><a name="l02838"></a><span class="lineno"> 2838</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__generators.html#ga7453491e3b440193be2c5dccc2040fd2">psa_get_generator_capacity</a>(<span class="keyword">const</span> <a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator,</div><div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>  <span class="keywordtype">size_t</span> *capacity);</div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span> </div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__generators.html#ga45676ec3c719622f95caaf926f44bb6e">psa_set_generator_capacity</a>(<a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator,</div><div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>  <span class="keywordtype">size_t</span> capacity);</div><div class="line"><a name="l02856"></a><span class="lineno"> 2856</span> </div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__generators.html#gab5712ad29b78c2b170e64cc5bcfc1bce">psa_generator_read</a>(<a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator,</div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>  uint8_t *output,</div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>  <span class="keywordtype">size_t</span> output_length);</div><div class="line"><a name="l02885"></a><span class="lineno"> 2885</span> </div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__generators.html#ga7fcdf07cd37279ca167db484053da894">psa_generator_import_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>  <a class="code" href="group__crypto__types.html#ga578159487dfc7096cb191b0d2befe628">psa_key_type_t</a> type,</div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>  <span class="keywordtype">size_t</span> bits,</div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>  <a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator);</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span> </div><div class="line"><a name="l02962"></a><span class="lineno"> 2962</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__generators.html#ga563ca64537d90368899286b36d8cf7f3">psa_generator_abort</a>(<a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator);</div><div class="line"><a name="l02963"></a><span class="lineno"> 2963</span> </div><div class="line"><a name="l02971"></a><span class="lineno"><a class="line" href="group__generators.html#gac3222df9b9ecca4d33ae56a7b8fbb1c9"> 2971</a></span> <span class="preprocessor">#define PSA_GENERATOR_UNBRIDLED_CAPACITY ((size_t)(-1))</span></div><div class="line"><a name="l02972"></a><span class="lineno"> 2972</span> </div><div class="line"><a name="l03019"></a><span class="lineno"> 3019</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__derivation.html#ga1825696be813dfac2b8d3d02717e71c5">psa_key_derivation_setup</a>(<a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator,</div><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</span> </div><div class="line"><a name="l03057"></a><span class="lineno"> 3057</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__derivation.html#ga1b30e888db65c71f5337900848e1b03f">psa_key_derivation_input_bytes</a>(<a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator,</div><div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>  <a class="code" href="group__derivation.html#gaac4eeacd36596c548b3a48fc06c5048b">psa_key_derivation_step_t</a> step,</div><div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>  <span class="keyword">const</span> uint8_t *data,</div><div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>  <span class="keywordtype">size_t</span> data_length);</div><div class="line"><a name="l03061"></a><span class="lineno"> 3061</span> </div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__derivation.html#ga9e5f549aa1f6f3863a07008d3d98f91a">psa_key_derivation_input_key</a>(<a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator,</div><div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>  <a class="code" href="group__derivation.html#gaac4eeacd36596c548b3a48fc06c5048b">psa_key_derivation_step_t</a> step,</div><div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle);</div><div class="line"><a name="l03105"></a><span class="lineno"> 3105</span> </div><div class="line"><a name="l03159"></a><span class="lineno"> 3159</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__derivation.html#ga2c7fe304cacc141ffb91553548abc5d2">psa_key_agreement</a>(<a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator,</div><div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>  <a class="code" href="group__derivation.html#gaac4eeacd36596c548b3a48fc06c5048b">psa_key_derivation_step_t</a> step,</div><div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> private_key,</div><div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>  <span class="keyword">const</span> uint8_t *peer_key,</div><div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>  <span class="keywordtype">size_t</span> peer_key_length);</div><div class="line"><a name="l03164"></a><span class="lineno"> 3164</span> </div><div class="line"><a name="l03209"></a><span class="lineno"> 3209</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__derivation.html#gaf1b12eff66a1a0020b5bdc8d0e910006">psa_key_agreement_raw_shared_secret</a>(<a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> private_key,</div><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>  <span class="keyword">const</span> uint8_t *peer_key,</div><div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>  <span class="keywordtype">size_t</span> peer_key_length,</div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>  uint8_t *output,</div><div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>  <span class="keywordtype">size_t</span> output_size,</div><div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>  <span class="keywordtype">size_t</span> *output_length);</div><div class="line"><a name="l03216"></a><span class="lineno"> 3216</span> </div><div class="line"><a name="l03246"></a><span class="lineno"> 3246</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__random.html#ga1985eae417dfbccedf50d5fff54ea8c5">psa_generate_random</a>(uint8_t *output,</div><div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>  <span class="keywordtype">size_t</span> output_size);</div><div class="line"><a name="l03248"></a><span class="lineno"> 3248</span> </div><div class="line"><a name="l03254"></a><span class="lineno"><a class="line" href="structpsa__generate__key__extra__rsa.html"> 3254</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l03255"></a><span class="lineno"><a class="line" href="structpsa__generate__key__extra__rsa.html#a53ccb9e4375f3c9af6e3ecfe111ce11d"> 3255</a></span>  uint32_t <a class="code" href="structpsa__generate__key__extra__rsa.html#a53ccb9e4375f3c9af6e3ecfe111ce11d">e</a>; </div><div class="line"><a name="l03256"></a><span class="lineno"> 3256</span> } <a class="code" href="structpsa__generate__key__extra__rsa.html">psa_generate_key_extra_rsa</a>;</div><div class="line"><a name="l03257"></a><span class="lineno"> 3257</span> </div><div class="line"><a name="l03323"></a><span class="lineno"> 3323</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__random.html#ga72921520494b4f007a3afb904cd9ecdd">psa_generate_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>  <a class="code" href="group__crypto__types.html#ga578159487dfc7096cb191b0d2befe628">psa_key_type_t</a> type,</div><div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>  <span class="keywordtype">size_t</span> bits,</div><div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>  <span class="keyword">const</span> <span class="keywordtype">void</span> *extra,</div><div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>  <span class="keywordtype">size_t</span> extra_size);</div><div class="line"><a name="l03328"></a><span class="lineno"> 3328</span> </div><div class="line"><a name="l03331"></a><span class="lineno"> 3331</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l03332"></a><span class="lineno"> 3332</span> }</div><div class="line"><a name="l03333"></a><span class="lineno"> 3333</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l03334"></a><span class="lineno"> 3334</span> </div><div class="line"><a name="l03335"></a><span class="lineno"> 3335</span> <span class="comment">/* The file "crypto_sizes.h" contains definitions for size calculation</span></div><div class="line"><a name="l03336"></a><span class="lineno"> 3336</span> <span class="comment"> * macros whose definitions are implementation-specific. */</span></div><div class="line"><a name="l03337"></a><span class="lineno"> 3337</span> <span class="preprocessor">#include "<a class="code" href="crypto__sizes_8h.html">crypto_sizes.h</a>"</span></div><div class="line"><a name="l03338"></a><span class="lineno"> 3338</span> </div><div class="line"><a name="l03339"></a><span class="lineno"> 3339</span> <span class="comment">/* The file "crypto_struct.h" contains definitions for</span></div><div class="line"><a name="l03340"></a><span class="lineno"> 3340</span> <span class="comment"> * implementation-specific structs that are declared above. */</span></div><div class="line"><a name="l03341"></a><span class="lineno"> 3341</span> <span class="preprocessor">#include "crypto_struct.h"</span></div><div class="line"><a name="l03342"></a><span class="lineno"> 3342</span> </div><div class="line"><a name="l03343"></a><span class="lineno"> 3343</span> <span class="comment">/* The file "crypto_extra.h" contains vendor-specific definitions. This</span></div><div class="line"><a name="l03344"></a><span class="lineno"> 3344</span> <span class="comment"> * can include vendor-defined algorithms, extra functions, etc. */</span></div><div class="line"><a name="l03345"></a><span class="lineno"> 3345</span> <span class="preprocessor">#include "crypto_extra.h"</span></div><div class="line"><a name="l03346"></a><span class="lineno"> 3346</span> </div><div class="line"><a name="l03347"></a><span class="lineno"> 3347</span> <span class="preprocessor">#endif </span><span class="comment">/* PSA_CRYPTO_H */</span><span class="preprocessor"></span></div><div class="ttc" id="group__cipher_html_ga2a7fc79a9d150d42dba99f40ee3a185e"><div class="ttname"><a href="group__cipher.html#ga2a7fc79a9d150d42dba99f40ee3a185e">psa_cipher_encrypt_setup</a></div><div class="ttdeci">psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation, psa_key_handle_t handle, psa_algorithm_t alg)</div></div>
+<a href="crypto_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">/*</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Copyright (C) 2018, ARM Limited, All Rights Reserved</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * SPDX-License-Identifier: Apache-2.0</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License"); you may</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * not use this file except in compliance with the License.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> *</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> */</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#ifndef PSA_CRYPTO_H</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#define PSA_CRYPTO_H</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "crypto_platform.h"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <stddef.h></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#ifdef __DOXYGEN_ONLY__</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">/* This __DOXYGEN_ONLY__ block contains mock definitions for things that</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * must be defined in the crypto_platform.h header. These mock definitions</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> * are present in this file as a convenience to generate pretty-printed</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> * documentation that includes those definitions. */</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75"> 47</a></span> <span class="keyword">typedef</span> _unsigned_integral_type_ <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#endif </span><span class="comment">/* __DOXYGEN_ONLY__ */</span><span class="preprocessor"></span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">/* The file "crypto_types.h" declares types that encode errors,</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment"> * algorithms, key types, policies, etc. */</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#include "<a class="code" href="crypto__types_8h.html">crypto_types.h</a>"</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">/* The file "crypto_values.h" declares macros to build and analyze values</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment"> * of integral types defined in "crypto_types.h". */</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#include "<a class="code" href="crypto__values_8h.html">crypto_values.h</a>"</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__initialization.html#ga2de150803fc2f7dc6101d5af7e921dd9">psa_crypto_init</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607"> 128</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>psa_key_policy_s <a class="code" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607">psa_key_policy_t</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor">#ifdef __DOXYGEN_ONLY__</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="comment">/* This is an example definition for documentation purposes.</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="comment"> * Implementations should define a suitable value in `crypto_struct.h`.</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="comment"> */</span></div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="group__policy.html#ga5e6bc5f550e88fdc7790f2a75e79f7c5"> 139</a></span> <span class="preprocessor">#define PSA_KEY_POLICY_INIT {0}</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="keyword">static</span> <a class="code" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607">psa_key_policy_t</a> psa_key_policy_init(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="keywordtype">void</span> <a class="code" href="group__policy.html#gac16792fd6d375a5f76d372090df40607">psa_key_policy_set_usage</a>(<a class="code" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607">psa_key_policy_t</a> *policy,</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="group__policy.html#ga7bb9de71337e0e98de843aa7f9b55f25">psa_key_usage_t</a> usage,</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <a class="code" href="group__policy.html#ga7bb9de71337e0e98de843aa7f9b55f25">psa_key_usage_t</a> <a class="code" href="group__policy.html#ga7746662b7503e484774d0ecb5d8ac2ab">psa_key_policy_get_usage</a>(<span class="keyword">const</span> <a class="code" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607">psa_key_policy_t</a> *policy);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> <a class="code" href="group__policy.html#gaadf16b89ace53e1d2cb5bcb0aef24c86">psa_key_policy_get_algorithm</a>(<span class="keyword">const</span> <a class="code" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607">psa_key_policy_t</a> *policy);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__policy.html#ga1e2a6e50b621864f95d438222a3c640b">psa_set_key_policy</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keyword">const</span> <a class="code" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607">psa_key_policy_t</a> *policy);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__policy.html#gaed087d1386b807edee66b2e445ba9111">psa_get_key_policy</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607">psa_key_policy_t</a> *policy);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__key__management.html#ga1e4825ab59260aeb3bdbb3ff07210022">psa_get_key_lifetime</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="code" href="group__key__lifetimes.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a> *lifetime);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__key__management.html#ga40094b77b7a42b9c8e158395113f1a35">psa_allocate_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> *handle);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__key__management.html#gaa9f1c848cf78b80fe2a7b18bb7ccec50">psa_open_key</a>(<a class="code" href="group__key__lifetimes.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a> lifetime,</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="group__key__lifetimes.html#ga11e986351c65bd3dc3c0fe2cd9926e4b">psa_key_id_t</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> *handle);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__key__management.html#ga4108f255d3eaa6d23a7a14b684af8d7c">psa_create_key</a>(<a class="code" href="group__key__lifetimes.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a> lifetime,</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="group__key__lifetimes.html#ga11e986351c65bd3dc3c0fe2cd9926e4b">psa_key_id_t</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> *handle);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__key__management.html#gaa09b720d299dfe6b9f41c36e448078eb">psa_close_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__import__export.html#gac9f999cb4d098663d56095afe81a453a">psa_import_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <a class="code" href="group__crypto__types.html#ga578159487dfc7096cb191b0d2befe628">psa_key_type_t</a> type,</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keyword">const</span> uint8_t *data,</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordtype">size_t</span> data_length);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__import__export.html#ga165085fc1bc7a78b91792fdd94ae102c">psa_destroy_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__import__export.html#gae8939902d6977ea8ad13eb7b4db9a042">psa_get_key_information</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <a class="code" href="group__crypto__types.html#ga578159487dfc7096cb191b0d2befe628">psa_key_type_t</a> *type,</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordtype">size_t</span> *bits);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> </div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__import__export.html#ga091da8d3d39137fd6ad59f2b10234300">psa_set_key_domain_parameters</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <a class="code" href="group__crypto__types.html#ga578159487dfc7096cb191b0d2befe628">psa_key_type_t</a> type,</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keyword">const</span> uint8_t *data,</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordtype">size_t</span> data_length);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> </div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__import__export.html#gae260b92e32ac5d63f7dfc6ffdf6536f7">psa_get_key_domain_parameters</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  uint8_t *data,</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordtype">size_t</span> data_size,</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordtype">size_t</span> *data_length);</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> </div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__import__export.html#ga902b9a7a6cf34d6111668be777b05eaf">psa_export_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  uint8_t *data,</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordtype">size_t</span> data_size,</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="keywordtype">size_t</span> *data_length);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span> </div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__import__export.html#gad760d1f0d4e60972c78cbb4c8a528256">psa_export_public_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  uint8_t *data,</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="keywordtype">size_t</span> data_size,</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keywordtype">size_t</span> *data_length);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span> </div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__import__export.html#ga5c1c24176cfb1517a8806235b3162a9d">psa_copy_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> source_handle,</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> target_handle,</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keyword">const</span> <a class="code" href="group__policy.html#gaf553efd409845b6d09ff25ce2ba36607">psa_key_policy_t</a> *constraint);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> </div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__hash.html#gac69f7f19d96a56c28cf3799d11b12156">psa_hash_compute</a>(<a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  uint8_t *hash,</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <span class="keywordtype">size_t</span> hash_size,</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordtype">size_t</span> *hash_length);</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> </div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__hash.html#ga0bb6dbd3c310648c3cf7d202413ff0bc">psa_hash_compare</a>(<a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <span class="keyword">const</span> uint8_t *hash,</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> hash_length);</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span> </div><div class="line"><a name="l00907"></a><span class="lineno"><a class="line" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab"> 907</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>psa_hash_operation_s <a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a>;</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span> </div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span> <span class="preprocessor">#ifdef __DOXYGEN_ONLY__</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span> <span class="comment">/* This is an example definition for documentation purposes.</span></div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> <span class="comment"> * Implementations should define a suitable value in `crypto_struct.h`.</span></div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> <span class="comment"> */</span></div><div class="line"><a name="l00918"></a><span class="lineno"><a class="line" href="group__hash.html#ga6ab7fe8d3500bc2f21be840b4f4f8d1d"> 918</a></span> <span class="preprocessor">#define PSA_HASH_OPERATION_INIT {0}</span></div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span> </div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span> <span class="keyword">static</span> <a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a> psa_hash_operation_init(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span> </div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__hash.html#ga8d72896cf70fc4d514c5c6b978912515">psa_hash_setup</a>(<a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a> *operation,</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> </div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__hash.html#ga65b16ef97d7f650899b7db4b7d1112ff">psa_hash_update</a>(<a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a> *operation,</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordtype">size_t</span> input_length);</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> </div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__hash.html#ga4795fd06a0067b0adcd92e9627b8c97e">psa_hash_finish</a>(<a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a> *operation,</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  uint8_t *hash,</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  <span class="keywordtype">size_t</span> hash_size,</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  <span class="keywordtype">size_t</span> *hash_length);</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> </div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__hash.html#ga7be923c5700c9c70ef77ee9b76d1a5c0">psa_hash_verify</a>(<a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a> *operation,</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  <span class="keyword">const</span> uint8_t *hash,</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  <span class="keywordtype">size_t</span> hash_length);</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> </div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__hash.html#gab0b4d5f9912a615559497a467b532928">psa_hash_abort</a>(<a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a> *operation);</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> </div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__hash.html#ga39673348f3302b4646bd780034a5aeda">psa_hash_clone</a>(<span class="keyword">const</span> <a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a> *source_operation,</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  <a class="code" href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a> *target_operation);</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> </div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__MAC.html#gace78d9b51394f9d4f77952963665897a">psa_mac_compute</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  uint8_t *mac,</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  <span class="keywordtype">size_t</span> mac_size,</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <span class="keywordtype">size_t</span> *mac_length);</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> </div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__MAC.html#ga08e2e8c21bfe762a907266f3bdd1d07c">psa_mac_verify</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  <span class="keyword">const</span> uint8_t *mac,</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> mac_length);</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> </div><div class="line"><a name="l01237"></a><span class="lineno"><a class="line" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37"> 1237</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>psa_mac_operation_s <a class="code" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a>;</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span> </div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> <span class="preprocessor">#ifdef __DOXYGEN_ONLY__</span></div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span> <span class="comment">/* This is an example definition for documentation purposes.</span></div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span> <span class="comment"> * Implementations should define a suitable value in `crypto_struct.h`.</span></div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span> <span class="comment"> */</span></div><div class="line"><a name="l01248"></a><span class="lineno"><a class="line" href="group__MAC.html#ga441b6efc161a4573d06465bd22d9dc2d"> 1248</a></span> <span class="preprocessor">#define PSA_MAC_OPERATION_INIT {0}</span></div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span> </div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> <span class="keyword">static</span> <a class="code" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a> psa_mac_operation_init(<span class="keywordtype">void</span>);</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> </div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__MAC.html#gad33f2b15119593571ca6b8e7c757ab0e">psa_mac_sign_setup</a>(<a class="code" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a> *operation,</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span> </div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__MAC.html#gaa721a59ae6d085ec90c7dc918879a027">psa_mac_verify_setup</a>(<a class="code" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a> *operation,</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span> </div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__MAC.html#ga5560af371497babefe03c9da4e8a1c05">psa_mac_update</a>(<a class="code" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a> *operation,</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>  <span class="keywordtype">size_t</span> input_length);</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span> </div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__MAC.html#gac22bc0125580c96724a09226cfbc97f2">psa_mac_sign_finish</a>(<a class="code" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a> *operation,</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>  uint8_t *mac,</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>  <span class="keywordtype">size_t</span> mac_size,</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>  <span class="keywordtype">size_t</span> *mac_length);</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span> </div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__MAC.html#gac92b2930d6728e1be4d011c05d485822">psa_mac_verify_finish</a>(<a class="code" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a> *operation,</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>  <span class="keyword">const</span> uint8_t *mac,</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>  <span class="keywordtype">size_t</span> mac_length);</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> </div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__MAC.html#gacd8dd54855ba1bc0a03f104f252884fd">psa_mac_abort</a>(<a class="code" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a> *operation);</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span> </div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#gac76dda492d9a1ba6b327bff610ec17b2">psa_cipher_encrypt</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>  uint8_t *output,</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>  <span class="keywordtype">size_t</span> output_size,</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>  <span class="keywordtype">size_t</span> *output_length);</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span> </div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#ga43d5991711ec45c98af0c1d99f6e0216">psa_cipher_decrypt</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>  uint8_t *output,</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  <span class="keywordtype">size_t</span> output_size,</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  <span class="keywordtype">size_t</span> *output_length);</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span> </div><div class="line"><a name="l01622"></a><span class="lineno"><a class="line" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa"> 1622</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>psa_cipher_operation_s <a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a>;</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span> </div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span> <span class="preprocessor">#ifdef __DOXYGEN_ONLY__</span></div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span> <span class="comment">/* This is an example definition for documentation purposes.</span></div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span> <span class="comment"> * Implementations should define a suitable value in `crypto_struct.h`.</span></div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span> <span class="comment"> */</span></div><div class="line"><a name="l01633"></a><span class="lineno"><a class="line" href="group__cipher.html#ga2da0541aabf9a4995cf2004e36311919"> 1633</a></span> <span class="preprocessor">#define PSA_CIPHER_OPERATION_INIT {0}</span></div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span> </div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span> <span class="keyword">static</span> <a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a> psa_cipher_operation_init(<span class="keywordtype">void</span>);</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span> </div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#ga2a7fc79a9d150d42dba99f40ee3a185e">psa_cipher_encrypt_setup</a>(<a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a> *operation,</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span> </div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#gaddf8504e5367cd0efb4415bdec004f44">psa_cipher_decrypt_setup</a>(<a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a> *operation,</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span> </div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#ga44857cf5e0c3d134a3c560f8ff5b50aa">psa_cipher_generate_iv</a>(<a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a> *operation,</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *iv,</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>  <span class="keywordtype">size_t</span> iv_size,</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>  <span class="keywordtype">size_t</span> *iv_length);</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span> </div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#ga1359b2101f31637496ce7cc36c6e3d42">psa_cipher_set_iv</a>(<a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a> *operation,</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *iv,</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>  <span class="keywordtype">size_t</span> iv_length);</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span> </div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#gafd0caea99cf1052527e4089d37f5ab91">psa_cipher_update</a>(<a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a> *operation,</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *output,</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>  <span class="keywordtype">size_t</span> output_size,</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>  <span class="keywordtype">size_t</span> *output_length);</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span> </div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#ga1dcb58b8befe23f8a4d7a1d49c99249b">psa_cipher_finish</a>(<a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a> *operation,</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>  uint8_t *output,</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>  <span class="keywordtype">size_t</span> output_size,</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>  <span class="keywordtype">size_t</span> *output_length);</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span> </div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__cipher.html#gaad482cdca2098bca0620596aaa02eaa4">psa_cipher_abort</a>(<a class="code" href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a> *operation);</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span> </div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#ga44de092cf58bb6c820c5c80a6c51610d">psa_aead_encrypt</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>  <span class="keyword">const</span> uint8_t *nonce,</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>  <span class="keywordtype">size_t</span> nonce_length,</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>  <span class="keyword">const</span> uint8_t *additional_data,</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>  <span class="keywordtype">size_t</span> additional_data_length,</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>  <span class="keyword">const</span> uint8_t *plaintext,</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>  <span class="keywordtype">size_t</span> plaintext_length,</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>  uint8_t *ciphertext,</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>  <span class="keywordtype">size_t</span> ciphertext_size,</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>  <span class="keywordtype">size_t</span> *ciphertext_length);</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span> </div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#gaa8ce6527f2e227f1071fadbf2099793b">psa_aead_decrypt</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>  <span class="keyword">const</span> uint8_t *nonce,</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>  <span class="keywordtype">size_t</span> nonce_length,</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>  <span class="keyword">const</span> uint8_t *additional_data,</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>  <span class="keywordtype">size_t</span> additional_data_length,</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>  <span class="keyword">const</span> uint8_t *ciphertext,</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>  <span class="keywordtype">size_t</span> ciphertext_length,</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>  uint8_t *plaintext,</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>  <span class="keywordtype">size_t</span> plaintext_size,</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>  <span class="keywordtype">size_t</span> *plaintext_length);</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span> </div><div class="line"><a name="l02080"></a><span class="lineno"><a class="line" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed"> 2080</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>psa_aead_operation_s <a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a>;</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span> </div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span> <span class="preprocessor">#ifdef __DOXYGEN_ONLY__</span></div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span> <span class="comment">/* This is an example definition for documentation purposes.</span></div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span> <span class="comment"> * Implementations should define a suitable value in `crypto_struct.h`.</span></div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span> <span class="comment"> */</span></div><div class="line"><a name="l02091"></a><span class="lineno"><a class="line" href="group__aead.html#gaf52e036794c0dc6fbadd93a2b990f366"> 2091</a></span> <span class="preprocessor">#define PSA_AEAD_OPERATION_INIT {0}</span></div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span> </div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span> <span class="keyword">static</span> <a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> psa_aead_operation_init(<span class="keywordtype">void</span>);</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span> </div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#ga47265dc4852f1476f852752218fd12b2">psa_aead_encrypt_setup</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span> </div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#ga439896519d4a367ec86b47f201884152">psa_aead_decrypt_setup</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span> </div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#ga3eadcf2a29f662129ea4fb3454969ba2">psa_aead_generate_nonce</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *nonce,</div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>  <span class="keywordtype">size_t</span> nonce_size,</div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>  <span class="keywordtype">size_t</span> *nonce_length);</div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span> </div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#ga40641d0721ca7fe01bbcd9ef635fbc46">psa_aead_set_nonce</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *nonce,</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>  <span class="keywordtype">size_t</span> nonce_length);</div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span> </div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#gad3431e28d05002c2a7b0760610176050">psa_aead_set_lengths</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>  <span class="keywordtype">size_t</span> ad_length,</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>  <span class="keywordtype">size_t</span> plaintext_length);</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span> </div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#ga6d0eed03f832e5c9c91cb8adf2882569">psa_aead_update_ad</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>  <span class="keywordtype">size_t</span> input_length);</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span> </div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#ga3b105de2088cef7c3d9e2fd8048c841c">psa_aead_update</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *output,</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>  <span class="keywordtype">size_t</span> output_size,</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>  <span class="keywordtype">size_t</span> *output_length);</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span> </div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#ga759791bbe1763b377c3b5447641f1fc8">psa_aead_finish</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>  uint8_t *ciphertext,</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>  <span class="keywordtype">size_t</span> ciphertext_size,</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>  <span class="keywordtype">size_t</span> *ciphertext_length,</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>  uint8_t *tag,</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>  <span class="keywordtype">size_t</span> tag_size,</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>  <span class="keywordtype">size_t</span> *tag_length);</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span> </div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#gaaed211fc61977c859d6ff07f39f59219">psa_aead_verify</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation,</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>  <span class="keyword">const</span> uint8_t *tag,</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>  <span class="keywordtype">size_t</span> tag_length);</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span> </div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__aead.html#gae8a5f93d92318c8f592ee9fbb9d36ba0">psa_aead_abort</a>(<a class="code" href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a> *operation);</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span> </div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__asymmetric.html#ga1b0db9d345b5048cdd39357ac2d56c07">psa_asymmetric_sign</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>  <span class="keyword">const</span> uint8_t *hash,</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>  <span class="keywordtype">size_t</span> hash_length,</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>  uint8_t *signature,</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>  <span class="keywordtype">size_t</span> signature_size,</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>  <span class="keywordtype">size_t</span> *signature_length);</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span> </div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__asymmetric.html#ga1b8e964c8d927e3d632325d762959eb7">psa_asymmetric_verify</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>  <span class="keyword">const</span> uint8_t *hash,</div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>  <span class="keywordtype">size_t</span> hash_length,</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>  <span class="keyword">const</span> uint8_t *signature,</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>  <span class="keywordtype">size_t</span> signature_length);</div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span> </div><div class="line"><a name="l02703"></a><span class="lineno"> 2703</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__asymmetric.html#gad429293b7b0bf2a830b9540a02552004">psa_asymmetric_encrypt</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>  <span class="keyword">const</span> uint8_t *salt,</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>  <span class="keywordtype">size_t</span> salt_length,</div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>  uint8_t *output,</div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>  <span class="keywordtype">size_t</span> output_size,</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>  <span class="keywordtype">size_t</span> *output_length);</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span> </div><div class="line"><a name="l02760"></a><span class="lineno"> 2760</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__asymmetric.html#ga34b55fbaee23dba1a677186fc66a556e">psa_asymmetric_decrypt</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>  <span class="keyword">const</span> uint8_t *input,</div><div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>  <span class="keywordtype">size_t</span> input_length,</div><div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>  <span class="keyword">const</span> uint8_t *salt,</div><div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>  <span class="keywordtype">size_t</span> salt_length,</div><div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>  uint8_t *output,</div><div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>  <span class="keywordtype">size_t</span> output_size,</div><div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>  <span class="keywordtype">size_t</span> *output_length);</div><div class="line"><a name="l02769"></a><span class="lineno"> 2769</span> </div><div class="line"><a name="l02805"></a><span class="lineno"><a class="line" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b"> 2805</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>psa_crypto_generator_s <a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a>;</div><div class="line"><a name="l02806"></a><span class="lineno"> 2806</span> </div><div class="line"><a name="l02812"></a><span class="lineno"> 2812</span> <span class="preprocessor">#ifdef __DOXYGEN_ONLY__</span></div><div class="line"><a name="l02813"></a><span class="lineno"> 2813</span> <span class="comment">/* This is an example definition for documentation purposes.</span></div><div class="line"><a name="l02814"></a><span class="lineno"> 2814</span> <span class="comment"> * Implementations should define a suitable value in `crypto_struct.h`.</span></div><div class="line"><a name="l02815"></a><span class="lineno"> 2815</span> <span class="comment"> */</span></div><div class="line"><a name="l02816"></a><span class="lineno"><a class="line" href="group__generators.html#ga4788b471385fc667876fbd8a0d3fe062"> 2816</a></span> <span class="preprocessor">#define PSA_CRYPTO_GENERATOR_INIT {0}</span></div><div class="line"><a name="l02817"></a><span class="lineno"> 2817</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span> </div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span> <span class="keyword">static</span> <a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> psa_crypto_generator_init(<span class="keywordtype">void</span>);</div><div class="line"><a name="l02822"></a><span class="lineno"> 2822</span> </div><div class="line"><a name="l02835"></a><span class="lineno"> 2835</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__generators.html#ga7453491e3b440193be2c5dccc2040fd2">psa_get_generator_capacity</a>(<span class="keyword">const</span> <a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator,</div><div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>  <span class="keywordtype">size_t</span> *capacity);</div><div class="line"><a name="l02837"></a><span class="lineno"> 2837</span> </div><div class="line"><a name="l02851"></a><span class="lineno"> 2851</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__generators.html#ga45676ec3c719622f95caaf926f44bb6e">psa_set_generator_capacity</a>(<a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator,</div><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>  <span class="keywordtype">size_t</span> capacity);</div><div class="line"><a name="l02853"></a><span class="lineno"> 2853</span> </div><div class="line"><a name="l02879"></a><span class="lineno"> 2879</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__generators.html#gab5712ad29b78c2b170e64cc5bcfc1bce">psa_generator_read</a>(<a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator,</div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>  uint8_t *output,</div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>  <span class="keywordtype">size_t</span> output_length);</div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span> </div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__generators.html#ga7fcdf07cd37279ca167db484053da894">psa_generator_import_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>  <a class="code" href="group__crypto__types.html#ga578159487dfc7096cb191b0d2befe628">psa_key_type_t</a> type,</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>  <span class="keywordtype">size_t</span> bits,</div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>  <a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator);</div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span> </div><div class="line"><a name="l02959"></a><span class="lineno"> 2959</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__generators.html#ga563ca64537d90368899286b36d8cf7f3">psa_generator_abort</a>(<a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator);</div><div class="line"><a name="l02960"></a><span class="lineno"> 2960</span> </div><div class="line"><a name="l02968"></a><span class="lineno"><a class="line" href="group__generators.html#gac3222df9b9ecca4d33ae56a7b8fbb1c9"> 2968</a></span> <span class="preprocessor">#define PSA_GENERATOR_UNBRIDLED_CAPACITY ((size_t)(-1))</span></div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span> </div><div class="line"><a name="l03016"></a><span class="lineno"> 3016</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__derivation.html#ga1825696be813dfac2b8d3d02717e71c5">psa_key_derivation_setup</a>(<a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator,</div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>  <a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg);</div><div class="line"><a name="l03018"></a><span class="lineno"> 3018</span> </div><div class="line"><a name="l03054"></a><span class="lineno"> 3054</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__derivation.html#ga1b30e888db65c71f5337900848e1b03f">psa_key_derivation_input_bytes</a>(<a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator,</div><div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>  <a class="code" href="group__derivation.html#gaac4eeacd36596c548b3a48fc06c5048b">psa_key_derivation_step_t</a> step,</div><div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>  <span class="keyword">const</span> uint8_t *data,</div><div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>  <span class="keywordtype">size_t</span> data_length);</div><div class="line"><a name="l03058"></a><span class="lineno"> 3058</span> </div><div class="line"><a name="l03099"></a><span class="lineno"> 3099</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__derivation.html#ga9e5f549aa1f6f3863a07008d3d98f91a">psa_key_derivation_input_key</a>(<a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator,</div><div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>  <a class="code" href="group__derivation.html#gaac4eeacd36596c548b3a48fc06c5048b">psa_key_derivation_step_t</a> step,</div><div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle);</div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span> </div><div class="line"><a name="l03156"></a><span class="lineno"> 3156</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__derivation.html#ga2c7fe304cacc141ffb91553548abc5d2">psa_key_agreement</a>(<a class="code" href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a> *generator,</div><div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>  <a class="code" href="group__derivation.html#gaac4eeacd36596c548b3a48fc06c5048b">psa_key_derivation_step_t</a> step,</div><div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> private_key,</div><div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>  <span class="keyword">const</span> uint8_t *peer_key,</div><div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>  <span class="keywordtype">size_t</span> peer_key_length);</div><div class="line"><a name="l03161"></a><span class="lineno"> 3161</span> </div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__derivation.html#gaf1b12eff66a1a0020b5bdc8d0e910006">psa_key_agreement_raw_shared_secret</a>(<a class="code" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a> alg,</div><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>  <a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> private_key,</div><div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>  <span class="keyword">const</span> uint8_t *peer_key,</div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>  <span class="keywordtype">size_t</span> peer_key_length,</div><div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>  uint8_t *output,</div><div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>  <span class="keywordtype">size_t</span> output_size,</div><div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>  <span class="keywordtype">size_t</span> *output_length);</div><div class="line"><a name="l03217"></a><span class="lineno"> 3217</span> </div><div class="line"><a name="l03247"></a><span class="lineno"> 3247</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__random.html#ga1985eae417dfbccedf50d5fff54ea8c5">psa_generate_random</a>(uint8_t *output,</div><div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>  <span class="keywordtype">size_t</span> output_size);</div><div class="line"><a name="l03249"></a><span class="lineno"> 3249</span> </div><div class="line"><a name="l03255"></a><span class="lineno"><a class="line" href="structpsa__generate__key__extra__rsa.html"> 3255</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l03256"></a><span class="lineno"><a class="line" href="structpsa__generate__key__extra__rsa.html#a53ccb9e4375f3c9af6e3ecfe111ce11d"> 3256</a></span>  uint32_t <a class="code" href="structpsa__generate__key__extra__rsa.html#a53ccb9e4375f3c9af6e3ecfe111ce11d">e</a>; </div><div class="line"><a name="l03257"></a><span class="lineno"> 3257</span> } <a class="code" href="structpsa__generate__key__extra__rsa.html">psa_generate_key_extra_rsa</a>;</div><div class="line"><a name="l03258"></a><span class="lineno"> 3258</span> </div><div class="line"><a name="l03324"></a><span class="lineno"> 3324</span> <a class="code" href="group__error.html#ga05676e70ba5c6a7565aff3c36677c1f9">psa_status_t</a> <a class="code" href="group__random.html#ga72921520494b4f007a3afb904cd9ecdd">psa_generate_key</a>(<a class="code" href="group__platform.html#gabf6d5fd4e2ea89ecd425c88f057e7f75">psa_key_handle_t</a> handle,</div><div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>  <a class="code" href="group__crypto__types.html#ga578159487dfc7096cb191b0d2befe628">psa_key_type_t</a> type,</div><div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>  <span class="keywordtype">size_t</span> bits,</div><div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>  <span class="keyword">const</span> <span class="keywordtype">void</span> *extra,</div><div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>  <span class="keywordtype">size_t</span> extra_size);</div><div class="line"><a name="l03329"></a><span class="lineno"> 3329</span> </div><div class="line"><a name="l03332"></a><span class="lineno"> 3332</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l03333"></a><span class="lineno"> 3333</span> }</div><div class="line"><a name="l03334"></a><span class="lineno"> 3334</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l03335"></a><span class="lineno"> 3335</span> </div><div class="line"><a name="l03336"></a><span class="lineno"> 3336</span> <span class="comment">/* The file "crypto_sizes.h" contains definitions for size calculation</span></div><div class="line"><a name="l03337"></a><span class="lineno"> 3337</span> <span class="comment"> * macros whose definitions are implementation-specific. */</span></div><div class="line"><a name="l03338"></a><span class="lineno"> 3338</span> <span class="preprocessor">#include "<a class="code" href="crypto__sizes_8h.html">crypto_sizes.h</a>"</span></div><div class="line"><a name="l03339"></a><span class="lineno"> 3339</span> </div><div class="line"><a name="l03340"></a><span class="lineno"> 3340</span> <span class="comment">/* The file "crypto_struct.h" contains definitions for</span></div><div class="line"><a name="l03341"></a><span class="lineno"> 3341</span> <span class="comment"> * implementation-specific structs that are declared above. */</span></div><div class="line"><a name="l03342"></a><span class="lineno"> 3342</span> <span class="preprocessor">#include "crypto_struct.h"</span></div><div class="line"><a name="l03343"></a><span class="lineno"> 3343</span> </div><div class="line"><a name="l03344"></a><span class="lineno"> 3344</span> <span class="comment">/* The file "crypto_extra.h" contains vendor-specific definitions. This</span></div><div class="line"><a name="l03345"></a><span class="lineno"> 3345</span> <span class="comment"> * can include vendor-defined algorithms, extra functions, etc. */</span></div><div class="line"><a name="l03346"></a><span class="lineno"> 3346</span> <span class="preprocessor">#include "crypto_extra.h"</span></div><div class="line"><a name="l03347"></a><span class="lineno"> 3347</span> </div><div class="line"><a name="l03348"></a><span class="lineno"> 3348</span> <span class="preprocessor">#endif </span><span class="comment">/* PSA_CRYPTO_H */</span><span class="preprocessor"></span></div><div class="ttc" id="group__cipher_html_ga2a7fc79a9d150d42dba99f40ee3a185e"><div class="ttname"><a href="group__cipher.html#ga2a7fc79a9d150d42dba99f40ee3a185e">psa_cipher_encrypt_setup</a></div><div class="ttdeci">psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation, psa_key_handle_t handle, psa_algorithm_t alg)</div></div>
<div class="ttc" id="group__MAC_html_gac92b2930d6728e1be4d011c05d485822"><div class="ttname"><a href="group__MAC.html#gac92b2930d6728e1be4d011c05d485822">psa_mac_verify_finish</a></div><div class="ttdeci">psa_status_t psa_mac_verify_finish(psa_mac_operation_t *operation, const uint8_t *mac, size_t mac_length)</div></div>
<div class="ttc" id="group__random_html_ga1985eae417dfbccedf50d5fff54ea8c5"><div class="ttname"><a href="group__random.html#ga1985eae417dfbccedf50d5fff54ea8c5">psa_generate_random</a></div><div class="ttdeci">psa_status_t psa_generate_random(uint8_t *output, size_t output_size)</div><div class="ttdoc">Generate random bytes. </div></div>
<div class="ttc" id="group__aead_html_ga3eadcf2a29f662129ea4fb3454969ba2"><div class="ttname"><a href="group__aead.html#ga3eadcf2a29f662129ea4fb3454969ba2">psa_aead_generate_nonce</a></div><div class="ttdeci">psa_status_t psa_aead_generate_nonce(psa_aead_operation_t *operation, unsigned char *nonce, size_t nonce_size, size_t *nonce_length)</div></div>
@@ -106,7 +106,7 @@
<div class="ttc" id="group__key__management_html_gaa09b720d299dfe6b9f41c36e448078eb"><div class="ttname"><a href="group__key__management.html#gaa09b720d299dfe6b9f41c36e448078eb">psa_close_key</a></div><div class="ttdeci">psa_status_t psa_close_key(psa_key_handle_t handle)</div></div>
<div class="ttc" id="group__cipher_html_ga43d5991711ec45c98af0c1d99f6e0216"><div class="ttname"><a href="group__cipher.html#ga43d5991711ec45c98af0c1d99f6e0216">psa_cipher_decrypt</a></div><div class="ttdeci">psa_status_t psa_cipher_decrypt(psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *input, size_t input_length, uint8_t *output, size_t output_size, size_t *output_length)</div></div>
<div class="ttc" id="group__import__export_html_gad760d1f0d4e60972c78cbb4c8a528256"><div class="ttname"><a href="group__import__export.html#gad760d1f0d4e60972c78cbb4c8a528256">psa_export_public_key</a></div><div class="ttdeci">psa_status_t psa_export_public_key(psa_key_handle_t handle, uint8_t *data, size_t data_size, size_t *data_length)</div><div class="ttdoc">Export a public key or the public part of a key pair in binary format. </div></div>
-<div class="ttc" id="group__aead_html_ga14f6a01afbaa8c5b3d8c5d345cbaa3ed"><div class="ttname"><a href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a></div><div class="ttdeci">struct psa_aead_operation_s psa_aead_operation_t</div><div class="ttdef"><b>Definition:</b> crypto.h:2083</div></div>
+<div class="ttc" id="group__aead_html_ga14f6a01afbaa8c5b3d8c5d345cbaa3ed"><div class="ttname"><a href="group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed">psa_aead_operation_t</a></div><div class="ttdeci">struct psa_aead_operation_s psa_aead_operation_t</div><div class="ttdef"><b>Definition:</b> crypto.h:2080</div></div>
<div class="ttc" id="group__derivation_html_ga1b30e888db65c71f5337900848e1b03f"><div class="ttname"><a href="group__derivation.html#ga1b30e888db65c71f5337900848e1b03f">psa_key_derivation_input_bytes</a></div><div class="ttdeci">psa_status_t psa_key_derivation_input_bytes(psa_crypto_generator_t *generator, psa_key_derivation_step_t step, const uint8_t *data, size_t data_length)</div></div>
<div class="ttc" id="group__import__export_html_gae260b92e32ac5d63f7dfc6ffdf6536f7"><div class="ttname"><a href="group__import__export.html#gae260b92e32ac5d63f7dfc6ffdf6536f7">psa_get_key_domain_parameters</a></div><div class="ttdeci">psa_status_t psa_get_key_domain_parameters(psa_key_handle_t handle, uint8_t *data, size_t data_size, size_t *data_length)</div><div class="ttdoc">Get domain parameters for a key. </div></div>
<div class="ttc" id="crypto__types_8h_html"><div class="ttname"><a href="crypto__types_8h.html">crypto_types.h</a></div><div class="ttdoc">PSA cryptography module: type aliases. </div></div>
@@ -137,9 +137,9 @@
<div class="ttc" id="group__generators_html_ga7fcdf07cd37279ca167db484053da894"><div class="ttname"><a href="group__generators.html#ga7fcdf07cd37279ca167db484053da894">psa_generator_import_key</a></div><div class="ttdeci">psa_status_t psa_generator_import_key(psa_key_handle_t handle, psa_key_type_t type, size_t bits, psa_crypto_generator_t *generator)</div></div>
<div class="ttc" id="group__hash_html_ga39673348f3302b4646bd780034a5aeda"><div class="ttname"><a href="group__hash.html#ga39673348f3302b4646bd780034a5aeda">psa_hash_clone</a></div><div class="ttdeci">psa_status_t psa_hash_clone(const psa_hash_operation_t *source_operation, psa_hash_operation_t *target_operation)</div></div>
<div class="ttc" id="group__policy_html_gaed087d1386b807edee66b2e445ba9111"><div class="ttname"><a href="group__policy.html#gaed087d1386b807edee66b2e445ba9111">psa_get_key_policy</a></div><div class="ttdeci">psa_status_t psa_get_key_policy(psa_key_handle_t handle, psa_key_policy_t *policy)</div><div class="ttdoc">Get the usage policy for a key slot. </div></div>
-<div class="ttc" id="structpsa__generate__key__extra__rsa_html_a53ccb9e4375f3c9af6e3ecfe111ce11d"><div class="ttname"><a href="structpsa__generate__key__extra__rsa.html#a53ccb9e4375f3c9af6e3ecfe111ce11d">psa_generate_key_extra_rsa::e</a></div><div class="ttdeci">uint32_t e</div><div class="ttdef"><b>Definition:</b> crypto.h:3255</div></div>
+<div class="ttc" id="structpsa__generate__key__extra__rsa_html_a53ccb9e4375f3c9af6e3ecfe111ce11d"><div class="ttname"><a href="structpsa__generate__key__extra__rsa.html#a53ccb9e4375f3c9af6e3ecfe111ce11d">psa_generate_key_extra_rsa::e</a></div><div class="ttdeci">uint32_t e</div><div class="ttdef"><b>Definition:</b> crypto.h:3256</div></div>
<div class="ttc" id="group__crypto__types_html_gac2e4d47f1300d73c2f829a6d99252d69"><div class="ttname"><a href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a></div><div class="ttdeci">uint32_t psa_algorithm_t</div><div class="ttdoc">Encoding of a cryptographic algorithm. </div><div class="ttdef"><b>Definition:</b> crypto_types.h:74</div></div>
-<div class="ttc" id="group__hash_html_ga3c4205d2ce66c4095fc5c78c25273fab"><div class="ttname"><a href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a></div><div class="ttdeci">struct psa_hash_operation_s psa_hash_operation_t</div><div class="ttdef"><b>Definition:</b> crypto.h:908</div></div>
+<div class="ttc" id="group__hash_html_ga3c4205d2ce66c4095fc5c78c25273fab"><div class="ttname"><a href="group__hash.html#ga3c4205d2ce66c4095fc5c78c25273fab">psa_hash_operation_t</a></div><div class="ttdeci">struct psa_hash_operation_s psa_hash_operation_t</div><div class="ttdef"><b>Definition:</b> crypto.h:907</div></div>
<div class="ttc" id="group__aead_html_ga44de092cf58bb6c820c5c80a6c51610d"><div class="ttname"><a href="group__aead.html#ga44de092cf58bb6c820c5c80a6c51610d">psa_aead_encrypt</a></div><div class="ttdeci">psa_status_t psa_aead_encrypt(psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *nonce, size_t nonce_length, const uint8_t *additional_data, size_t additional_data_length, const uint8_t *plaintext, size_t plaintext_length, uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length)</div></div>
<div class="ttc" id="group__MAC_html_gacd8dd54855ba1bc0a03f104f252884fd"><div class="ttname"><a href="group__MAC.html#gacd8dd54855ba1bc0a03f104f252884fd">psa_mac_abort</a></div><div class="ttdeci">psa_status_t psa_mac_abort(psa_mac_operation_t *operation)</div></div>
<div class="ttc" id="group__hash_html_ga8d72896cf70fc4d514c5c6b978912515"><div class="ttname"><a href="group__hash.html#ga8d72896cf70fc4d514c5c6b978912515">psa_hash_setup</a></div><div class="ttdeci">psa_status_t psa_hash_setup(psa_hash_operation_t *operation, psa_algorithm_t alg)</div></div>
@@ -159,10 +159,10 @@
<div class="ttc" id="group__hash_html_gab0b4d5f9912a615559497a467b532928"><div class="ttname"><a href="group__hash.html#gab0b4d5f9912a615559497a467b532928">psa_hash_abort</a></div><div class="ttdeci">psa_status_t psa_hash_abort(psa_hash_operation_t *operation)</div></div>
<div class="ttc" id="group__key__management_html_ga1e4825ab59260aeb3bdbb3ff07210022"><div class="ttname"><a href="group__key__management.html#ga1e4825ab59260aeb3bdbb3ff07210022">psa_get_key_lifetime</a></div><div class="ttdeci">psa_status_t psa_get_key_lifetime(psa_key_handle_t handle, psa_key_lifetime_t *lifetime)</div><div class="ttdoc">Retrieve the lifetime of an open key. </div></div>
<div class="ttc" id="group__aead_html_ga3b105de2088cef7c3d9e2fd8048c841c"><div class="ttname"><a href="group__aead.html#ga3b105de2088cef7c3d9e2fd8048c841c">psa_aead_update</a></div><div class="ttdeci">psa_status_t psa_aead_update(psa_aead_operation_t *operation, const uint8_t *input, size_t input_length, unsigned char *output, size_t output_size, size_t *output_length)</div></div>
-<div class="ttc" id="group__cipher_html_ga1399de29db657e3737bb09927aae51fa"><div class="ttname"><a href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a></div><div class="ttdeci">struct psa_cipher_operation_s psa_cipher_operation_t</div><div class="ttdef"><b>Definition:</b> crypto.h:1625</div></div>
+<div class="ttc" id="group__cipher_html_ga1399de29db657e3737bb09927aae51fa"><div class="ttname"><a href="group__cipher.html#ga1399de29db657e3737bb09927aae51fa">psa_cipher_operation_t</a></div><div class="ttdeci">struct psa_cipher_operation_s psa_cipher_operation_t</div><div class="ttdef"><b>Definition:</b> crypto.h:1622</div></div>
<div class="ttc" id="group__crypto__types_html_ga578159487dfc7096cb191b0d2befe628"><div class="ttname"><a href="group__crypto__types.html#ga578159487dfc7096cb191b0d2befe628">psa_key_type_t</a></div><div class="ttdeci">uint32_t psa_key_type_t</div><div class="ttdoc">Encoding of a key type. </div><div class="ttdef"><b>Definition:</b> crypto_types.h:61</div></div>
<div class="ttc" id="group__aead_html_gaaed211fc61977c859d6ff07f39f59219"><div class="ttname"><a href="group__aead.html#gaaed211fc61977c859d6ff07f39f59219">psa_aead_verify</a></div><div class="ttdeci">psa_status_t psa_aead_verify(psa_aead_operation_t *operation, const uint8_t *tag, size_t tag_length)</div></div>
-<div class="ttc" id="group__MAC_html_ga78f0838b0c4e3db28b26355624d4bd37"><div class="ttname"><a href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a></div><div class="ttdeci">struct psa_mac_operation_s psa_mac_operation_t</div><div class="ttdef"><b>Definition:</b> crypto.h:1240</div></div>
+<div class="ttc" id="group__MAC_html_ga78f0838b0c4e3db28b26355624d4bd37"><div class="ttname"><a href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a></div><div class="ttdeci">struct psa_mac_operation_s psa_mac_operation_t</div><div class="ttdef"><b>Definition:</b> crypto.h:1237</div></div>
<div class="ttc" id="group__aead_html_gae8a5f93d92318c8f592ee9fbb9d36ba0"><div class="ttname"><a href="group__aead.html#gae8a5f93d92318c8f592ee9fbb9d36ba0">psa_aead_abort</a></div><div class="ttdeci">psa_status_t psa_aead_abort(psa_aead_operation_t *operation)</div></div>
<div class="ttc" id="group__policy_html_gaadf16b89ace53e1d2cb5bcb0aef24c86"><div class="ttname"><a href="group__policy.html#gaadf16b89ace53e1d2cb5bcb0aef24c86">psa_key_policy_get_algorithm</a></div><div class="ttdeci">psa_algorithm_t psa_key_policy_get_algorithm(const psa_key_policy_t *policy)</div><div class="ttdoc">Retrieve the algorithm field of a policy structure. </div></div>
<div class="ttc" id="group__key__lifetimes_html_ga6821ff6dd39dc2bc370ded760ad8b0cf"><div class="ttname"><a href="group__key__lifetimes.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a></div><div class="ttdeci">uint32_t psa_key_lifetime_t</div><div class="ttdef"><b>Definition:</b> crypto_types.h:84</div></div>
@@ -178,9 +178,9 @@
<div class="ttc" id="group__derivation_html_ga1825696be813dfac2b8d3d02717e71c5"><div class="ttname"><a href="group__derivation.html#ga1825696be813dfac2b8d3d02717e71c5">psa_key_derivation_setup</a></div><div class="ttdeci">psa_status_t psa_key_derivation_setup(psa_crypto_generator_t *generator, psa_algorithm_t alg)</div></div>
<div class="ttc" id="group__import__export_html_gae8939902d6977ea8ad13eb7b4db9a042"><div class="ttname"><a href="group__import__export.html#gae8939902d6977ea8ad13eb7b4db9a042">psa_get_key_information</a></div><div class="ttdeci">psa_status_t psa_get_key_information(psa_key_handle_t handle, psa_key_type_t *type, size_t *bits)</div><div class="ttdoc">Get basic metadata about a key. </div></div>
<div class="ttc" id="group__asymmetric_html_ga1b0db9d345b5048cdd39357ac2d56c07"><div class="ttname"><a href="group__asymmetric.html#ga1b0db9d345b5048cdd39357ac2d56c07">psa_asymmetric_sign</a></div><div class="ttdeci">psa_status_t psa_asymmetric_sign(psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, uint8_t *signature, size_t signature_size, size_t *signature_length)</div><div class="ttdoc">Sign a hash or short message with a private key. </div></div>
-<div class="ttc" id="group__generators_html_ga1f894c4fba202ef8e307d72caf489e3b"><div class="ttname"><a href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a></div><div class="ttdeci">struct psa_crypto_generator_s psa_crypto_generator_t</div><div class="ttdef"><b>Definition:</b> crypto.h:2808</div></div>
+<div class="ttc" id="group__generators_html_ga1f894c4fba202ef8e307d72caf489e3b"><div class="ttname"><a href="group__generators.html#ga1f894c4fba202ef8e307d72caf489e3b">psa_crypto_generator_t</a></div><div class="ttdeci">struct psa_crypto_generator_s psa_crypto_generator_t</div><div class="ttdef"><b>Definition:</b> crypto.h:2805</div></div>
<div class="ttc" id="group__hash_html_ga4795fd06a0067b0adcd92e9627b8c97e"><div class="ttname"><a href="group__hash.html#ga4795fd06a0067b0adcd92e9627b8c97e">psa_hash_finish</a></div><div class="ttdeci">psa_status_t psa_hash_finish(psa_hash_operation_t *operation, uint8_t *hash, size_t hash_size, size_t *hash_length)</div></div>
-<div class="ttc" id="structpsa__generate__key__extra__rsa_html"><div class="ttname"><a href="structpsa__generate__key__extra__rsa.html">psa_generate_key_extra_rsa</a></div><div class="ttdef"><b>Definition:</b> crypto.h:3254</div></div>
+<div class="ttc" id="structpsa__generate__key__extra__rsa_html"><div class="ttname"><a href="structpsa__generate__key__extra__rsa.html">psa_generate_key_extra_rsa</a></div><div class="ttdef"><b>Definition:</b> crypto.h:3255</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
diff --git a/docs/html/crypto__sizes_8h.html b/docs/html/crypto__sizes_8h.html
index 86f0472..e09d0f1 100644
--- a/docs/html/crypto__sizes_8h.html
+++ b/docs/html/crypto__sizes_8h.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
@@ -147,8 +147,8 @@
<tr class="separator:aa84c5fb384ac7cb1bfc52adde96588ee"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a85667d47a7aa6c7b99a80e5273671266"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="crypto__sizes_8h.html#a85667d47a7aa6c7b99a80e5273671266">PSA_AEAD_ENCRYPT_OUTPUT_SIZE</a>(alg, plaintext_length)</td></tr>
<tr class="separator:a85667d47a7aa6c7b99a80e5273671266"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af45d92c1d7ef43822b8df21ab1117d3f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="crypto__sizes_8h.html#af45d92c1d7ef43822b8df21ab1117d3f">PSA_AEAD_FINISH_OUTPUT_SIZE</a>(alg, plaintext_length)   ((size_t)0)</td></tr>
-<tr class="separator:af45d92c1d7ef43822b8df21ab1117d3f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab097f6e054f1a73e975d597ade9029a6"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="crypto__sizes_8h.html#ab097f6e054f1a73e975d597ade9029a6">PSA_AEAD_FINISH_OUTPUT_SIZE</a>(alg)   ((size_t)0)</td></tr>
+<tr class="separator:ab097f6e054f1a73e975d597ade9029a6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a1d057796166c16eb673ad1997e48a60b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="crypto__sizes_8h.html#a1d057796166c16eb673ad1997e48a60b">PSA_AEAD_DECRYPT_OUTPUT_SIZE</a>(alg, ciphertext_length)</td></tr>
<tr class="separator:a1d057796166c16eb673ad1997e48a60b"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aec0bcba60e7514b83f967b171d494ed3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><b>PSA_RSA_MINIMUM_PADDING_SIZE</b>(alg)</td></tr>
@@ -221,7 +221,7 @@
<p>If the size of the plaintext buffer is at least this large, it is guaranteed that <a class="el" href="group__aead.html#gaa8ce6527f2e227f1071fadbf2099793b">psa_aead_decrypt()</a> will not fail due to an insufficient buffer size. Depending on the algorithm, the actual size of the plaintext may be smaller.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">alg</td><td>An AEAD algorithm (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#ga1d44829d60065eaa4ac9a703e7d6abc8">PSA_ALG_IS_AEAD(alg)</a> is true). </td></tr>
+ <tr><td class="paramname">alg</td><td>An AEAD algorithm (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#ga1d44829d60065eaa4ac9a703e7d6abc8">PSA_ALG_IS_AEAD</a>(<code>alg</code>) is true). </td></tr>
<tr><td class="paramname">ciphertext_length</td><td>Size of the plaintext in bytes.</td></tr>
</table>
</dd>
@@ -258,7 +258,7 @@
<p>If the size of the ciphertext buffer is at least this large, it is guaranteed that <a class="el" href="group__aead.html#ga44de092cf58bb6c820c5c80a6c51610d">psa_aead_encrypt()</a> will not fail due to an insufficient buffer size. Depending on the algorithm, the actual size of the ciphertext may be smaller.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">alg</td><td>An AEAD algorithm (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#ga1d44829d60065eaa4ac9a703e7d6abc8">PSA_ALG_IS_AEAD(alg)</a> is true). </td></tr>
+ <tr><td class="paramname">alg</td><td>An AEAD algorithm (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#ga1d44829d60065eaa4ac9a703e7d6abc8">PSA_ALG_IS_AEAD</a>(<code>alg</code>) is true). </td></tr>
<tr><td class="paramname">plaintext_length</td><td>Size of the plaintext in bytes.</td></tr>
</table>
</dd>
@@ -267,7 +267,7 @@
</div>
</div>
-<a class="anchor" id="af45d92c1d7ef43822b8df21ab1117d3f"></a>
+<a class="anchor" id="ab097f6e054f1a73e975d597ade9029a6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -275,18 +275,8 @@
<td class="memname">#define PSA_AEAD_FINISH_OUTPUT_SIZE</td>
<td>(</td>
<td class="paramtype"> </td>
- <td class="paramname">alg, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"> </td>
- <td class="paramname">plaintext_length </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td>   ((size_t)0)</td>
+ <td class="paramname">alg</td><td>)</td>
+ <td>   ((size_t)0)</td>
</tr>
</table>
</div><div class="memdoc">
@@ -294,7 +284,7 @@
<p>If the size of the ciphertext buffer is at least this large, it is guaranteed that <a class="el" href="group__aead.html#ga759791bbe1763b377c3b5447641f1fc8">psa_aead_finish()</a> will not fail due to an insufficient buffer size. Depending on the algorithm, the actual size of the ciphertext may be smaller.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">alg</td><td>An AEAD algorithm (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#ga1d44829d60065eaa4ac9a703e7d6abc8">PSA_ALG_IS_AEAD(alg)</a> is true).</td></tr>
+ <tr><td class="paramname">alg</td><td>An AEAD algorithm (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#ga1d44829d60065eaa4ac9a703e7d6abc8">PSA_ALG_IS_AEAD</a>(<code>alg</code>) is true).</td></tr>
</table>
</dd>
</dl>
@@ -546,16 +536,16 @@
</tr>
</table>
</div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line">( \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD2 ? 16 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD4 ? 16 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD5 ? 16 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_RIPEMD160 ? 20 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_1 ? 20 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#ga25d6a3244d10a7148fe6b026d1979f7b">PSA_ALG_SHA_224</a> ? 28 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#ga619471f978e13cdd0a1e37145e4bf341">PSA_ALG_SHA_256</a> ? 32 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#ga58af64dd9a86a287e8da9ed7739eead4">PSA_ALG_SHA_384</a> ? 48 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#gafba3ae409f46d3dd7f37a0910660c3e9">PSA_ALG_SHA_512</a> ? 64 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#ga3fe2d7c3c80e3186ca78d16a35d5d931">PSA_ALG_SHA_512_224</a> ? 28 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#ga5910b3964c14e9613e8643a45b09c2d4">PSA_ALG_SHA_512_256</a> ? 32 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#ga16f5fe34ccce68c2fada1224c054a999">PSA_ALG_SHA3_224</a> ? 28 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#gaace70d9515489bbe3c5e7ac1b7d9155b">PSA_ALG_SHA3_256</a> ? 32 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#gab0f079257ea75e2acfe2fc3b38c78cd8">PSA_ALG_SHA3_384</a> ? 48 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#ga37e5dbe936dddb155e76f2997de27188">PSA_ALG_SHA3_512</a> ? 64 : \</div><div class="line"> 0)</div><div class="ttc" id="group__crypto__types_html_gaace70d9515489bbe3c5e7ac1b7d9155b"><div class="ttname"><a href="group__crypto__types.html#gaace70d9515489bbe3c5e7ac1b7d9155b">PSA_ALG_SHA3_256</a></div><div class="ttdeci">#define PSA_ALG_SHA3_256</div><div class="ttdef"><b>Definition:</b> crypto_values.h:673</div></div>
-<div class="ttc" id="group__crypto__types_html_ga16f5fe34ccce68c2fada1224c054a999"><div class="ttname"><a href="group__crypto__types.html#ga16f5fe34ccce68c2fada1224c054a999">PSA_ALG_SHA3_224</a></div><div class="ttdeci">#define PSA_ALG_SHA3_224</div><div class="ttdef"><b>Definition:</b> crypto_values.h:671</div></div>
-<div class="ttc" id="group__crypto__types_html_ga37e5dbe936dddb155e76f2997de27188"><div class="ttname"><a href="group__crypto__types.html#ga37e5dbe936dddb155e76f2997de27188">PSA_ALG_SHA3_512</a></div><div class="ttdeci">#define PSA_ALG_SHA3_512</div><div class="ttdef"><b>Definition:</b> crypto_values.h:677</div></div>
-<div class="ttc" id="group__crypto__types_html_ga619471f978e13cdd0a1e37145e4bf341"><div class="ttname"><a href="group__crypto__types.html#ga619471f978e13cdd0a1e37145e4bf341">PSA_ALG_SHA_256</a></div><div class="ttdeci">#define PSA_ALG_SHA_256</div><div class="ttdef"><b>Definition:</b> crypto_values.h:661</div></div>
-<div class="ttc" id="group__crypto__types_html_gafba3ae409f46d3dd7f37a0910660c3e9"><div class="ttname"><a href="group__crypto__types.html#gafba3ae409f46d3dd7f37a0910660c3e9">PSA_ALG_SHA_512</a></div><div class="ttdeci">#define PSA_ALG_SHA_512</div><div class="ttdef"><b>Definition:</b> crypto_values.h:665</div></div>
-<div class="ttc" id="group__crypto__types_html_ga25d6a3244d10a7148fe6b026d1979f7b"><div class="ttname"><a href="group__crypto__types.html#ga25d6a3244d10a7148fe6b026d1979f7b">PSA_ALG_SHA_224</a></div><div class="ttdeci">#define PSA_ALG_SHA_224</div><div class="ttdef"><b>Definition:</b> crypto_values.h:659</div></div>
-<div class="ttc" id="group__crypto__types_html_ga58af64dd9a86a287e8da9ed7739eead4"><div class="ttname"><a href="group__crypto__types.html#ga58af64dd9a86a287e8da9ed7739eead4">PSA_ALG_SHA_384</a></div><div class="ttdeci">#define PSA_ALG_SHA_384</div><div class="ttdef"><b>Definition:</b> crypto_values.h:663</div></div>
-<div class="ttc" id="group__crypto__types_html_ga3fe2d7c3c80e3186ca78d16a35d5d931"><div class="ttname"><a href="group__crypto__types.html#ga3fe2d7c3c80e3186ca78d16a35d5d931">PSA_ALG_SHA_512_224</a></div><div class="ttdeci">#define PSA_ALG_SHA_512_224</div><div class="ttdef"><b>Definition:</b> crypto_values.h:667</div></div>
-<div class="ttc" id="group__crypto__types_html_ga5910b3964c14e9613e8643a45b09c2d4"><div class="ttname"><a href="group__crypto__types.html#ga5910b3964c14e9613e8643a45b09c2d4">PSA_ALG_SHA_512_256</a></div><div class="ttdeci">#define PSA_ALG_SHA_512_256</div><div class="ttdef"><b>Definition:</b> crypto_values.h:669</div></div>
-<div class="ttc" id="group__crypto__types_html_gab0f079257ea75e2acfe2fc3b38c78cd8"><div class="ttname"><a href="group__crypto__types.html#gab0f079257ea75e2acfe2fc3b38c78cd8">PSA_ALG_SHA3_384</a></div><div class="ttdeci">#define PSA_ALG_SHA3_384</div><div class="ttdef"><b>Definition:</b> crypto_values.h:675</div></div>
+<b>Value:</b><div class="fragment"><div class="line">( \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD2 ? 16 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD4 ? 16 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD5 ? 16 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_RIPEMD160 ? 20 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_1 ? 20 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#ga25d6a3244d10a7148fe6b026d1979f7b">PSA_ALG_SHA_224</a> ? 28 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#ga619471f978e13cdd0a1e37145e4bf341">PSA_ALG_SHA_256</a> ? 32 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#ga58af64dd9a86a287e8da9ed7739eead4">PSA_ALG_SHA_384</a> ? 48 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#gafba3ae409f46d3dd7f37a0910660c3e9">PSA_ALG_SHA_512</a> ? 64 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#ga3fe2d7c3c80e3186ca78d16a35d5d931">PSA_ALG_SHA_512_224</a> ? 28 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#ga5910b3964c14e9613e8643a45b09c2d4">PSA_ALG_SHA_512_256</a> ? 32 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#ga16f5fe34ccce68c2fada1224c054a999">PSA_ALG_SHA3_224</a> ? 28 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#gaace70d9515489bbe3c5e7ac1b7d9155b">PSA_ALG_SHA3_256</a> ? 32 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#gab0f079257ea75e2acfe2fc3b38c78cd8">PSA_ALG_SHA3_384</a> ? 48 : \</div><div class="line"> PSA_ALG_HMAC_GET_HASH(alg) == <a class="code" href="group__crypto__types.html#ga37e5dbe936dddb155e76f2997de27188">PSA_ALG_SHA3_512</a> ? 64 : \</div><div class="line"> 0)</div><div class="ttc" id="group__crypto__types_html_gaace70d9515489bbe3c5e7ac1b7d9155b"><div class="ttname"><a href="group__crypto__types.html#gaace70d9515489bbe3c5e7ac1b7d9155b">PSA_ALG_SHA3_256</a></div><div class="ttdeci">#define PSA_ALG_SHA3_256</div><div class="ttdef"><b>Definition:</b> crypto_values.h:660</div></div>
+<div class="ttc" id="group__crypto__types_html_ga16f5fe34ccce68c2fada1224c054a999"><div class="ttname"><a href="group__crypto__types.html#ga16f5fe34ccce68c2fada1224c054a999">PSA_ALG_SHA3_224</a></div><div class="ttdeci">#define PSA_ALG_SHA3_224</div><div class="ttdef"><b>Definition:</b> crypto_values.h:658</div></div>
+<div class="ttc" id="group__crypto__types_html_ga37e5dbe936dddb155e76f2997de27188"><div class="ttname"><a href="group__crypto__types.html#ga37e5dbe936dddb155e76f2997de27188">PSA_ALG_SHA3_512</a></div><div class="ttdeci">#define PSA_ALG_SHA3_512</div><div class="ttdef"><b>Definition:</b> crypto_values.h:664</div></div>
+<div class="ttc" id="group__crypto__types_html_ga619471f978e13cdd0a1e37145e4bf341"><div class="ttname"><a href="group__crypto__types.html#ga619471f978e13cdd0a1e37145e4bf341">PSA_ALG_SHA_256</a></div><div class="ttdeci">#define PSA_ALG_SHA_256</div><div class="ttdef"><b>Definition:</b> crypto_values.h:648</div></div>
+<div class="ttc" id="group__crypto__types_html_gafba3ae409f46d3dd7f37a0910660c3e9"><div class="ttname"><a href="group__crypto__types.html#gafba3ae409f46d3dd7f37a0910660c3e9">PSA_ALG_SHA_512</a></div><div class="ttdeci">#define PSA_ALG_SHA_512</div><div class="ttdef"><b>Definition:</b> crypto_values.h:652</div></div>
+<div class="ttc" id="group__crypto__types_html_ga25d6a3244d10a7148fe6b026d1979f7b"><div class="ttname"><a href="group__crypto__types.html#ga25d6a3244d10a7148fe6b026d1979f7b">PSA_ALG_SHA_224</a></div><div class="ttdeci">#define PSA_ALG_SHA_224</div><div class="ttdef"><b>Definition:</b> crypto_values.h:646</div></div>
+<div class="ttc" id="group__crypto__types_html_ga58af64dd9a86a287e8da9ed7739eead4"><div class="ttname"><a href="group__crypto__types.html#ga58af64dd9a86a287e8da9ed7739eead4">PSA_ALG_SHA_384</a></div><div class="ttdeci">#define PSA_ALG_SHA_384</div><div class="ttdef"><b>Definition:</b> crypto_values.h:650</div></div>
+<div class="ttc" id="group__crypto__types_html_ga3fe2d7c3c80e3186ca78d16a35d5d931"><div class="ttname"><a href="group__crypto__types.html#ga3fe2d7c3c80e3186ca78d16a35d5d931">PSA_ALG_SHA_512_224</a></div><div class="ttdeci">#define PSA_ALG_SHA_512_224</div><div class="ttdef"><b>Definition:</b> crypto_values.h:654</div></div>
+<div class="ttc" id="group__crypto__types_html_ga5910b3964c14e9613e8643a45b09c2d4"><div class="ttname"><a href="group__crypto__types.html#ga5910b3964c14e9613e8643a45b09c2d4">PSA_ALG_SHA_512_256</a></div><div class="ttdeci">#define PSA_ALG_SHA_512_256</div><div class="ttdef"><b>Definition:</b> crypto_values.h:656</div></div>
+<div class="ttc" id="group__crypto__types_html_gab0f079257ea75e2acfe2fc3b38c78cd8"><div class="ttname"><a href="group__crypto__types.html#gab0f079257ea75e2acfe2fc3b38c78cd8">PSA_ALG_SHA3_384</a></div><div class="ttdeci">#define PSA_ALG_SHA3_384</div><div class="ttdef"><b>Definition:</b> crypto_values.h:662</div></div>
</div><!-- fragment --><p>The size of the output of <a class="el" href="group__hash.html#ga4795fd06a0067b0adcd92e9627b8c97e">psa_hash_finish()</a>, in bytes.</p>
<p>This is also the hash size that <a class="el" href="group__hash.html#ga7be923c5700c9c70ef77ee9b76d1a5c0">psa_hash_verify()</a> expects.</p>
<dl class="params"><dt>Parameters</dt><dd>
@@ -642,17 +632,17 @@
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((alg) & PSA_ALG_MAC_TRUNCATION_MASK ? <a class="code" href="group__crypto__types.html#gab03726c4476174e019a08e2a04018ce8">PSA_MAC_TRUNCATED_LENGTH</a>(alg) : <a class="code" href="group__crypto__types.html#ga4a050c3c3cbc6eb96418f18847601c8a">\</a></div><div class="line"><a class="code" href="group__crypto__types.html#ga4a050c3c3cbc6eb96418f18847601c8a"> PSA_ALG_IS_HMAC</a>(alg) ? <a class="code" href="crypto__sizes_8h.html#aef340331ce3cba2b57e1fc5624bf1f99">PSA_HASH_SIZE</a>(PSA_ALG_HMAC_GET_HASH(alg)) : \</div><div class="line"> <a class="code" href="group__crypto__types.html#gae49d1eb601125d65a5c5b252aa45479e">PSA_ALG_IS_BLOCK_CIPHER_MAC</a>(alg) ? <a class="code" href="group__crypto__types.html#gacaa366bdeb0413e63e87a667c5457b2e">PSA_BLOCK_CIPHER_BLOCK_SIZE</a>(key_type) : \</div><div class="line"> ((void)(key_type), (void)(key_bits), 0))</div><div class="ttc" id="crypto__sizes_8h_html_aef340331ce3cba2b57e1fc5624bf1f99"><div class="ttname"><a href="crypto__sizes_8h.html#aef340331ce3cba2b57e1fc5624bf1f99">PSA_HASH_SIZE</a></div><div class="ttdeci">#define PSA_HASH_SIZE(alg)</div><div class="ttdef"><b>Definition:</b> crypto_sizes.h:70</div></div>
-<div class="ttc" id="group__crypto__types_html_gae49d1eb601125d65a5c5b252aa45479e"><div class="ttname"><a href="group__crypto__types.html#gae49d1eb601125d65a5c5b252aa45479e">PSA_ALG_IS_BLOCK_CIPHER_MAC</a></div><div class="ttdeci">#define PSA_ALG_IS_BLOCK_CIPHER_MAC(alg)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:836</div></div>
+<div class="ttc" id="group__crypto__types_html_gae49d1eb601125d65a5c5b252aa45479e"><div class="ttname"><a href="group__crypto__types.html#gae49d1eb601125d65a5c5b252aa45479e">PSA_ALG_IS_BLOCK_CIPHER_MAC</a></div><div class="ttdeci">#define PSA_ALG_IS_BLOCK_CIPHER_MAC(alg)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:823</div></div>
<div class="ttc" id="group__crypto__types_html_gacaa366bdeb0413e63e87a667c5457b2e"><div class="ttname"><a href="group__crypto__types.html#gacaa366bdeb0413e63e87a667c5457b2e">PSA_BLOCK_CIPHER_BLOCK_SIZE</a></div><div class="ttdeci">#define PSA_BLOCK_CIPHER_BLOCK_SIZE(type)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:527</div></div>
-<div class="ttc" id="group__crypto__types_html_gab03726c4476174e019a08e2a04018ce8"><div class="ttname"><a href="group__crypto__types.html#gab03726c4476174e019a08e2a04018ce8">PSA_MAC_TRUNCATED_LENGTH</a></div><div class="ttdeci">#define PSA_MAC_TRUNCATED_LENGTH(alg)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:820</div></div>
-<div class="ttc" id="group__crypto__types_html_ga4a050c3c3cbc6eb96418f18847601c8a"><div class="ttname"><a href="group__crypto__types.html#ga4a050c3c3cbc6eb96418f18847601c8a">PSA_ALG_IS_HMAC</a></div><div class="ttdeci">#define PSA_ALG_IS_HMAC(alg)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:743</div></div>
+<div class="ttc" id="group__crypto__types_html_gab03726c4476174e019a08e2a04018ce8"><div class="ttname"><a href="group__crypto__types.html#gab03726c4476174e019a08e2a04018ce8">PSA_MAC_TRUNCATED_LENGTH</a></div><div class="ttdeci">#define PSA_MAC_TRUNCATED_LENGTH(alg)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:807</div></div>
+<div class="ttc" id="group__crypto__types_html_ga4a050c3c3cbc6eb96418f18847601c8a"><div class="ttname"><a href="group__crypto__types.html#ga4a050c3c3cbc6eb96418f18847601c8a">PSA_ALG_IS_HMAC</a></div><div class="ttdeci">#define PSA_ALG_IS_HMAC(alg)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:730</div></div>
</div><!-- fragment --><p>The size of the output of <a class="el" href="group__MAC.html#gac22bc0125580c96724a09226cfbc97f2">psa_mac_sign_finish()</a>, in bytes.</p>
<p>This is also the MAC size that <a class="el" href="group__MAC.html#gac92b2930d6728e1be4d011c05d485822">psa_mac_verify_finish()</a> expects.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">key_type</td><td>The type of the MAC key. </td></tr>
<tr><td class="paramname">key_bits</td><td>The size of the MAC key in bits. </td></tr>
- <tr><td class="paramname">alg</td><td>A MAC algorithm (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#gaca7aee4c9dde316b3b1a150a26eab776">PSA_ALG_IS_MAC(alg)</a> is true).</td></tr>
+ <tr><td class="paramname">alg</td><td>A MAC algorithm (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#gaca7aee4c9dde316b3b1a150a26eab776">PSA_ALG_IS_MAC</a>(<code>alg</code>) is true).</td></tr>
</table>
</dd>
</dl>
diff --git a/docs/html/crypto__sizes_8h_source.html b/docs/html/crypto__sizes_8h_source.html
index 2b365ec..655f87b 100644
--- a/docs/html/crypto__sizes_8h_source.html
+++ b/docs/html/crypto__sizes_8h_source.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
@@ -90,7 +90,7 @@
<div class="title">crypto_sizes.h</div> </div>
</div><!--header-->
<div class="contents">
-<a href="crypto__sizes_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * Copyright (C) 2018, ARM Limited, All Rights Reserved</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * SPDX-License-Identifier: Apache-2.0</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License"); you may</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * not use this file except in compliance with the License.</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> *</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment"> *</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment"> * This file is part of mbed TLS (https://tls.mbed.org)</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment"> */</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#ifndef PSA_CRYPTO_SIZES_H</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#define PSA_CRYPTO_SIZES_H</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">/* Include the Mbed TLS configuration file, the way Mbed TLS does it</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment"> * in each of its header files. */</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#if !defined(MBEDTLS_CONFIG_FILE)</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include "../mbedtls/config.h"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include MBEDTLS_CONFIG_FILE</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#define PSA_BITS_TO_BYTES(bits) (((bits) + 7) / 8)</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#define PSA_BYTES_TO_BITS(bytes) ((bytes) * 8)</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#aef340331ce3cba2b57e1fc5624bf1f99"> 70</a></span> <span class="preprocessor">#define PSA_HASH_SIZE(alg) \</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor"> ( \</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD2 ? 16 : \</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD4 ? 16 : \</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD5 ? 16 : \</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_RIPEMD160 ? 20 : \</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_1 ? 20 : \</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_224 ? 28 : \</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_256 ? 32 : \</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_384 ? 48 : \</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512 ? 64 : \</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_224 ? 28 : \</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_256 ? 32 : \</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_224 ? 28 : \</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_256 ? 32 : \</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_384 ? 48 : \</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_512 ? 64 : \</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment">/* Note: for HMAC-SHA-3, the block size is 144 bytes for HMAC-SHA3-226,</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment"> * 136 bytes for HMAC-SHA3-256, 104 bytes for SHA3-384, 72 bytes for</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment"> * HMAC-SHA3-512. */</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor">#if defined(MBEDTLS_SHA512_C)</span></div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a6ce1014efbbc0bcca286ef7f9a72cb29"> 101</a></span> <span class="preprocessor">#define PSA_HASH_MAX_SIZE 64</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor">#define PSA_HMAC_MAX_HASH_BLOCK_SIZE 128</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#define PSA_HASH_MAX_SIZE 32</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#define PSA_HMAC_MAX_HASH_BLOCK_SIZE 64</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment">/* All non-HMAC MACs have a maximum size that's smaller than the</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="comment"> * minimum possible value of PSA_HASH_MAX_SIZE in this implementation. */</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="comment">/* Note that the encoding of truncated MAC algorithms limits this value</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment"> * to 64 bytes.</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="comment"> */</span></div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a4681cc4f6226883a2160122c562ca682"> 121</a></span> <span class="preprocessor">#define PSA_MAC_MAX_SIZE PSA_HASH_MAX_SIZE</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a8e3079b2e624cb8d32b94843cddada49"> 138</a></span> <span class="preprocessor">#define PSA_AEAD_TAG_LENGTH(alg) \</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor"> (PSA_ALG_IS_AEAD(alg) ? \</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor"> (((alg) & PSA_ALG_AEAD_TAG_LENGTH_MASK) >> PSA_AEAD_TAG_LENGTH_OFFSET) : \</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="comment">/* The maximum size of an RSA key on this implementation, in bits.</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="comment"> * This is a vendor-specific macro.</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="comment"> *</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="comment"> * Mbed TLS does not set a hard limit on the size of RSA keys: any key</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="comment"> * whose parameters fit in a bignum is accepted. However large keys can</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="comment"> * induce a large memory usage and long computation times. Unlike other</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="comment"> * auxiliary macros in this file and in crypto.h, which reflect how the</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="comment"> * library is configured, this macro defines how the library is</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment"> * configured. This implementation refuses to import or generate an</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="comment"> * RSA key whose size is larger than the value defined here.</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="comment"> *</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="comment"> * Note that an implementation may set different size limits for different</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="comment"> * operations, and does not need to accept all key sizes up to the limit. */</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">#define PSA_VENDOR_RSA_MAX_KEY_BITS 4096</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="comment">/* The maximum size of an ECC key on this implementation, in bits.</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment"> * This is a vendor-specific macro. */</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor">#if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 521</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_BP512R1_ENABLED)</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 512</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 448</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 384</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_BP384R1_ENABLED)</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 384</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED)</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 256</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 256</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_BP256R1_ENABLED)</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 256</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 255</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED)</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 224</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 224</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED)</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 192</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED)</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 192</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 0</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#ab589ea3b86f2bfa18880459299c58f8a"> 204</a></span> <span class="preprocessor">#define PSA_ALG_TLS12_PSK_TO_MS_MAX_PSK_LEN 128</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#ad755101764dba14589e5919ee41be7ca"> 214</a></span> <span class="preprocessor">#define PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE \</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="preprocessor"> PSA_BITS_TO_BYTES( \</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="preprocessor"> PSA_VENDOR_RSA_MAX_KEY_BITS > PSA_VENDOR_ECC_MAX_CURVE_BITS ? \</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="preprocessor"> PSA_VENDOR_RSA_MAX_KEY_BITS : \</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="preprocessor"> PSA_VENDOR_ECC_MAX_CURVE_BITS \</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="preprocessor"> )</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#aa3cfcff0291d6da279fec8fe834d5dec"> 222</a></span> <span class="preprocessor">#define PSA_MAX_BLOCK_CIPHER_BLOCK_SIZE 16</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#aa84c5fb384ac7cb1bfc52adde96588ee"> 241</a></span> <span class="preprocessor">#define PSA_MAC_FINAL_SIZE(key_type, key_bits, alg) \</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="preprocessor"> ((alg) & PSA_ALG_MAC_TRUNCATION_MASK ? PSA_MAC_TRUNCATED_LENGTH(alg) : \</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="preprocessor"> PSA_ALG_IS_HMAC(alg) ? PSA_HASH_SIZE(PSA_ALG_HMAC_GET_HASH(alg)) : \</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor"> PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) ? PSA_BLOCK_CIPHER_BLOCK_SIZE(key_type) : \</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="preprocessor"> ((void)(key_type), (void)(key_bits), 0))</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a85667d47a7aa6c7b99a80e5273671266"> 266</a></span> <span class="preprocessor">#define PSA_AEAD_ENCRYPT_OUTPUT_SIZE(alg, plaintext_length) \</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor"> (PSA_AEAD_TAG_LENGTH(alg) != 0 ? \</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="preprocessor"> (plaintext_length) + PSA_AEAD_TAG_LENGTH(alg) : \</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#af45d92c1d7ef43822b8df21ab1117d3f"> 289</a></span> <span class="preprocessor">#define PSA_AEAD_FINISH_OUTPUT_SIZE(alg, plaintext_length) \</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="preprocessor"> ((size_t)0)</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a1d057796166c16eb673ad1997e48a60b"> 311</a></span> <span class="preprocessor">#define PSA_AEAD_DECRYPT_OUTPUT_SIZE(alg, ciphertext_length) \</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="preprocessor"> (PSA_AEAD_TAG_LENGTH(alg) != 0 ? \</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="preprocessor"> (plaintext_length) - PSA_AEAD_TAG_LENGTH(alg) : \</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="preprocessor">#define PSA_RSA_MINIMUM_PADDING_SIZE(alg) \</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="preprocessor"> (PSA_ALG_IS_RSA_OAEP(alg) ? \</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="preprocessor"> 2 * PSA_HASH_FINAL_SIZE(PSA_ALG_RSA_OAEP_GET_HASH(alg)) + 1 : \</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="preprocessor"> 11 </span><span class="comment">/*PKCS#1v1.5*/</span><span class="preprocessor">)</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a10c472a35f04051add6b20cc228ffc11"> 329</a></span> <span class="preprocessor">#define PSA_ECDSA_SIGNATURE_SIZE(curve_bits) \</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="preprocessor"> (PSA_BITS_TO_BYTES(curve_bits) * 2)</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a77565b9b4fe6d8730fd2120f4c8378ab"> 358</a></span> <span class="preprocessor">#define PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE(key_type, key_bits, alg) \</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="preprocessor"> (PSA_KEY_TYPE_IS_RSA(key_type) ? ((void)alg, PSA_BITS_TO_BYTES(key_bits)) : \</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="preprocessor"> PSA_KEY_TYPE_IS_ECC(key_type) ? PSA_ECDSA_SIGNATURE_SIZE(key_bits) : \</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="preprocessor"> ((void)alg, 0))</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a66ba3bd93e5ec52870ccc3848778bad8"> 389</a></span> <span class="preprocessor">#define PSA_ASYMMETRIC_ENCRYPT_OUTPUT_SIZE(key_type, key_bits, alg) \</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="preprocessor"> (PSA_KEY_TYPE_IS_RSA(key_type) ? \</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="preprocessor"> ((void)alg, PSA_BITS_TO_BYTES(key_bits)) : \</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> </div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a61a246f3eac41989821d982e56fea6c1"> 420</a></span> <span class="preprocessor">#define PSA_ASYMMETRIC_DECRYPT_OUTPUT_SIZE(key_type, key_bits, alg) \</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="preprocessor"> (PSA_KEY_TYPE_IS_RSA(key_type) ? \</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <span class="preprocessor"> PSA_BITS_TO_BYTES(key_bits) - PSA_RSA_MINIMUM_PADDING_SIZE(alg) : \</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> </div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="comment">/* Maximum size of the ASN.1 encoding of an INTEGER with the specified</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> <span class="comment"> * number of bits.</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> <span class="comment"> *</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <span class="comment"> * This definition assumes that bits <= 2^19 - 9 so that the length field</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> <span class="comment"> * is at most 3 bytes. The length of the encoding is the length of the</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> <span class="comment"> * bit string padded to a whole number of bytes plus:</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="comment"> * - 1 type byte;</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="comment"> * - 1 to 3 length bytes;</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="comment"> * - 0 to 1 bytes of leading 0 due to the sign bit.</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> <span class="comment"> */</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> <span class="preprocessor">#define PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(bits) \</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="preprocessor"> ((bits) / 8 + 5)</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="comment">/* Maximum size of the export encoding of an RSA public key.</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="comment"> * Assumes that the public exponent is less than 2^32.</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="comment"> *</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> <span class="comment"> * SubjectPublicKeyInfo ::= SEQUENCE {</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> <span class="comment"> * algorithm AlgorithmIdentifier,</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="comment"> * subjectPublicKey BIT STRING } -- contains RSAPublicKey</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <span class="comment"> * AlgorithmIdentifier ::= SEQUENCE {</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="comment"> * algorithm OBJECT IDENTIFIER,</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> <span class="comment"> * parameters NULL }</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> <span class="comment"> * RSAPublicKey ::= SEQUENCE {</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="comment"> * modulus INTEGER, -- n</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="comment"> * publicExponent INTEGER } -- e</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> <span class="comment"> *</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <span class="comment"> * - 3 * 4 bytes of SEQUENCE overhead;</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="comment"> * - 1 + 1 + 9 bytes of algorithm (RSA OID);</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="comment"> * - 2 bytes of NULL;</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> <span class="comment"> * - 4 bytes of BIT STRING overhead;</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="comment"> * - n : INTEGER;</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="comment"> * - 7 bytes for the public exponent.</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="comment"> */</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> <span class="preprocessor">#define PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) \</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> <span class="preprocessor"> (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) + 36)</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="comment">/* Maximum size of the export encoding of an RSA key pair.</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="comment"> * Assumes thatthe public exponent is less than 2^32 and that the size</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> <span class="comment"> * difference between the two primes is at most 1 bit.</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="comment"> *</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="comment"> * RSAPrivateKey ::= SEQUENCE {</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="comment"> * version Version, -- 0</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="comment"> * modulus INTEGER, -- N-bit</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> <span class="comment"> * publicExponent INTEGER, -- 32-bit</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="comment"> * privateExponent INTEGER, -- N-bit</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="comment"> * prime1 INTEGER, -- N/2-bit</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="comment"> * prime2 INTEGER, -- N/2-bit</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> <span class="comment"> * exponent1 INTEGER, -- N/2-bit</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="comment"> * exponent2 INTEGER, -- N/2-bit</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="comment"> * coefficient INTEGER, -- N/2-bit</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="comment"> * }</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="comment"> *</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="comment"> * - 4 bytes of SEQUENCE overhead;</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="comment"> * - 3 bytes of version;</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="comment"> * - 7 half-size INTEGERs plus 2 full-size INTEGERs,</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="comment"> * overapproximated as 9 half-size INTEGERS;</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="comment"> * - 7 bytes for the public exponent.</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> <span class="comment"> */</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="preprocessor">#define PSA_KEY_EXPORT_RSA_KEYPAIR_MAX_SIZE(key_bits) \</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> <span class="preprocessor"> (9 * PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE((key_bits) / 2 + 1) + 14)</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="comment">/* Maximum size of the export encoding of a DSA public key.</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="comment"> *</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="comment"> * SubjectPublicKeyInfo ::= SEQUENCE {</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="comment"> * algorithm AlgorithmIdentifier,</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="comment"> * subjectPublicKey BIT STRING } -- contains DSAPublicKey</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="comment"> * AlgorithmIdentifier ::= SEQUENCE {</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="comment"> * algorithm OBJECT IDENTIFIER,</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="comment"> * parameters Dss-Parms } -- SEQUENCE of 3 INTEGERs</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="comment"> * DSAPublicKey ::= INTEGER -- public key, Y</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <span class="comment"> *</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="comment"> * - 3 * 4 bytes of SEQUENCE overhead;</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <span class="comment"> * - 1 + 1 + 7 bytes of algorithm (DSA OID);</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="comment"> * - 4 bytes of BIT STRING overhead;</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> <span class="comment"> * - 3 full-size INTEGERs (p, g, y);</span></div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> <span class="comment"> * - 1 + 1 + 32 bytes for 1 sub-size INTEGER (q <= 256 bits).</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> <span class="comment"> */</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> <span class="preprocessor">#define PSA_KEY_EXPORT_DSA_PUBLIC_KEY_MAX_SIZE(key_bits) \</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="preprocessor"> (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) * 3 + 59)</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> <span class="comment">/* Maximum size of the export encoding of a DSA key pair.</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <span class="comment"> *</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="comment"> * DSAPrivateKey ::= SEQUENCE {</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> <span class="comment"> * version Version, -- 0</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="comment"> * prime INTEGER, -- p</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="comment"> * subprime INTEGER, -- q</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> <span class="comment"> * generator INTEGER, -- g</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> <span class="comment"> * public INTEGER, -- y</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> <span class="comment"> * private INTEGER, -- x</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="comment"> * }</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="comment"> *</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="comment"> * - 4 bytes of SEQUENCE overhead;</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="comment"> * - 3 bytes of version;</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="comment"> * - 3 full-size INTEGERs (p, g, y);</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="comment"> * - 2 * (1 + 1 + 32) bytes for 2 sub-size INTEGERs (q, x <= 256 bits).</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="comment"> */</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> <span class="preprocessor">#define PSA_KEY_EXPORT_DSA_KEYPAIR_MAX_SIZE(key_bits) \</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="preprocessor"> (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) * 3 + 75)</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="comment">/* Maximum size of the export encoding of an ECC public key.</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="comment"> *</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="comment"> * SubjectPublicKeyInfo ::= SEQUENCE {</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="comment"> * algorithm AlgorithmIdentifier,</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="comment"> * subjectPublicKey BIT STRING } -- contains ECPoint</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="comment"> * AlgorithmIdentifier ::= SEQUENCE {</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="comment"> * algorithm OBJECT IDENTIFIER,</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="comment"> * parameters OBJECT IDENTIFIER } -- namedCurve</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="comment"> * ECPoint ::= ...</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <span class="comment"> * -- first 8 bits: 0x04;</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> <span class="comment"> * -- then x_P as a `ceiling(m/8)`-byte string, big endian;</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="comment"> * -- then y_P as a `ceiling(m/8)`-byte string, big endian;</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="comment"> * -- where `m` is the bit size associated with the curve.</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="comment"> *</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> <span class="comment"> * - 2 * 4 bytes of SEQUENCE overhead;</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> <span class="comment"> * - 1 + 1 + 7 bytes of algorithm (id-ecPublicKey OID);</span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="comment"> * - 1 + 1 + 12 bytes of namedCurve OID;</span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="comment"> * - 4 bytes of BIT STRING overhead;</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="comment"> * - 1 byte + 2 * point size in ECPoint.</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="comment"> */</span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> <span class="preprocessor">#define PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_bits) \</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> <span class="preprocessor"> (2 * PSA_BITS_TO_BYTES(key_bits) + 36)</span></div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> <span class="comment">/* Maximum size of the export encoding of an ECC key pair.</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> <span class="comment"> *</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="comment"> * An ECC key pair is represented by the secret value.</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <span class="comment"> */</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="preprocessor">#define PSA_KEY_EXPORT_ECC_KEYPAIR_MAX_SIZE(key_bits) \</span></div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> <span class="preprocessor"> (PSA_BITS_TO_BYTES(key_bits))</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> </div><div class="line"><a name="l00610"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a0aae885cc8ff92e00fb5248420b939c3"> 610</a></span> <span class="preprocessor">#define PSA_KEY_EXPORT_MAX_SIZE(key_type, key_bits) \</span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> <span class="preprocessor"> (PSA_KEY_TYPE_IS_UNSTRUCTURED(key_type) ? PSA_BITS_TO_BYTES(key_bits) : \</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> <span class="preprocessor"> (key_type) == PSA_KEY_TYPE_RSA_KEYPAIR ? PSA_KEY_EXPORT_RSA_KEYPAIR_MAX_SIZE(key_bits) : \</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> <span class="preprocessor"> (key_type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY ? PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="preprocessor"> (key_type) == PSA_KEY_TYPE_DSA_KEYPAIR ? PSA_KEY_EXPORT_DSA_KEYPAIR_MAX_SIZE(key_bits) : \</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> <span class="preprocessor"> (key_type) == PSA_KEY_TYPE_DSA_PUBLIC_KEY ? PSA_KEY_EXPORT_DSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> <span class="preprocessor"> PSA_KEY_TYPE_IS_ECC_KEYPAIR(key_type) ? PSA_KEY_EXPORT_ECC_KEYPAIR_MAX_SIZE(key_bits) : \</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> <span class="preprocessor"> PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(key_type) ? PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_bits) : \</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> </div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="preprocessor">#endif </span><span class="comment">/* PSA_CRYPTO_SIZES_H */</span><span class="preprocessor"></span></div></div><!-- fragment --></div><!-- contents -->
+<a href="crypto__sizes_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * Copyright (C) 2018, ARM Limited, All Rights Reserved</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * SPDX-License-Identifier: Apache-2.0</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License"); you may</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * not use this file except in compliance with the License.</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> *</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment"> *</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment"> * This file is part of mbed TLS (https://tls.mbed.org)</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment"> */</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#ifndef PSA_CRYPTO_SIZES_H</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#define PSA_CRYPTO_SIZES_H</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">/* Include the Mbed TLS configuration file, the way Mbed TLS does it</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment"> * in each of its header files. */</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#if !defined(MBEDTLS_CONFIG_FILE)</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include "../mbedtls/config.h"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include MBEDTLS_CONFIG_FILE</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#define PSA_BITS_TO_BYTES(bits) (((bits) + 7) / 8)</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#define PSA_BYTES_TO_BITS(bytes) ((bytes) * 8)</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#aef340331ce3cba2b57e1fc5624bf1f99"> 70</a></span> <span class="preprocessor">#define PSA_HASH_SIZE(alg) \</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor"> ( \</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD2 ? 16 : \</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD4 ? 16 : \</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD5 ? 16 : \</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_RIPEMD160 ? 20 : \</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_1 ? 20 : \</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_224 ? 28 : \</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_256 ? 32 : \</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_384 ? 48 : \</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512 ? 64 : \</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_224 ? 28 : \</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_256 ? 32 : \</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_224 ? 28 : \</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_256 ? 32 : \</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_384 ? 48 : \</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor"> PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_512 ? 64 : \</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment">/* Note: for HMAC-SHA-3, the block size is 144 bytes for HMAC-SHA3-226,</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment"> * 136 bytes for HMAC-SHA3-256, 104 bytes for SHA3-384, 72 bytes for</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment"> * HMAC-SHA3-512. */</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor">#if defined(MBEDTLS_SHA512_C)</span></div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a6ce1014efbbc0bcca286ef7f9a72cb29"> 101</a></span> <span class="preprocessor">#define PSA_HASH_MAX_SIZE 64</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor">#define PSA_HMAC_MAX_HASH_BLOCK_SIZE 128</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#define PSA_HASH_MAX_SIZE 32</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#define PSA_HMAC_MAX_HASH_BLOCK_SIZE 64</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment">/* All non-HMAC MACs have a maximum size that's smaller than the</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="comment"> * minimum possible value of PSA_HASH_MAX_SIZE in this implementation. */</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="comment">/* Note that the encoding of truncated MAC algorithms limits this value</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment"> * to 64 bytes.</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="comment"> */</span></div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a4681cc4f6226883a2160122c562ca682"> 121</a></span> <span class="preprocessor">#define PSA_MAC_MAX_SIZE PSA_HASH_MAX_SIZE</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a8e3079b2e624cb8d32b94843cddada49"> 138</a></span> <span class="preprocessor">#define PSA_AEAD_TAG_LENGTH(alg) \</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor"> (PSA_ALG_IS_AEAD(alg) ? \</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor"> (((alg) & PSA_ALG_AEAD_TAG_LENGTH_MASK) >> PSA_AEAD_TAG_LENGTH_OFFSET) : \</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="comment">/* The maximum size of an RSA key on this implementation, in bits.</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="comment"> * This is a vendor-specific macro.</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="comment"> *</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="comment"> * Mbed TLS does not set a hard limit on the size of RSA keys: any key</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="comment"> * whose parameters fit in a bignum is accepted. However large keys can</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="comment"> * induce a large memory usage and long computation times. Unlike other</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="comment"> * auxiliary macros in this file and in crypto.h, which reflect how the</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="comment"> * library is configured, this macro defines how the library is</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment"> * configured. This implementation refuses to import or generate an</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="comment"> * RSA key whose size is larger than the value defined here.</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="comment"> *</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="comment"> * Note that an implementation may set different size limits for different</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="comment"> * operations, and does not need to accept all key sizes up to the limit. */</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">#define PSA_VENDOR_RSA_MAX_KEY_BITS 4096</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="comment">/* The maximum size of an ECC key on this implementation, in bits.</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment"> * This is a vendor-specific macro. */</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor">#if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 521</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_BP512R1_ENABLED)</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 512</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_CURVE448_ENABLED)</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 448</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED)</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 384</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_BP384R1_ENABLED)</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 384</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED)</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 256</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED)</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 256</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_BP256R1_ENABLED)</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 256</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 255</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED)</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 224</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED)</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 224</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED)</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 192</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="preprocessor">#elif defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED)</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 192</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor">#define PSA_VENDOR_ECC_MAX_CURVE_BITS 0</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#ab589ea3b86f2bfa18880459299c58f8a"> 204</a></span> <span class="preprocessor">#define PSA_ALG_TLS12_PSK_TO_MS_MAX_PSK_LEN 128</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#ad755101764dba14589e5919ee41be7ca"> 214</a></span> <span class="preprocessor">#define PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE \</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="preprocessor"> PSA_BITS_TO_BYTES( \</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="preprocessor"> PSA_VENDOR_RSA_MAX_KEY_BITS > PSA_VENDOR_ECC_MAX_CURVE_BITS ? \</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="preprocessor"> PSA_VENDOR_RSA_MAX_KEY_BITS : \</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="preprocessor"> PSA_VENDOR_ECC_MAX_CURVE_BITS \</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="preprocessor"> )</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#aa3cfcff0291d6da279fec8fe834d5dec"> 222</a></span> <span class="preprocessor">#define PSA_MAX_BLOCK_CIPHER_BLOCK_SIZE 16</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#aa84c5fb384ac7cb1bfc52adde96588ee"> 241</a></span> <span class="preprocessor">#define PSA_MAC_FINAL_SIZE(key_type, key_bits, alg) \</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="preprocessor"> ((alg) & PSA_ALG_MAC_TRUNCATION_MASK ? PSA_MAC_TRUNCATED_LENGTH(alg) : \</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="preprocessor"> PSA_ALG_IS_HMAC(alg) ? PSA_HASH_SIZE(PSA_ALG_HMAC_GET_HASH(alg)) : \</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor"> PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) ? PSA_BLOCK_CIPHER_BLOCK_SIZE(key_type) : \</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="preprocessor"> ((void)(key_type), (void)(key_bits), 0))</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a85667d47a7aa6c7b99a80e5273671266"> 266</a></span> <span class="preprocessor">#define PSA_AEAD_ENCRYPT_OUTPUT_SIZE(alg, plaintext_length) \</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor"> (PSA_AEAD_TAG_LENGTH(alg) != 0 ? \</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="preprocessor"> (plaintext_length) + PSA_AEAD_TAG_LENGTH(alg) : \</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#ab097f6e054f1a73e975d597ade9029a6"> 289</a></span> <span class="preprocessor">#define PSA_AEAD_FINISH_OUTPUT_SIZE(alg) \</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="preprocessor"> ((size_t)0)</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a1d057796166c16eb673ad1997e48a60b"> 311</a></span> <span class="preprocessor">#define PSA_AEAD_DECRYPT_OUTPUT_SIZE(alg, ciphertext_length) \</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="preprocessor"> (PSA_AEAD_TAG_LENGTH(alg) != 0 ? \</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="preprocessor"> (plaintext_length) - PSA_AEAD_TAG_LENGTH(alg) : \</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="preprocessor">#define PSA_RSA_MINIMUM_PADDING_SIZE(alg) \</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="preprocessor"> (PSA_ALG_IS_RSA_OAEP(alg) ? \</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="preprocessor"> 2 * PSA_HASH_FINAL_SIZE(PSA_ALG_RSA_OAEP_GET_HASH(alg)) + 1 : \</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="preprocessor"> 11 </span><span class="comment">/*PKCS#1v1.5*/</span><span class="preprocessor">)</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a10c472a35f04051add6b20cc228ffc11"> 329</a></span> <span class="preprocessor">#define PSA_ECDSA_SIGNATURE_SIZE(curve_bits) \</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="preprocessor"> (PSA_BITS_TO_BYTES(curve_bits) * 2)</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a77565b9b4fe6d8730fd2120f4c8378ab"> 358</a></span> <span class="preprocessor">#define PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE(key_type, key_bits, alg) \</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="preprocessor"> (PSA_KEY_TYPE_IS_RSA(key_type) ? ((void)alg, PSA_BITS_TO_BYTES(key_bits)) : \</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="preprocessor"> PSA_KEY_TYPE_IS_ECC(key_type) ? PSA_ECDSA_SIGNATURE_SIZE(key_bits) : \</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="preprocessor"> ((void)alg, 0))</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a66ba3bd93e5ec52870ccc3848778bad8"> 389</a></span> <span class="preprocessor">#define PSA_ASYMMETRIC_ENCRYPT_OUTPUT_SIZE(key_type, key_bits, alg) \</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="preprocessor"> (PSA_KEY_TYPE_IS_RSA(key_type) ? \</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="preprocessor"> ((void)alg, PSA_BITS_TO_BYTES(key_bits)) : \</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> </div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a61a246f3eac41989821d982e56fea6c1"> 420</a></span> <span class="preprocessor">#define PSA_ASYMMETRIC_DECRYPT_OUTPUT_SIZE(key_type, key_bits, alg) \</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="preprocessor"> (PSA_KEY_TYPE_IS_RSA(key_type) ? \</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <span class="preprocessor"> PSA_BITS_TO_BYTES(key_bits) - PSA_RSA_MINIMUM_PADDING_SIZE(alg) : \</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> </div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="comment">/* Maximum size of the ASN.1 encoding of an INTEGER with the specified</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> <span class="comment"> * number of bits.</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> <span class="comment"> *</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <span class="comment"> * This definition assumes that bits <= 2^19 - 9 so that the length field</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> <span class="comment"> * is at most 3 bytes. The length of the encoding is the length of the</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> <span class="comment"> * bit string padded to a whole number of bytes plus:</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="comment"> * - 1 type byte;</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="comment"> * - 1 to 3 length bytes;</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="comment"> * - 0 to 1 bytes of leading 0 due to the sign bit.</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> <span class="comment"> */</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> <span class="preprocessor">#define PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(bits) \</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="preprocessor"> ((bits) / 8 + 5)</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="comment">/* Maximum size of the export encoding of an RSA public key.</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="comment"> * Assumes that the public exponent is less than 2^32.</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="comment"> *</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> <span class="comment"> * SubjectPublicKeyInfo ::= SEQUENCE {</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> <span class="comment"> * algorithm AlgorithmIdentifier,</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="comment"> * subjectPublicKey BIT STRING } -- contains RSAPublicKey</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <span class="comment"> * AlgorithmIdentifier ::= SEQUENCE {</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="comment"> * algorithm OBJECT IDENTIFIER,</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> <span class="comment"> * parameters NULL }</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> <span class="comment"> * RSAPublicKey ::= SEQUENCE {</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="comment"> * modulus INTEGER, -- n</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="comment"> * publicExponent INTEGER } -- e</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> <span class="comment"> *</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <span class="comment"> * - 3 * 4 bytes of SEQUENCE overhead;</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="comment"> * - 1 + 1 + 9 bytes of algorithm (RSA OID);</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="comment"> * - 2 bytes of NULL;</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> <span class="comment"> * - 4 bytes of BIT STRING overhead;</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="comment"> * - n : INTEGER;</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="comment"> * - 7 bytes for the public exponent.</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="comment"> */</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> <span class="preprocessor">#define PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) \</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> <span class="preprocessor"> (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) + 36)</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="comment">/* Maximum size of the export encoding of an RSA key pair.</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="comment"> * Assumes thatthe public exponent is less than 2^32 and that the size</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> <span class="comment"> * difference between the two primes is at most 1 bit.</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="comment"> *</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="comment"> * RSAPrivateKey ::= SEQUENCE {</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="comment"> * version Version, -- 0</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="comment"> * modulus INTEGER, -- N-bit</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> <span class="comment"> * publicExponent INTEGER, -- 32-bit</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="comment"> * privateExponent INTEGER, -- N-bit</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="comment"> * prime1 INTEGER, -- N/2-bit</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="comment"> * prime2 INTEGER, -- N/2-bit</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> <span class="comment"> * exponent1 INTEGER, -- N/2-bit</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="comment"> * exponent2 INTEGER, -- N/2-bit</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="comment"> * coefficient INTEGER, -- N/2-bit</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="comment"> * }</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="comment"> *</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="comment"> * - 4 bytes of SEQUENCE overhead;</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="comment"> * - 3 bytes of version;</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="comment"> * - 7 half-size INTEGERs plus 2 full-size INTEGERs,</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="comment"> * overapproximated as 9 half-size INTEGERS;</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="comment"> * - 7 bytes for the public exponent.</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> <span class="comment"> */</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="preprocessor">#define PSA_KEY_EXPORT_RSA_KEYPAIR_MAX_SIZE(key_bits) \</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> <span class="preprocessor"> (9 * PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE((key_bits) / 2 + 1) + 14)</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="comment">/* Maximum size of the export encoding of a DSA public key.</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="comment"> *</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="comment"> * SubjectPublicKeyInfo ::= SEQUENCE {</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="comment"> * algorithm AlgorithmIdentifier,</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="comment"> * subjectPublicKey BIT STRING } -- contains DSAPublicKey</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="comment"> * AlgorithmIdentifier ::= SEQUENCE {</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="comment"> * algorithm OBJECT IDENTIFIER,</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="comment"> * parameters Dss-Parms } -- SEQUENCE of 3 INTEGERs</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="comment"> * DSAPublicKey ::= INTEGER -- public key, Y</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <span class="comment"> *</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="comment"> * - 3 * 4 bytes of SEQUENCE overhead;</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <span class="comment"> * - 1 + 1 + 7 bytes of algorithm (DSA OID);</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="comment"> * - 4 bytes of BIT STRING overhead;</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> <span class="comment"> * - 3 full-size INTEGERs (p, g, y);</span></div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> <span class="comment"> * - 1 + 1 + 32 bytes for 1 sub-size INTEGER (q <= 256 bits).</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> <span class="comment"> */</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> <span class="preprocessor">#define PSA_KEY_EXPORT_DSA_PUBLIC_KEY_MAX_SIZE(key_bits) \</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="preprocessor"> (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) * 3 + 59)</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> <span class="comment">/* Maximum size of the export encoding of a DSA key pair.</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <span class="comment"> *</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="comment"> * DSAPrivateKey ::= SEQUENCE {</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> <span class="comment"> * version Version, -- 0</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="comment"> * prime INTEGER, -- p</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="comment"> * subprime INTEGER, -- q</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> <span class="comment"> * generator INTEGER, -- g</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> <span class="comment"> * public INTEGER, -- y</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> <span class="comment"> * private INTEGER, -- x</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="comment"> * }</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="comment"> *</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="comment"> * - 4 bytes of SEQUENCE overhead;</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="comment"> * - 3 bytes of version;</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="comment"> * - 3 full-size INTEGERs (p, g, y);</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="comment"> * - 2 * (1 + 1 + 32) bytes for 2 sub-size INTEGERs (q, x <= 256 bits).</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="comment"> */</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> <span class="preprocessor">#define PSA_KEY_EXPORT_DSA_KEYPAIR_MAX_SIZE(key_bits) \</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="preprocessor"> (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) * 3 + 75)</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="comment">/* Maximum size of the export encoding of an ECC public key.</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="comment"> *</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="comment"> * SubjectPublicKeyInfo ::= SEQUENCE {</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="comment"> * algorithm AlgorithmIdentifier,</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="comment"> * subjectPublicKey BIT STRING } -- contains ECPoint</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="comment"> * AlgorithmIdentifier ::= SEQUENCE {</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="comment"> * algorithm OBJECT IDENTIFIER,</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="comment"> * parameters OBJECT IDENTIFIER } -- namedCurve</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="comment"> * ECPoint ::= ...</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <span class="comment"> * -- first 8 bits: 0x04;</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> <span class="comment"> * -- then x_P as a `ceiling(m/8)`-byte string, big endian;</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="comment"> * -- then y_P as a `ceiling(m/8)`-byte string, big endian;</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="comment"> * -- where `m` is the bit size associated with the curve.</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="comment"> *</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> <span class="comment"> * - 2 * 4 bytes of SEQUENCE overhead;</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> <span class="comment"> * - 1 + 1 + 7 bytes of algorithm (id-ecPublicKey OID);</span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="comment"> * - 1 + 1 + 12 bytes of namedCurve OID;</span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="comment"> * - 4 bytes of BIT STRING overhead;</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="comment"> * - 1 byte + 2 * point size in ECPoint.</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="comment"> */</span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> <span class="preprocessor">#define PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_bits) \</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> <span class="preprocessor"> (2 * PSA_BITS_TO_BYTES(key_bits) + 36)</span></div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> <span class="comment">/* Maximum size of the export encoding of an ECC key pair.</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> <span class="comment"> *</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="comment"> * An ECC key pair is represented by the secret value.</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <span class="comment"> */</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="preprocessor">#define PSA_KEY_EXPORT_ECC_KEYPAIR_MAX_SIZE(key_bits) \</span></div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> <span class="preprocessor"> (PSA_BITS_TO_BYTES(key_bits))</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> </div><div class="line"><a name="l00610"></a><span class="lineno"><a class="line" href="crypto__sizes_8h.html#a0aae885cc8ff92e00fb5248420b939c3"> 610</a></span> <span class="preprocessor">#define PSA_KEY_EXPORT_MAX_SIZE(key_type, key_bits) \</span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> <span class="preprocessor"> (PSA_KEY_TYPE_IS_UNSTRUCTURED(key_type) ? PSA_BITS_TO_BYTES(key_bits) : \</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> <span class="preprocessor"> (key_type) == PSA_KEY_TYPE_RSA_KEYPAIR ? PSA_KEY_EXPORT_RSA_KEYPAIR_MAX_SIZE(key_bits) : \</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> <span class="preprocessor"> (key_type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY ? PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="preprocessor"> (key_type) == PSA_KEY_TYPE_DSA_KEYPAIR ? PSA_KEY_EXPORT_DSA_KEYPAIR_MAX_SIZE(key_bits) : \</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> <span class="preprocessor"> (key_type) == PSA_KEY_TYPE_DSA_PUBLIC_KEY ? PSA_KEY_EXPORT_DSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> <span class="preprocessor"> PSA_KEY_TYPE_IS_ECC_KEYPAIR(key_type) ? PSA_KEY_EXPORT_ECC_KEYPAIR_MAX_SIZE(key_bits) : \</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> <span class="preprocessor"> PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(key_type) ? PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_bits) : \</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> </div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="preprocessor">#endif </span><span class="comment">/* PSA_CRYPTO_SIZES_H */</span><span class="preprocessor"></span></div></div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by  <a href="http://www.doxygen.org/index.html">
diff --git a/docs/html/crypto__types_8h.html b/docs/html/crypto__types_8h.html
index e7966d5..a7f6955 100644
--- a/docs/html/crypto__types_8h.html
+++ b/docs/html/crypto__types_8h.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/crypto__types_8h_source.html b/docs/html/crypto__types_8h_source.html
index 6641669..6eedd36 100644
--- a/docs/html/crypto__types_8h_source.html
+++ b/docs/html/crypto__types_8h_source.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/crypto__values_8h.html b/docs/html/crypto__values_8h.html
index b8a767e..59328e4 100644
--- a/docs/html/crypto__values_8h.html
+++ b/docs/html/crypto__values_8h.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
@@ -374,15 +374,10 @@
<tr class="separator:ga6d490d0904e0698f6c1268a89d72ff31"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga41d2ee937d54efd76bd54a97b2ebc08a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#ga41d2ee937d54efd76bd54a97b2ebc08a">PSA_ALG_IS_ASYMMETRIC_ENCRYPTION</a>(alg)   (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION)</td></tr>
<tr class="separator:ga41d2ee937d54efd76bd54a97b2ebc08a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gab19961aac97f3856f83057b04ba7c5f5"><td class="memItemLeft" align="right" valign="top">
-#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_KEY_SELECTION_FLAG</b>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x01000000)</td></tr>
-<tr class="separator:gab19961aac97f3856f83057b04ba7c5f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga59753742cb06553bd22751bbef472b6f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#ga59753742cb06553bd22751bbef472b6f">PSA_ALG_IS_KEY_AGREEMENT</a>(alg)</td></tr>
+<tr class="memitem:ga59753742cb06553bd22751bbef472b6f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#ga59753742cb06553bd22751bbef472b6f">PSA_ALG_IS_KEY_AGREEMENT</a>(alg)   (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_AGREEMENT)</td></tr>
<tr class="separator:ga59753742cb06553bd22751bbef472b6f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaf8b90c648aa53dbd06c236695e300cd0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#gaf8b90c648aa53dbd06c236695e300cd0">PSA_ALG_IS_KEY_DERIVATION</a>(alg)   (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_DERIVATION)</td></tr>
<tr class="separator:gaf8b90c648aa53dbd06c236695e300cd0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga51b1834ee5e98c6a83c2cfc7699f9077"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#ga51b1834ee5e98c6a83c2cfc7699f9077">PSA_ALG_IS_KEY_SELECTION</a>(alg)   (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_SELECTION)</td></tr>
-<tr class="separator:ga51b1834ee5e98c6a83c2cfc7699f9077"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac41a7077aef55bb20c629c8949d43c57"><td class="memItemLeft" align="right" valign="top">
#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_HASH_MASK</b>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x000000ff)</td></tr>
<tr class="separator:gac41a7077aef55bb20c629c8949d43c57"><td class="memSeparator" colspan="2"> </td></tr>
@@ -486,11 +481,9 @@
<tr class="separator:gacb332d72716958880ee7f97d8365ae66"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaef50d2e9716eb6d476046608e4e0c78c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#gaef50d2e9716eb6d476046608e4e0c78c">PSA_ALG_CBC_PKCS7</a>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x04600101)</td></tr>
<tr class="separator:gaef50d2e9716eb6d476046608e4e0c78c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gac2c0e7d21f1b2df5e76bcb4a8f84273c"><td class="memItemLeft" align="right" valign="top">
-#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_CCM</b>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x06001001)</td></tr>
+<tr class="memitem:gac2c0e7d21f1b2df5e76bcb4a8f84273c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#gac2c0e7d21f1b2df5e76bcb4a8f84273c">PSA_ALG_CCM</a>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x06001001)</td></tr>
<tr class="separator:gac2c0e7d21f1b2df5e76bcb4a8f84273c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga0d7d02b15aaae490d38277d99f1c637c"><td class="memItemLeft" align="right" valign="top">
-#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_GCM</b>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x06001002)</td></tr>
+<tr class="memitem:ga0d7d02b15aaae490d38277d99f1c637c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#ga0d7d02b15aaae490d38277d99f1c637c">PSA_ALG_GCM</a>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x06001002)</td></tr>
<tr class="separator:ga0d7d02b15aaae490d38277d99f1c637c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga575d9082463a06a86c2a22dd63c2e772"><td class="memItemLeft" align="right" valign="top">
#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_AEAD_TAG_LENGTH_MASK</b>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x00003f00)</td></tr>
@@ -533,8 +526,7 @@
<tr class="memitem:ga1d2a96f788cce4f8fc156d13342e70de"><td class="memItemLeft" align="right" valign="top">
#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_DSA_DETERMINISTIC_FLAG</b>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x00010000)</td></tr>
<tr class="separator:ga1d2a96f788cce4f8fc156d13342e70de"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gab8eb98fb6d2e094e47f3b44dfe128f94"><td class="memItemLeft" align="right" valign="top">
-#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_DETERMINISTIC_DSA</b>(hash_alg)   (PSA_ALG_DETERMINISTIC_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</td></tr>
+<tr class="memitem:gab8eb98fb6d2e094e47f3b44dfe128f94"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#gab8eb98fb6d2e094e47f3b44dfe128f94">PSA_ALG_DETERMINISTIC_DSA</a>(hash_alg)   (PSA_ALG_DETERMINISTIC_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</td></tr>
<tr class="separator:gab8eb98fb6d2e094e47f3b44dfe128f94"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gacfc3cd50ef0c4bf694cf936079bcbaee"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_IS_DSA</b>(alg)</td></tr>
<tr class="separator:gacfc3cd50ef0c4bf694cf936079bcbaee"><td class="memSeparator" colspan="2"> </td></tr>
@@ -630,8 +622,7 @@
<tr class="memitem:gaf837c55ba698b488b6e63300e3470abf"><td class="memItemLeft" align="right" valign="top">
#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_KEY_AGREEMENT_GET_BASE</b>(alg)   (((alg) & PSA_ALG_KEY_AGREEMENT_MASK) | PSA_ALG_CATEGORY_KEY_AGREEMENT)</td></tr>
<tr class="separator:gaf837c55ba698b488b6e63300e3470abf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaa40ab362ce141ce541d69b2eb1f41438"><td class="memItemLeft" align="right" valign="top">
-#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_IS_RAW_KEY_AGREEMENT</b>(alg)   (PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) == PSA_ALG_CATEGORY_KEY_DERIVATION)</td></tr>
+<tr class="memitem:gaa40ab362ce141ce541d69b2eb1f41438"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#gaa40ab362ce141ce541d69b2eb1f41438">PSA_ALG_IS_RAW_KEY_AGREEMENT</a>(alg)</td></tr>
<tr class="separator:gaa40ab362ce141ce541d69b2eb1f41438"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga14529588c008091de0ad2716170dbd48"><td class="memItemLeft" align="right" valign="top">
#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_IS_KEY_DERIVATION_OR_AGREEMENT</b>(alg)   ((<a class="el" href="group__crypto__types.html#gaf8b90c648aa53dbd06c236695e300cd0">PSA_ALG_IS_KEY_DERIVATION</a>(alg) || <a class="el" href="group__crypto__types.html#ga59753742cb06553bd22751bbef472b6f">PSA_ALG_IS_KEY_AGREEMENT</a>(alg)))</td></tr>
@@ -646,8 +637,6 @@
<tr class="separator:ga9d9b6533d2a6bea7bac7ae01facb820d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gacf83d7430e82b97cecb8b26ca6fa1426"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#gacf83d7430e82b97cecb8b26ca6fa1426">PSA_ALG_IS_WILDCARD</a>(alg)</td></tr>
<tr class="separator:gacf83d7430e82b97cecb8b26ca6fa1426"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gacf83d7430e82b97cecb8b26ca6fa1426"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#gacf83d7430e82b97cecb8b26ca6fa1426">PSA_ALG_IS_WILDCARD</a>(alg)</td></tr>
-<tr class="separator:gacf83d7430e82b97cecb8b26ca6fa1426"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8b438870ba69489b685730d346455108"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__key__lifetimes.html#ga8b438870ba69489b685730d346455108">PSA_KEY_LIFETIME_VOLATILE</a>   ((<a class="el" href="group__key__lifetimes.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a>)0x00000000)</td></tr>
<tr class="separator:ga8b438870ba69489b685730d346455108"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga3713a01c5fcd5f7eae46ff22ceaf6d02"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__key__lifetimes.html#ga3713a01c5fcd5f7eae46ff22ceaf6d02">PSA_KEY_LIFETIME_PERSISTENT</a>   ((<a class="el" href="group__key__lifetimes.html#ga6821ff6dd39dc2bc370ded760ad8b0cf">psa_key_lifetime_t</a>)0x00000001)</td></tr>
diff --git a/docs/html/crypto__values_8h_source.html b/docs/html/crypto__values_8h_source.html
index ee7693b..5039bab 100644
--- a/docs/html/crypto__values_8h_source.html
+++ b/docs/html/crypto__values_8h_source.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
@@ -90,7 +90,7 @@
<div class="title">crypto_values.h</div> </div>
</div><!--header-->
<div class="contents">
-<a href="crypto__values_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">/*</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * Copyright (C) 2018, ARM Limited, All Rights Reserved</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * SPDX-License-Identifier: Apache-2.0</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> *</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License"); you may</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * not use this file except in compliance with the License.</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> *</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> * This file is part of mbed TLS (https://tls.mbed.org)</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> */</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#ifndef PSA_CRYPTO_VALUES_H</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define PSA_CRYPTO_VALUES_H</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#if !defined(PSA_SUCCESS)</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">/* If PSA_SUCCESS is defined, assume that PSA crypto is being used</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment"> * together with PSA IPC, which also defines the identifier</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment"> * PSA_SUCCESS. We must not define PSA_SUCCESS ourselves in that case;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment"> * the other error code names don't clash. This is a temporary hack</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment"> * until we unify error reporting in PSA IPC and PSA crypto.</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment"> *</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment"> * Note that psa_defs.h must be included before this header!</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment"> */</span></div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="group__error.html#ga4cc859e2c66ca381c7418db3527a65e1"> 53</a></span> <span class="preprocessor">#define PSA_SUCCESS ((psa_status_t)0)</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#endif </span><span class="comment">/* !defined(PSA_SUCCESS) */</span><span class="preprocessor"></span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="group__error.html#ga24d5fdcdd759f846f79d9e581c63a83f"> 61</a></span> <span class="preprocessor">#define PSA_ERROR_UNKNOWN_ERROR ((psa_status_t)1)</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="group__error.html#ga1dcc6d130633ed5db8942257581b55dd"> 70</a></span> <span class="preprocessor">#define PSA_ERROR_NOT_SUPPORTED ((psa_status_t)2)</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="group__error.html#ga4d1b8dd8526177a15a210b7afc1accb1"> 83</a></span> <span class="preprocessor">#define PSA_ERROR_NOT_PERMITTED ((psa_status_t)3)</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="group__error.html#ga695025f4ec11249aee7ea3d0f65e01c8"> 95</a></span> <span class="preprocessor">#define PSA_ERROR_BUFFER_TOO_SMALL ((psa_status_t)4)</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="group__error.html#gac2fee3a51249fbea45360aaa911f3e58"> 103</a></span> <span class="preprocessor">#define PSA_ERROR_OCCUPIED_SLOT ((psa_status_t)5)</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="group__error.html#gaba00e3e6ceb2b12965a81e5ac02ae040"> 111</a></span> <span class="preprocessor">#define PSA_ERROR_EMPTY_SLOT ((psa_status_t)6)</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="group__error.html#ga933d40fa2a591004f2e93aa91e11db84"> 123</a></span> <span class="preprocessor">#define PSA_ERROR_BAD_STATE ((psa_status_t)7)</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="group__error.html#ga798df25a505ebf931f7bec1f80f1f85f"> 139</a></span> <span class="preprocessor">#define PSA_ERROR_INVALID_ARGUMENT ((psa_status_t)8)</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="group__error.html#ga91b2ad8a867517a2651f1b076c5216e5"> 145</a></span> <span class="preprocessor">#define PSA_ERROR_INSUFFICIENT_MEMORY ((psa_status_t)9)</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="group__error.html#ga897a45eb206a6f6b7be7ffbe36f0d766"> 154</a></span> <span class="preprocessor">#define PSA_ERROR_INSUFFICIENT_STORAGE ((psa_status_t)10)</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="group__error.html#ga5cdb6948371d49e916106249020ea3f7"> 171</a></span> <span class="preprocessor">#define PSA_ERROR_COMMUNICATION_FAILURE ((psa_status_t)11)</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="group__error.html#gadd169a1af2707862b95fb9df91dfc37d"> 196</a></span> <span class="preprocessor">#define PSA_ERROR_STORAGE_FAILURE ((psa_status_t)12)</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="group__error.html#ga08b10e70fa5ff0b05c631d9f8f6b2c6b"> 202</a></span> <span class="preprocessor">#define PSA_ERROR_HARDWARE_FAILURE ((psa_status_t)13)</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="group__error.html#ga2c5dda1485cb54f2385cb9c1279a7004"> 233</a></span> <span class="preprocessor">#define PSA_ERROR_TAMPERING_DETECTED ((psa_status_t)14)</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="group__error.html#ga4deb59fec02297ec5d8b42178323f675"> 252</a></span> <span class="preprocessor">#define PSA_ERROR_INSUFFICIENT_ENTROPY ((psa_status_t)15)</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="group__error.html#ga35927f755d232c4766de600f2c49e9f2"> 262</a></span> <span class="preprocessor">#define PSA_ERROR_INVALID_SIGNATURE ((psa_status_t)16)</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="group__error.html#gabe29594edbfb152cf153975b0597ac48"> 278</a></span> <span class="preprocessor">#define PSA_ERROR_INVALID_PADDING ((psa_status_t)17)</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="group__error.html#gaf1fa61f72e9e5b4a848c991bea495767"> 284</a></span> <span class="preprocessor">#define PSA_ERROR_INSUFFICIENT_CAPACITY ((psa_status_t)18)</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="group__error.html#gadf22718935657c2c3168c228204085f9"> 288</a></span> <span class="preprocessor">#define PSA_ERROR_INVALID_HANDLE ((psa_status_t)19)</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gafce7ab2b54ce97ea5bff73f13a9f3e5b"> 300</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_NONE ((psa_key_type_t)0x00000000)</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga8dbaed2fdb1ebae8aa127ad3988516f7"> 309</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_VENDOR_FLAG ((psa_key_type_t)0x80000000)</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="preprocessor">#define PSA_KEY_TYPE_CATEGORY_MASK ((psa_key_type_t)0x70000000)</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="preprocessor">#define PSA_KEY_TYPE_CATEGORY_SYMMETRIC ((psa_key_type_t)0x40000000)</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="preprocessor">#define PSA_KEY_TYPE_CATEGORY_RAW ((psa_key_type_t)0x50000000)</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="preprocessor">#define PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY ((psa_key_type_t)0x60000000)</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="preprocessor">#define PSA_KEY_TYPE_CATEGORY_KEY_PAIR ((psa_key_type_t)0x70000000)</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="preprocessor">#define PSA_KEY_TYPE_CATEGORY_FLAG_PAIR ((psa_key_type_t)0x10000000)</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gadbe4c086a6562aefe344bc79e51bdfd3"> 320</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_VENDOR_DEFINED(type) \</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="preprocessor"> (((type) & PSA_KEY_TYPE_VENDOR_FLAG) != 0)</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaef86ce4e810e1c2c76068ac874bfef54"> 327</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_UNSTRUCTURED(type) \</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="preprocessor"> (((type) & PSA_KEY_TYPE_CATEGORY_MASK & ~(psa_key_type_t)0x10000000) == \</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="preprocessor"> PSA_KEY_TYPE_CATEGORY_SYMMETRIC)</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gab138ae2ebf2905dfbaf4154db2620939"> 332</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_ASYMMETRIC(type) \</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="preprocessor"> (((type) & PSA_KEY_TYPE_CATEGORY_MASK \</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="preprocessor"> & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) == \</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="preprocessor"> PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY)</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gac674a0f059bc0cb72b47f0c517b4f45b"> 337</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_PUBLIC_KEY(type) \</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="preprocessor"> (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY)</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gac14c6d6e1b2b7f4a92a7b757465cff29"> 341</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_KEYPAIR(type) \</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="preprocessor"> (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_KEY_PAIR)</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaf09f1ca1de6a7e7cff0fe516f3f6c91d"> 353</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_KEYPAIR_OF_PUBLIC_KEY(type) \</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> <span class="preprocessor"> ((type) | PSA_KEY_TYPE_CATEGORY_FLAG_PAIR)</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gace08e46dd7cbf642d50d982a25d02bec"> 365</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) \</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="preprocessor"> ((type) & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR)</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaa97f92025533102616b32d571c940d80"> 372</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_RAW_DATA ((psa_key_type_t)0x50000001)</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga92d989f4ca64abd00f463defd773a6f8"> 382</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_HMAC ((psa_key_type_t)0x51000000)</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gae871b2357b8593f33bfd51abbf93ebb1"> 389</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_DERIVE ((psa_key_type_t)0x52000000)</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga6ee54579dcf278c677eda4bb1a29575e"> 396</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_AES ((psa_key_type_t)0x40000001)</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> </div><div class="line"><a name="l00407"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga577562bfbbc691c820d55ec308333138"> 407</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_DES ((psa_key_type_t)0x40000002)</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div><div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gad8e5da742343fd5519f9d8a630c2ed81"> 411</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_CAMELLIA ((psa_key_type_t)0x40000003)</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> </div><div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gae4d46e83f910dcaa126000a8ed03cde9"> 417</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_ARC4 ((psa_key_type_t)0x40000004)</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> </div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga9ba0878f56c8bcd1995ac017a74f513b"> 420</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_RSA_PUBLIC_KEY ((psa_key_type_t)0x60010000)</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div><div class="line"><a name="l00422"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga581f50687f5d650456925278948f2799"> 422</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_RSA_KEYPAIR ((psa_key_type_t)0x70010000)</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> </div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga0e1d8f241228e49c9cadadfb4579ef1a"> 424</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_RSA(type) \</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="preprocessor"> (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY)</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> </div><div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga5e7439c2905136366c3a876e62e5ddfc"> 428</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_DSA_PUBLIC_KEY ((psa_key_type_t)0x60020000)</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga011010ee28c20388f3d89fb27088ed62"> 430</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_DSA_KEYPAIR ((psa_key_type_t)0x70020000)</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> </div><div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga273fdfcf23eb0624f8b63d2321cf95c1"> 432</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_DSA(type) \</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="preprocessor"> (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) == PSA_KEY_TYPE_DSA_PUBLIC_KEY)</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> <span class="preprocessor">#define PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE ((psa_key_type_t)0x60030000)</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="preprocessor">#define PSA_KEY_TYPE_ECC_KEYPAIR_BASE ((psa_key_type_t)0x70030000)</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="preprocessor">#define PSA_KEY_TYPE_ECC_CURVE_MASK ((psa_key_type_t)0x0000ffff)</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00439"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gadf3ad65d157bf5282849c954bf3f51af"> 439</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_ECC_KEYPAIR(curve) \</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="preprocessor"> (PSA_KEY_TYPE_ECC_KEYPAIR_BASE | (curve))</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div><div class="line"><a name="l00442"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gad54c03d3b47020e571a72cd01d978cf2"> 442</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve) \</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="preprocessor"> (PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE | (curve))</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> </div><div class="line"><a name="l00446"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga88e01fa06b585654689a99bcc06bbe66"> 446</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_ECC(type) \</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> <span class="preprocessor"> ((PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) & \</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="preprocessor"> ~PSA_KEY_TYPE_ECC_CURVE_MASK) == PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE)</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> </div><div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga7bf101b671e8cf26f4cb08fcb679db4b"> 450</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_ECC_KEYPAIR(type) \</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <span class="preprocessor"> (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="preprocessor"> PSA_KEY_TYPE_ECC_KEYPAIR_BASE)</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> </div><div class="line"><a name="l00454"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga5af146a173b0c84d7e737e2fb6a3c0a7"> 454</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(type) \</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="preprocessor"> (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="preprocessor"> PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE)</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> </div><div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga0c567210e6f80aa8f2aa87efa7a3a3f9"> 459</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_GET_CURVE(type) \</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="preprocessor"> ((psa_ecc_curve_t) (PSA_KEY_TYPE_IS_ECC(type) ? \</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="preprocessor"> ((type) & PSA_KEY_TYPE_ECC_CURVE_MASK) : \</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="preprocessor"> 0))</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="comment">/* The encoding of curve identifiers is currently aligned with the</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="comment"> * TLS Supported Groups Registry (formerly known as the</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="comment"> * TLS EC Named Curve Registry)</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="comment"> * https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> <span class="comment"> * The values are defined by RFC 8422 and RFC 7027. */</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT163K1 ((psa_ecc_curve_t) 0x0001)</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT163R1 ((psa_ecc_curve_t) 0x0002)</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT163R2 ((psa_ecc_curve_t) 0x0003)</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT193R1 ((psa_ecc_curve_t) 0x0004)</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT193R2 ((psa_ecc_curve_t) 0x0005)</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT233K1 ((psa_ecc_curve_t) 0x0006)</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT233R1 ((psa_ecc_curve_t) 0x0007)</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT239K1 ((psa_ecc_curve_t) 0x0008)</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT283K1 ((psa_ecc_curve_t) 0x0009)</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT283R1 ((psa_ecc_curve_t) 0x000a)</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT409K1 ((psa_ecc_curve_t) 0x000b)</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT409R1 ((psa_ecc_curve_t) 0x000c)</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT571K1 ((psa_ecc_curve_t) 0x000d)</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT571R1 ((psa_ecc_curve_t) 0x000e)</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP160K1 ((psa_ecc_curve_t) 0x000f)</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP160R1 ((psa_ecc_curve_t) 0x0010)</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP160R2 ((psa_ecc_curve_t) 0x0011)</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP192K1 ((psa_ecc_curve_t) 0x0012)</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP192R1 ((psa_ecc_curve_t) 0x0013)</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP224K1 ((psa_ecc_curve_t) 0x0014)</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP224R1 ((psa_ecc_curve_t) 0x0015)</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP256K1 ((psa_ecc_curve_t) 0x0016)</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP256R1 ((psa_ecc_curve_t) 0x0017)</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP384R1 ((psa_ecc_curve_t) 0x0018)</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP521R1 ((psa_ecc_curve_t) 0x0019)</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="preprocessor">#define PSA_ECC_CURVE_BRAINPOOL_P256R1 ((psa_ecc_curve_t) 0x001a)</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <span class="preprocessor">#define PSA_ECC_CURVE_BRAINPOOL_P384R1 ((psa_ecc_curve_t) 0x001b)</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="preprocessor">#define PSA_ECC_CURVE_BRAINPOOL_P512R1 ((psa_ecc_curve_t) 0x001c)</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <span class="preprocessor">#define PSA_ECC_CURVE_CURVE25519 ((psa_ecc_curve_t) 0x001d)</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="preprocessor">#define PSA_ECC_CURVE_CURVE448 ((psa_ecc_curve_t) 0x001e)</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> </div><div class="line"><a name="l00501"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga325a340d7c72d99d3a678eb210bf6e0a"> 501</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_DH_PUBLIC_KEY ((psa_key_type_t)0x60040000)</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga39b63c6b97a62a316c0660bf72b2fdd5"> 503</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_DH_KEYPAIR ((psa_key_type_t)0x70040000)</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga248ae35c0e2becaebbf479fc1c3a3b0e"> 506</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_DH(type) \</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="preprocessor"> (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) == PSA_KEY_TYPE_DH_PUBLIC_KEY)</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> </div><div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gacaa366bdeb0413e63e87a667c5457b2e"> 527</a></span> <span class="preprocessor">#define PSA_BLOCK_CIPHER_BLOCK_SIZE(type) \</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="preprocessor"> ( \</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="preprocessor"> (type) == PSA_KEY_TYPE_AES ? 16 : \</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="preprocessor"> (type) == PSA_KEY_TYPE_DES ? 8 : \</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="preprocessor"> (type) == PSA_KEY_TYPE_CAMELLIA ? 16 : \</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="preprocessor"> (type) == PSA_KEY_TYPE_ARC4 ? 1 : \</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> </div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="preprocessor">#define PSA_ALG_VENDOR_FLAG ((psa_algorithm_t)0x80000000)</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_MASK ((psa_algorithm_t)0x7f000000)</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_HASH ((psa_algorithm_t)0x01000000)</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_MAC ((psa_algorithm_t)0x02000000)</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_CIPHER ((psa_algorithm_t)0x04000000)</span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_AEAD ((psa_algorithm_t)0x06000000)</span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_SIGN ((psa_algorithm_t)0x10000000)</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION ((psa_algorithm_t)0x12000000)</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_KEY_DERIVATION ((psa_algorithm_t)0x20000000)</span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_KEY_AGREEMENT ((psa_algorithm_t)0x30000000)</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> <span class="preprocessor">#define PSA_ALG_IS_VENDOR_DEFINED(alg) \</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> <span class="preprocessor"> (((alg) & PSA_ALG_VENDOR_FLAG) != 0)</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> </div><div class="line"><a name="l00557"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gac9280662bb482590b4b33d1dcd32930f"> 557</a></span> <span class="preprocessor">#define PSA_ALG_IS_HASH(alg) \</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> <span class="preprocessor"> (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_HASH)</span></div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> </div><div class="line"><a name="l00568"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaca7aee4c9dde316b3b1a150a26eab776"> 568</a></span> <span class="preprocessor">#define PSA_ALG_IS_MAC(alg) \</span></div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> <span class="preprocessor"> (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_MAC)</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> </div><div class="line"><a name="l00579"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga1d1a5a402ad89a2e68f12bfb535490eb"> 579</a></span> <span class="preprocessor">#define PSA_ALG_IS_CIPHER(alg) \</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> <span class="preprocessor"> (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_CIPHER)</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span> </div><div class="line"><a name="l00591"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga1d44829d60065eaa4ac9a703e7d6abc8"> 591</a></span> <span class="preprocessor">#define PSA_ALG_IS_AEAD(alg) \</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> <span class="preprocessor"> (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_AEAD)</span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> </div><div class="line"><a name="l00602"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga6d490d0904e0698f6c1268a89d72ff31"> 602</a></span> <span class="preprocessor">#define PSA_ALG_IS_SIGN(alg) \</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span> <span class="preprocessor"> (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_SIGN)</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span> </div><div class="line"><a name="l00613"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga41d2ee937d54efd76bd54a97b2ebc08a"> 613</a></span> <span class="preprocessor">#define PSA_ALG_IS_ASYMMETRIC_ENCRYPTION(alg) \</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="preprocessor"> (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION)</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> </div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> <span class="preprocessor">#define PSA_ALG_KEY_SELECTION_FLAG ((psa_algorithm_t)0x01000000)</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> </div><div class="line"><a name="l00625"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga59753742cb06553bd22751bbef472b6f"> 625</a></span> <span class="preprocessor">#define PSA_ALG_IS_KEY_AGREEMENT(alg) \</span></div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span> <span class="preprocessor"> (((alg) & PSA_ALG_CATEGORY_MASK & ~PSA_ALG_KEY_SELECTION_FLAG) == \</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> <span class="preprocessor"> PSA_ALG_CATEGORY_KEY_AGREEMENT)</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span> </div><div class="line"><a name="l00637"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaf8b90c648aa53dbd06c236695e300cd0"> 637</a></span> <span class="preprocessor">#define PSA_ALG_IS_KEY_DERIVATION(alg) \</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="preprocessor"> (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_DERIVATION)</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> </div><div class="line"><a name="l00648"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga51b1834ee5e98c6a83c2cfc7699f9077"> 648</a></span> <span class="preprocessor">#define PSA_ALG_IS_KEY_SELECTION(alg) \</span></div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> <span class="preprocessor"> (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_SELECTION)</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span> </div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span> <span class="preprocessor">#define PSA_ALG_HASH_MASK ((psa_algorithm_t)0x000000ff)</span></div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span> </div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> <span class="preprocessor">#define PSA_ALG_MD2 ((psa_algorithm_t)0x01000001)</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="preprocessor">#define PSA_ALG_MD4 ((psa_algorithm_t)0x01000002)</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> <span class="preprocessor">#define PSA_ALG_MD5 ((psa_algorithm_t)0x01000003)</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> <span class="preprocessor">#define PSA_ALG_RIPEMD160 ((psa_algorithm_t)0x01000004)</span></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="preprocessor">#define PSA_ALG_SHA_1 ((psa_algorithm_t)0x01000005)</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> </div><div class="line"><a name="l00659"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga25d6a3244d10a7148fe6b026d1979f7b"> 659</a></span> <span class="preprocessor">#define PSA_ALG_SHA_224 ((psa_algorithm_t)0x01000008)</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span> </div><div class="line"><a name="l00661"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga619471f978e13cdd0a1e37145e4bf341"> 661</a></span> <span class="preprocessor">#define PSA_ALG_SHA_256 ((psa_algorithm_t)0x01000009)</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> </div><div class="line"><a name="l00663"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga58af64dd9a86a287e8da9ed7739eead4"> 663</a></span> <span class="preprocessor">#define PSA_ALG_SHA_384 ((psa_algorithm_t)0x0100000a)</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> </div><div class="line"><a name="l00665"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gafba3ae409f46d3dd7f37a0910660c3e9"> 665</a></span> <span class="preprocessor">#define PSA_ALG_SHA_512 ((psa_algorithm_t)0x0100000b)</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span> </div><div class="line"><a name="l00667"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga3fe2d7c3c80e3186ca78d16a35d5d931"> 667</a></span> <span class="preprocessor">#define PSA_ALG_SHA_512_224 ((psa_algorithm_t)0x0100000c)</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span> </div><div class="line"><a name="l00669"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga5910b3964c14e9613e8643a45b09c2d4"> 669</a></span> <span class="preprocessor">#define PSA_ALG_SHA_512_256 ((psa_algorithm_t)0x0100000d)</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> </div><div class="line"><a name="l00671"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga16f5fe34ccce68c2fada1224c054a999"> 671</a></span> <span class="preprocessor">#define PSA_ALG_SHA3_224 ((psa_algorithm_t)0x01000010)</span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> </div><div class="line"><a name="l00673"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaace70d9515489bbe3c5e7ac1b7d9155b"> 673</a></span> <span class="preprocessor">#define PSA_ALG_SHA3_256 ((psa_algorithm_t)0x01000011)</span></div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span> </div><div class="line"><a name="l00675"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gab0f079257ea75e2acfe2fc3b38c78cd8"> 675</a></span> <span class="preprocessor">#define PSA_ALG_SHA3_384 ((psa_algorithm_t)0x01000012)</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> </div><div class="line"><a name="l00677"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga37e5dbe936dddb155e76f2997de27188"> 677</a></span> <span class="preprocessor">#define PSA_ALG_SHA3_512 ((psa_algorithm_t)0x01000013)</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span> </div><div class="line"><a name="l00712"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaa1288ea8bd397a8a3f5e19e94110f2e4"> 712</a></span> <span class="preprocessor">#define PSA_ALG_ANY_HASH ((psa_algorithm_t)0x010000ff)</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span> </div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span> <span class="preprocessor">#define PSA_ALG_MAC_SUBCATEGORY_MASK ((psa_algorithm_t)0x00c00000)</span></div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> <span class="preprocessor">#define PSA_ALG_HMAC_BASE ((psa_algorithm_t)0x02800000)</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span> </div><div class="line"><a name="l00727"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga70f397425684b3efcde1e0e34c28261f"> 727</a></span> <span class="preprocessor">#define PSA_ALG_HMAC(hash_alg) \</span></div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="preprocessor"> (PSA_ALG_HMAC_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span> </div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span> <span class="preprocessor">#define PSA_ALG_HMAC_GET_HASH(hmac_alg) \</span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span> <span class="preprocessor"> (PSA_ALG_CATEGORY_HASH | ((hmac_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div><div class="line"><a name="l00743"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga4a050c3c3cbc6eb96418f18847601c8a"> 743</a></span> <span class="preprocessor">#define PSA_ALG_IS_HMAC(alg) \</span></div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> <span class="preprocessor"> (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \</span></div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span> <span class="preprocessor"> PSA_ALG_HMAC_BASE)</span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> </div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> <span class="comment">/* In the encoding of a MAC algorithm, the bits corresponding to</span></div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span> <span class="comment"> * PSA_ALG_MAC_TRUNCATION_MASK encode the length to which the MAC is</span></div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span> <span class="comment"> * truncated. As an exception, the value 0 means the untruncated algorithm,</span></div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span> <span class="comment"> * whatever its length is. The length is encoded in 6 bits, so it can</span></div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> <span class="comment"> * reach up to 63; the largest MAC is 64 bytes so its trivial truncation</span></div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span> <span class="comment"> * to full length is correctly encoded as 0 and any non-trivial truncation</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span> <span class="comment"> * is correctly encoded as a value between 1 and 63. */</span></div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span> <span class="preprocessor">#define PSA_ALG_MAC_TRUNCATION_MASK ((psa_algorithm_t)0x00003f00)</span></div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span> <span class="preprocessor">#define PSA_MAC_TRUNCATION_OFFSET 8</span></div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span> </div><div class="line"><a name="l00790"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaf36137110baf7bb13c5028fd62c64276"> 790</a></span> <span class="preprocessor">#define PSA_ALG_TRUNCATED_MAC(alg, mac_length) \</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_MAC_TRUNCATION_MASK) | \</span></div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> <span class="preprocessor"> ((mac_length) << PSA_MAC_TRUNCATION_OFFSET & PSA_ALG_MAC_TRUNCATION_MASK))</span></div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span> </div><div class="line"><a name="l00806"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaa05a8d99634f3350597ac9284fb70cb1"> 806</a></span> <span class="preprocessor">#define PSA_ALG_FULL_LENGTH_MAC(alg) \</span></div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> <span class="preprocessor"> ((alg) & ~PSA_ALG_MAC_TRUNCATION_MASK)</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span> </div><div class="line"><a name="l00820"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gab03726c4476174e019a08e2a04018ce8"> 820</a></span> <span class="preprocessor">#define PSA_MAC_TRUNCATED_LENGTH(alg) \</span></div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span> <span class="preprocessor"> (((alg) & PSA_ALG_MAC_TRUNCATION_MASK) >> PSA_MAC_TRUNCATION_OFFSET)</span></div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> </div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> <span class="preprocessor">#define PSA_ALG_CIPHER_MAC_BASE ((psa_algorithm_t)0x02c00000)</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> <span class="preprocessor">#define PSA_ALG_CBC_MAC ((psa_algorithm_t)0x02c00001)</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> <span class="preprocessor">#define PSA_ALG_CMAC ((psa_algorithm_t)0x02c00002)</span></div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span> <span class="preprocessor">#define PSA_ALG_GMAC ((psa_algorithm_t)0x02c00003)</span></div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span> </div><div class="line"><a name="l00836"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gae49d1eb601125d65a5c5b252aa45479e"> 836</a></span> <span class="preprocessor">#define PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) \</span></div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span> <span class="preprocessor"> (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \</span></div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span> <span class="preprocessor"> PSA_ALG_CIPHER_MAC_BASE)</span></div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> </div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span> <span class="preprocessor">#define PSA_ALG_CIPHER_STREAM_FLAG ((psa_algorithm_t)0x00800000)</span></div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span> <span class="preprocessor">#define PSA_ALG_CIPHER_FROM_BLOCK_FLAG ((psa_algorithm_t)0x00400000)</span></div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> </div><div class="line"><a name="l00855"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gacfec68e0c6175e02e1b2ebc97df383c0"> 855</a></span> <span class="preprocessor">#define PSA_ALG_IS_STREAM_CIPHER(alg) \</span></div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span> <span class="preprocessor"> (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_CIPHER_STREAM_FLAG)) == \</span></div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span> <span class="preprocessor"> (PSA_ALG_CATEGORY_CIPHER | PSA_ALG_CIPHER_STREAM_FLAG))</span></div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span> </div><div class="line"><a name="l00861"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gab6a5284decb0e5e1b5b8740a41ef3c5e"> 861</a></span> <span class="preprocessor">#define PSA_ALG_ARC4 ((psa_algorithm_t)0x04800001)</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> </div><div class="line"><a name="l00870"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gad318309706a769cffdc64e4c7e06b2e9"> 870</a></span> <span class="preprocessor">#define PSA_ALG_CTR ((psa_algorithm_t)0x04c00001)</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> </div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span> <span class="preprocessor">#define PSA_ALG_CFB ((psa_algorithm_t)0x04c00002)</span></div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span> </div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span> <span class="preprocessor">#define PSA_ALG_OFB ((psa_algorithm_t)0x04c00003)</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span> </div><div class="line"><a name="l00882"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaa722c0e426a797fd6d99623f59748125"> 882</a></span> <span class="preprocessor">#define PSA_ALG_XTS ((psa_algorithm_t)0x044000ff)</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span> </div><div class="line"><a name="l00891"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gacb332d72716958880ee7f97d8365ae66"> 891</a></span> <span class="preprocessor">#define PSA_ALG_CBC_NO_PADDING ((psa_algorithm_t)0x04600100)</span></div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span> </div><div class="line"><a name="l00899"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaef50d2e9716eb6d476046608e4e0c78c"> 899</a></span> <span class="preprocessor">#define PSA_ALG_CBC_PKCS7 ((psa_algorithm_t)0x04600101)</span></div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> </div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span> <span class="preprocessor">#define PSA_ALG_CCM ((psa_algorithm_t)0x06001001)</span></div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> <span class="preprocessor">#define PSA_ALG_GCM ((psa_algorithm_t)0x06001002)</span></div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> </div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span> <span class="comment">/* In the encoding of a AEAD algorithm, the bits corresponding to</span></div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> <span class="comment"> * PSA_ALG_AEAD_TAG_LENGTH_MASK encode the length of the AEAD tag.</span></div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span> <span class="comment"> * The constants for default lengths follow this encoding.</span></div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span> <span class="comment"> */</span></div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span> <span class="preprocessor">#define PSA_ALG_AEAD_TAG_LENGTH_MASK ((psa_algorithm_t)0x00003f00)</span></div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span> <span class="preprocessor">#define PSA_AEAD_TAG_LENGTH_OFFSET 8</span></div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span> </div><div class="line"><a name="l00929"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaa63c520b62ab001d54d28801742fc9db"> 929</a></span> <span class="preprocessor">#define PSA_ALG_AEAD_WITH_TAG_LENGTH(alg, tag_length) \</span></div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_AEAD_TAG_LENGTH_MASK) | \</span></div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span> <span class="preprocessor"> ((tag_length) << PSA_AEAD_TAG_LENGTH_OFFSET & \</span></div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span> <span class="preprocessor"> PSA_ALG_AEAD_TAG_LENGTH_MASK))</span></div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> </div><div class="line"><a name="l00942"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaddea507e062250cda8a29407a9480d2b"> 942</a></span> <span class="preprocessor">#define PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH(alg) \</span></div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span> <span class="preprocessor"> ( \</span></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span> <span class="preprocessor"> PSA__ALG_AEAD_WITH_DEFAULT_TAG_LENGTH__CASE(alg, PSA_ALG_CCM) \</span></div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span> <span class="preprocessor"> PSA__ALG_AEAD_WITH_DEFAULT_TAG_LENGTH__CASE(alg, PSA_ALG_GCM) \</span></div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span> <span class="preprocessor">#define PSA__ALG_AEAD_WITH_DEFAULT_TAG_LENGTH__CASE(alg, ref) \</span></div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> <span class="preprocessor"> PSA_ALG_AEAD_WITH_TAG_LENGTH(alg, 0) == \</span></div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span> <span class="preprocessor"> PSA_ALG_AEAD_WITH_TAG_LENGTH(ref, 0) ? \</span></div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span> <span class="preprocessor"> ref :</span></div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span> </div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span> <span class="preprocessor">#define PSA_ALG_RSA_PKCS1V15_SIGN_BASE ((psa_algorithm_t)0x10020000)</span></div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span> </div><div class="line"><a name="l00968"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga702ff75385a6ae7d4247033f479439af"> 968</a></span> <span class="preprocessor">#define PSA_ALG_RSA_PKCS1V15_SIGN(hash_alg) \</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span> <span class="preprocessor"> (PSA_ALG_RSA_PKCS1V15_SIGN_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span> </div><div class="line"><a name="l00976"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga4215e2a78dcf834e9a625927faa2a817"> 976</a></span> <span class="preprocessor">#define PSA_ALG_RSA_PKCS1V15_SIGN_RAW PSA_ALG_RSA_PKCS1V15_SIGN_BASE</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span> <span class="preprocessor">#define PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) \</span></div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PKCS1V15_SIGN_BASE)</span></div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span> </div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span> <span class="preprocessor">#define PSA_ALG_RSA_PSS_BASE ((psa_algorithm_t)0x10030000)</span></div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span> </div><div class="line"><a name="l00999"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga62152bf4cb4bf6aace5e1be8f143564d"> 999</a></span> <span class="preprocessor">#define PSA_ALG_RSA_PSS(hash_alg) \</span></div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> <span class="preprocessor"> (PSA_ALG_RSA_PSS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> <span class="preprocessor">#define PSA_ALG_IS_RSA_PSS(alg) \</span></div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PSS_BASE)</span></div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> </div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> <span class="preprocessor">#define PSA_ALG_DSA_BASE ((psa_algorithm_t)0x10040000)</span></div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> </div><div class="line"><a name="l01019"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga9a68efdddff5ae95f104a1416b12742e"> 1019</a></span> <span class="preprocessor">#define PSA_ALG_DSA(hash_alg) \</span></div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> <span class="preprocessor"> (PSA_ALG_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> <span class="preprocessor">#define PSA_ALG_DETERMINISTIC_DSA_BASE ((psa_algorithm_t)0x10050000)</span></div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> <span class="preprocessor">#define PSA_ALG_DSA_DETERMINISTIC_FLAG ((psa_algorithm_t)0x00010000)</span></div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> <span class="preprocessor">#define PSA_ALG_DETERMINISTIC_DSA(hash_alg) \</span></div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> <span class="preprocessor"> (PSA_ALG_DETERMINISTIC_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> <span class="preprocessor">#define PSA_ALG_IS_DSA(alg) \</span></div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_DSA_DETERMINISTIC_FLAG) == \</span></div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> <span class="preprocessor"> PSA_ALG_DSA_BASE)</span></div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> <span class="preprocessor">#define PSA_ALG_DSA_IS_DETERMINISTIC(alg) \</span></div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> <span class="preprocessor"> (((alg) & PSA_ALG_DSA_DETERMINISTIC_FLAG) != 0)</span></div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> <span class="preprocessor">#define PSA_ALG_IS_DETERMINISTIC_DSA(alg) \</span></div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> <span class="preprocessor"> (PSA_ALG_IS_DSA(alg) && PSA_ALG_DSA_IS_DETERMINISTIC(alg))</span></div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> <span class="preprocessor">#define PSA_ALG_IS_RANDOMIZED_DSA(alg) \</span></div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> <span class="preprocessor"> (PSA_ALG_IS_DSA(alg) && !PSA_ALG_DSA_IS_DETERMINISTIC(alg))</span></div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> </div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> <span class="preprocessor">#define PSA_ALG_ECDSA_BASE ((psa_algorithm_t)0x10060000)</span></div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> </div><div class="line"><a name="l01056"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga7e3ce9f514a227d5ba5d8318870452e3"> 1056</a></span> <span class="preprocessor">#define PSA_ALG_ECDSA(hash_alg) \</span></div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> <span class="preprocessor"> (PSA_ALG_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> </div><div class="line"><a name="l01067"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga51d6b6044a62e33cae0cf64bfc3b22a4"> 1067</a></span> <span class="preprocessor">#define PSA_ALG_ECDSA_ANY PSA_ALG_ECDSA_BASE</span></div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> <span class="preprocessor">#define PSA_ALG_DETERMINISTIC_ECDSA_BASE ((psa_algorithm_t)0x10070000)</span></div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> </div><div class="line"><a name="l01091"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga11da566bcd341661c8de921e2ca5ed03"> 1091</a></span> <span class="preprocessor">#define PSA_ALG_DETERMINISTIC_ECDSA(hash_alg) \</span></div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> <span class="preprocessor"> (PSA_ALG_DETERMINISTIC_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> <span class="preprocessor">#define PSA_ALG_IS_ECDSA(alg) \</span></div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_DSA_DETERMINISTIC_FLAG) == \</span></div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> <span class="preprocessor"> PSA_ALG_ECDSA_BASE)</span></div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> <span class="preprocessor">#define PSA_ALG_ECDSA_IS_DETERMINISTIC(alg) \</span></div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> <span class="preprocessor"> (((alg) & PSA_ALG_DSA_DETERMINISTIC_FLAG) != 0)</span></div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> <span class="preprocessor">#define PSA_ALG_IS_DETERMINISTIC_ECDSA(alg) \</span></div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> <span class="preprocessor"> (PSA_ALG_IS_ECDSA(alg) && PSA_ALG_ECDSA_IS_DETERMINISTIC(alg))</span></div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> <span class="preprocessor">#define PSA_ALG_IS_RANDOMIZED_ECDSA(alg) \</span></div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> <span class="preprocessor"> (PSA_ALG_IS_ECDSA(alg) && !PSA_ALG_ECDSA_IS_DETERMINISTIC(alg))</span></div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span> </div><div class="line"><a name="l01116"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gad8a8ea0536975363b66410cdeafe38b6"> 1116</a></span> <span class="preprocessor">#define PSA_ALG_IS_HASH_AND_SIGN(alg) \</span></div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> <span class="preprocessor"> (PSA_ALG_IS_RSA_PSS(alg) || PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) || \</span></div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span> <span class="preprocessor"> PSA_ALG_IS_DSA(alg) || PSA_ALG_IS_ECDSA(alg))</span></div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> </div><div class="line"><a name="l01138"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga24cf6d7bcd2b9aeeeff86f07b6c674e3"> 1138</a></span> <span class="preprocessor">#define PSA_ALG_SIGN_GET_HASH(alg) \</span></div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span> <span class="preprocessor"> (PSA_ALG_IS_HASH_AND_SIGN(alg) ? \</span></div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> <span class="preprocessor"> ((alg) & PSA_ALG_HASH_MASK) == 0 ? </span><span class="comment">/*"raw" algorithm*/</span><span class="preprocessor"> 0 : \</span></div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> <span class="preprocessor"> ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \</span></div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span> </div><div class="line"><a name="l01146"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga4c540d3abe43fb9abcb94f2bc51acef9"> 1146</a></span> <span class="preprocessor">#define PSA_ALG_RSA_PKCS1V15_CRYPT ((psa_algorithm_t)0x12020000)</span></div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> </div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> <span class="preprocessor">#define PSA_ALG_RSA_OAEP_BASE ((psa_algorithm_t)0x12030000)</span></div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> </div><div class="line"><a name="l01163"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaa1235dc3fdd9839c6c1b1a9857344c76"> 1163</a></span> <span class="preprocessor">#define PSA_ALG_RSA_OAEP(hash_alg) \</span></div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span> <span class="preprocessor"> (PSA_ALG_RSA_OAEP_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span> <span class="preprocessor">#define PSA_ALG_IS_RSA_OAEP(alg) \</span></div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_OAEP_BASE)</span></div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> <span class="preprocessor">#define PSA_ALG_RSA_OAEP_GET_HASH(alg) \</span></div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span> <span class="preprocessor"> (PSA_ALG_IS_RSA_OAEP(alg) ? \</span></div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span> <span class="preprocessor"> ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \</span></div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span> </div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span> <span class="preprocessor">#define PSA_ALG_HKDF_BASE ((psa_algorithm_t)0x20000100)</span></div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span> </div><div class="line"><a name="l01193"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga32a888fb360e6e25cab8a343772c4a82"> 1193</a></span> <span class="preprocessor">#define PSA_ALG_HKDF(hash_alg) \</span></div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span> <span class="preprocessor"> (PSA_ALG_HKDF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span> </div><div class="line"><a name="l01206"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga1979d0a76fcee6164cf2e65960f38db2"> 1206</a></span> <span class="preprocessor">#define PSA_ALG_IS_HKDF(alg) \</span></div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_BASE)</span></div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> <span class="preprocessor">#define PSA_ALG_HKDF_GET_HASH(hkdf_alg) \</span></div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span> <span class="preprocessor"> (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> </div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span> <span class="preprocessor">#define PSA_ALG_TLS12_PRF_BASE ((psa_algorithm_t)0x20000200)</span></div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> </div><div class="line"><a name="l01234"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga6d5623c2ccda1d4a84e34351af8382d5"> 1234</a></span> <span class="preprocessor">#define PSA_ALG_TLS12_PRF(hash_alg) \</span></div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span> <span class="preprocessor"> (PSA_ALG_TLS12_PRF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span> </div><div class="line"><a name="l01245"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaa3c18890c50222e5219f40ade8927e66"> 1245</a></span> <span class="preprocessor">#define PSA_ALG_IS_TLS12_PRF(alg) \</span></div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PRF_BASE)</span></div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span> <span class="preprocessor">#define PSA_ALG_TLS12_PRF_GET_HASH(hkdf_alg) \</span></div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span> <span class="preprocessor"> (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> </div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span> <span class="preprocessor">#define PSA_ALG_TLS12_PSK_TO_MS_BASE ((psa_algorithm_t)0x20000300)</span></div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> </div><div class="line"><a name="l01274"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga039ec797f15d1635d9b2e09a611f8a68"> 1274</a></span> <span class="preprocessor">#define PSA_ALG_TLS12_PSK_TO_MS(hash_alg) \</span></div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span> <span class="preprocessor"> (PSA_ALG_TLS12_PSK_TO_MS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span> </div><div class="line"><a name="l01285"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gab25ecc074a93fd11069bedfbba5a287b"> 1285</a></span> <span class="preprocessor">#define PSA_ALG_IS_TLS12_PSK_TO_MS(alg) \</span></div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PSK_TO_MS_BASE)</span></div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span> <span class="preprocessor">#define PSA_ALG_TLS12_PSK_TO_MS_GET_HASH(hkdf_alg) \</span></div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span> <span class="preprocessor"> (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span> </div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span> <span class="preprocessor">#define PSA_ALG_KEY_DERIVATION_MASK ((psa_algorithm_t)0x080fffff)</span></div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span> <span class="preprocessor">#define PSA_ALG_KEY_AGREEMENT_MASK ((psa_algorithm_t)0x10f00000)</span></div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span> </div><div class="line"><a name="l01307"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga78bb81cffb87a635c247725eeb2a2682"> 1307</a></span> <span class="preprocessor">#define PSA_ALG_KEY_AGREEMENT(ka_alg, kdf_alg) \</span></div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span> <span class="preprocessor"> ((ka_alg) | (kdf_alg))</span></div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span> </div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span> <span class="preprocessor">#define PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) \</span></div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span> <span class="preprocessor"> (((alg) & PSA_ALG_KEY_DERIVATION_MASK) | PSA_ALG_CATEGORY_KEY_DERIVATION)</span></div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span> </div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> <span class="preprocessor">#define PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) \</span></div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> <span class="preprocessor"> (((alg) & PSA_ALG_KEY_AGREEMENT_MASK) | PSA_ALG_CATEGORY_KEY_AGREEMENT)</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> </div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span> <span class="preprocessor">#define PSA_ALG_IS_RAW_KEY_AGREEMENT(alg) \</span></div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span> <span class="preprocessor"> (PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) == PSA_ALG_CATEGORY_KEY_DERIVATION)</span></div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span> </div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span> <span class="preprocessor">#define PSA_ALG_IS_KEY_DERIVATION_OR_AGREEMENT(alg) \</span></div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span> <span class="preprocessor"> ((PSA_ALG_IS_KEY_DERIVATION(alg) || PSA_ALG_IS_KEY_AGREEMENT(alg)))</span></div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span> </div><div class="line"><a name="l01330"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga0ebbb6f93a05b6511e6f108ffd2d1eb4"> 1330</a></span> <span class="preprocessor">#define PSA_ALG_FFDH ((psa_algorithm_t)0x30100000)</span></div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span> </div><div class="line"><a name="l01343"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaa3cf76164cd9375af4fb8a291078a19e"> 1343</a></span> <span class="preprocessor">#define PSA_ALG_IS_FFDH(alg) \</span></div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> <span class="preprocessor"> (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_FFDH)</span></div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span> </div><div class="line"><a name="l01371"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gab2dbcf71b63785e7dd7b54a100edee43"> 1371</a></span> <span class="preprocessor">#define PSA_ALG_ECDH ((psa_algorithm_t)0x30200000)</span></div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span> </div><div class="line"><a name="l01386"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga9d9b6533d2a6bea7bac7ae01facb820d"> 1386</a></span> <span class="preprocessor">#define PSA_ALG_IS_ECDH(alg) \</span></div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span> <span class="preprocessor"> (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_ECDH)</span></div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span> </div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span> <span class="preprocessor">#define PSA_ALG_IS_WILDCARD(alg) \</span></div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span> <span class="preprocessor"> (PSA_ALG_IS_HASH_AND_SIGN(alg) ? \</span></div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span> <span class="preprocessor"> PSA_ALG_SIGN_GET_HASH(alg) == PSA_ALG_ANY_HASH : \</span></div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span> <span class="preprocessor"> (alg) == PSA_ALG_ANY_HASH)</span></div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span> </div><div class="line"><a name="l01420"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gacf83d7430e82b97cecb8b26ca6fa1426"> 1420</a></span> <span class="preprocessor">#define PSA_ALG_IS_WILDCARD(alg) \</span></div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span> <span class="preprocessor"> (PSA_ALG_IS_HASH_AND_SIGN(alg) ? \</span></div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span> <span class="preprocessor"> PSA_ALG_SIGN_GET_HASH(alg) == PSA_ALG_ANY_HASH : \</span></div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span> <span class="preprocessor"> (alg) == PSA_ALG_ANY_HASH)</span></div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span> </div><div class="line"><a name="l01434"></a><span class="lineno"><a class="line" href="group__key__lifetimes.html#ga8b438870ba69489b685730d346455108"> 1434</a></span> <span class="preprocessor">#define PSA_KEY_LIFETIME_VOLATILE ((psa_key_lifetime_t)0x00000000)</span></div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span> </div><div class="line"><a name="l01448"></a><span class="lineno"><a class="line" href="group__key__lifetimes.html#ga3713a01c5fcd5f7eae46ff22ceaf6d02"> 1448</a></span> <span class="preprocessor">#define PSA_KEY_LIFETIME_PERSISTENT ((psa_key_lifetime_t)0x00000001)</span></div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span> </div><div class="line"><a name="l01467"></a><span class="lineno"><a class="line" href="group__policy.html#ga7dddccdd1303176e87a4d20c87b589ed"> 1467</a></span> <span class="preprocessor">#define PSA_KEY_USAGE_EXPORT ((psa_key_usage_t)0x00000001)</span></div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span> </div><div class="line"><a name="l01478"></a><span class="lineno"><a class="line" href="group__policy.html#ga75153b296d045d529d97203a6a995dad"> 1478</a></span> <span class="preprocessor">#define PSA_KEY_USAGE_ENCRYPT ((psa_key_usage_t)0x00000100)</span></div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span> </div><div class="line"><a name="l01489"></a><span class="lineno"><a class="line" href="group__policy.html#gac3f2d2e5983db1edde9f142ca9bf8e6a"> 1489</a></span> <span class="preprocessor">#define PSA_KEY_USAGE_DECRYPT ((psa_key_usage_t)0x00000200)</span></div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span> </div><div class="line"><a name="l01499"></a><span class="lineno"><a class="line" href="group__policy.html#ga99b9f456cf59efc4b5579465407aef5a"> 1499</a></span> <span class="preprocessor">#define PSA_KEY_USAGE_SIGN ((psa_key_usage_t)0x00000400)</span></div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span> </div><div class="line"><a name="l01509"></a><span class="lineno"><a class="line" href="group__policy.html#ga39b54ffd5958b69634607924fa53cea6"> 1509</a></span> <span class="preprocessor">#define PSA_KEY_USAGE_VERIFY ((psa_key_usage_t)0x00000800)</span></div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span> </div><div class="line"><a name="l01513"></a><span class="lineno"><a class="line" href="group__policy.html#gaf19022acc5ef23cf12477f632b48a0b2"> 1513</a></span> <span class="preprocessor">#define PSA_KEY_USAGE_DERIVE ((psa_key_usage_t)0x00001000)</span></div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span> </div><div class="line"><a name="l01525"></a><span class="lineno"><a class="line" href="group__derivation.html#ga90a1995a41e26ed5ca30d2d4641d1168"> 1525</a></span> <span class="preprocessor">#define PSA_KDF_STEP_SECRET ((psa_key_derivation_step_t)0x0101)</span></div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span> </div><div class="line"><a name="l01531"></a><span class="lineno"><a class="line" href="group__derivation.html#ga9f4da10191bcb690b88756ed8470b03c"> 1531</a></span> <span class="preprocessor">#define PSA_KDF_STEP_LABEL ((psa_key_derivation_step_t)0x0201)</span></div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span> </div><div class="line"><a name="l01537"></a><span class="lineno"><a class="line" href="group__derivation.html#ga384777dac55791d8f3a1af72c847b327"> 1537</a></span> <span class="preprocessor">#define PSA_KDF_STEP_SALT ((psa_key_derivation_step_t)0x0202)</span></div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span> </div><div class="line"><a name="l01543"></a><span class="lineno"><a class="line" href="group__derivation.html#ga836afe760bbda3dafc6c29631560b1a0"> 1543</a></span> <span class="preprocessor">#define PSA_KDF_STEP_INFO ((psa_key_derivation_step_t)0x0203)</span></div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span> </div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> <span class="preprocessor">#endif </span><span class="comment">/* PSA_CRYPTO_VALUES_H */</span><span class="preprocessor"></span></div></div><!-- fragment --></div><!-- contents -->
+<a href="crypto__values_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">/*</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * Copyright (C) 2018, ARM Limited, All Rights Reserved</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * SPDX-License-Identifier: Apache-2.0</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> *</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License"); you may</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * not use this file except in compliance with the License.</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> *</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> * This file is part of mbed TLS (https://tls.mbed.org)</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> */</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#ifndef PSA_CRYPTO_VALUES_H</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#define PSA_CRYPTO_VALUES_H</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#if !defined(PSA_SUCCESS)</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">/* If PSA_SUCCESS is defined, assume that PSA crypto is being used</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment"> * together with PSA IPC, which also defines the identifier</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment"> * PSA_SUCCESS. We must not define PSA_SUCCESS ourselves in that case;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment"> * the other error code names don't clash. This is a temporary hack</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment"> * until we unify error reporting in PSA IPC and PSA crypto.</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment"> *</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment"> * Note that psa_defs.h must be included before this header!</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment"> */</span></div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="group__error.html#ga4cc859e2c66ca381c7418db3527a65e1"> 53</a></span> <span class="preprocessor">#define PSA_SUCCESS ((psa_status_t)0)</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#endif </span><span class="comment">/* !defined(PSA_SUCCESS) */</span><span class="preprocessor"></span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="group__error.html#ga24d5fdcdd759f846f79d9e581c63a83f"> 61</a></span> <span class="preprocessor">#define PSA_ERROR_UNKNOWN_ERROR ((psa_status_t)1)</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="group__error.html#ga1dcc6d130633ed5db8942257581b55dd"> 70</a></span> <span class="preprocessor">#define PSA_ERROR_NOT_SUPPORTED ((psa_status_t)2)</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="group__error.html#ga4d1b8dd8526177a15a210b7afc1accb1"> 83</a></span> <span class="preprocessor">#define PSA_ERROR_NOT_PERMITTED ((psa_status_t)3)</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="group__error.html#ga695025f4ec11249aee7ea3d0f65e01c8"> 95</a></span> <span class="preprocessor">#define PSA_ERROR_BUFFER_TOO_SMALL ((psa_status_t)4)</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="group__error.html#gac2fee3a51249fbea45360aaa911f3e58"> 103</a></span> <span class="preprocessor">#define PSA_ERROR_OCCUPIED_SLOT ((psa_status_t)5)</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="group__error.html#gaba00e3e6ceb2b12965a81e5ac02ae040"> 111</a></span> <span class="preprocessor">#define PSA_ERROR_EMPTY_SLOT ((psa_status_t)6)</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="group__error.html#ga933d40fa2a591004f2e93aa91e11db84"> 123</a></span> <span class="preprocessor">#define PSA_ERROR_BAD_STATE ((psa_status_t)7)</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="group__error.html#ga798df25a505ebf931f7bec1f80f1f85f"> 139</a></span> <span class="preprocessor">#define PSA_ERROR_INVALID_ARGUMENT ((psa_status_t)8)</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="group__error.html#ga91b2ad8a867517a2651f1b076c5216e5"> 145</a></span> <span class="preprocessor">#define PSA_ERROR_INSUFFICIENT_MEMORY ((psa_status_t)9)</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="group__error.html#ga897a45eb206a6f6b7be7ffbe36f0d766"> 154</a></span> <span class="preprocessor">#define PSA_ERROR_INSUFFICIENT_STORAGE ((psa_status_t)10)</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="group__error.html#ga5cdb6948371d49e916106249020ea3f7"> 171</a></span> <span class="preprocessor">#define PSA_ERROR_COMMUNICATION_FAILURE ((psa_status_t)11)</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="group__error.html#gadd169a1af2707862b95fb9df91dfc37d"> 196</a></span> <span class="preprocessor">#define PSA_ERROR_STORAGE_FAILURE ((psa_status_t)12)</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="group__error.html#ga08b10e70fa5ff0b05c631d9f8f6b2c6b"> 202</a></span> <span class="preprocessor">#define PSA_ERROR_HARDWARE_FAILURE ((psa_status_t)13)</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="group__error.html#ga2c5dda1485cb54f2385cb9c1279a7004"> 233</a></span> <span class="preprocessor">#define PSA_ERROR_TAMPERING_DETECTED ((psa_status_t)14)</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="group__error.html#ga4deb59fec02297ec5d8b42178323f675"> 252</a></span> <span class="preprocessor">#define PSA_ERROR_INSUFFICIENT_ENTROPY ((psa_status_t)15)</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="group__error.html#ga35927f755d232c4766de600f2c49e9f2"> 262</a></span> <span class="preprocessor">#define PSA_ERROR_INVALID_SIGNATURE ((psa_status_t)16)</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="group__error.html#gabe29594edbfb152cf153975b0597ac48"> 278</a></span> <span class="preprocessor">#define PSA_ERROR_INVALID_PADDING ((psa_status_t)17)</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="group__error.html#gaf1fa61f72e9e5b4a848c991bea495767"> 284</a></span> <span class="preprocessor">#define PSA_ERROR_INSUFFICIENT_CAPACITY ((psa_status_t)18)</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="group__error.html#gadf22718935657c2c3168c228204085f9"> 288</a></span> <span class="preprocessor">#define PSA_ERROR_INVALID_HANDLE ((psa_status_t)19)</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gafce7ab2b54ce97ea5bff73f13a9f3e5b"> 300</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_NONE ((psa_key_type_t)0x00000000)</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga8dbaed2fdb1ebae8aa127ad3988516f7"> 309</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_VENDOR_FLAG ((psa_key_type_t)0x80000000)</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="preprocessor">#define PSA_KEY_TYPE_CATEGORY_MASK ((psa_key_type_t)0x70000000)</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="preprocessor">#define PSA_KEY_TYPE_CATEGORY_SYMMETRIC ((psa_key_type_t)0x40000000)</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="preprocessor">#define PSA_KEY_TYPE_CATEGORY_RAW ((psa_key_type_t)0x50000000)</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="preprocessor">#define PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY ((psa_key_type_t)0x60000000)</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="preprocessor">#define PSA_KEY_TYPE_CATEGORY_KEY_PAIR ((psa_key_type_t)0x70000000)</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="preprocessor">#define PSA_KEY_TYPE_CATEGORY_FLAG_PAIR ((psa_key_type_t)0x10000000)</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gadbe4c086a6562aefe344bc79e51bdfd3"> 320</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_VENDOR_DEFINED(type) \</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="preprocessor"> (((type) & PSA_KEY_TYPE_VENDOR_FLAG) != 0)</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaef86ce4e810e1c2c76068ac874bfef54"> 327</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_UNSTRUCTURED(type) \</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="preprocessor"> (((type) & PSA_KEY_TYPE_CATEGORY_MASK & ~(psa_key_type_t)0x10000000) == \</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="preprocessor"> PSA_KEY_TYPE_CATEGORY_SYMMETRIC)</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gab138ae2ebf2905dfbaf4154db2620939"> 332</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_ASYMMETRIC(type) \</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="preprocessor"> (((type) & PSA_KEY_TYPE_CATEGORY_MASK \</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="preprocessor"> & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) == \</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="preprocessor"> PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY)</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gac674a0f059bc0cb72b47f0c517b4f45b"> 337</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_PUBLIC_KEY(type) \</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="preprocessor"> (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY)</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gac14c6d6e1b2b7f4a92a7b757465cff29"> 341</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_KEYPAIR(type) \</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="preprocessor"> (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_KEY_PAIR)</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaf09f1ca1de6a7e7cff0fe516f3f6c91d"> 353</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_KEYPAIR_OF_PUBLIC_KEY(type) \</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> <span class="preprocessor"> ((type) | PSA_KEY_TYPE_CATEGORY_FLAG_PAIR)</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gace08e46dd7cbf642d50d982a25d02bec"> 365</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) \</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="preprocessor"> ((type) & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR)</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaa97f92025533102616b32d571c940d80"> 372</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_RAW_DATA ((psa_key_type_t)0x50000001)</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga92d989f4ca64abd00f463defd773a6f8"> 382</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_HMAC ((psa_key_type_t)0x51000000)</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gae871b2357b8593f33bfd51abbf93ebb1"> 389</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_DERIVE ((psa_key_type_t)0x52000000)</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga6ee54579dcf278c677eda4bb1a29575e"> 396</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_AES ((psa_key_type_t)0x40000001)</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> </div><div class="line"><a name="l00407"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga577562bfbbc691c820d55ec308333138"> 407</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_DES ((psa_key_type_t)0x40000002)</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div><div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gad8e5da742343fd5519f9d8a630c2ed81"> 411</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_CAMELLIA ((psa_key_type_t)0x40000003)</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> </div><div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gae4d46e83f910dcaa126000a8ed03cde9"> 417</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_ARC4 ((psa_key_type_t)0x40000004)</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> </div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga9ba0878f56c8bcd1995ac017a74f513b"> 420</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_RSA_PUBLIC_KEY ((psa_key_type_t)0x60010000)</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div><div class="line"><a name="l00422"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga581f50687f5d650456925278948f2799"> 422</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_RSA_KEYPAIR ((psa_key_type_t)0x70010000)</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> </div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga0e1d8f241228e49c9cadadfb4579ef1a"> 424</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_RSA(type) \</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="preprocessor"> (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY)</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> </div><div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga5e7439c2905136366c3a876e62e5ddfc"> 428</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_DSA_PUBLIC_KEY ((psa_key_type_t)0x60020000)</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga011010ee28c20388f3d89fb27088ed62"> 430</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_DSA_KEYPAIR ((psa_key_type_t)0x70020000)</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> </div><div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga273fdfcf23eb0624f8b63d2321cf95c1"> 432</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_DSA(type) \</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="preprocessor"> (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) == PSA_KEY_TYPE_DSA_PUBLIC_KEY)</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> <span class="preprocessor">#define PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE ((psa_key_type_t)0x60030000)</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="preprocessor">#define PSA_KEY_TYPE_ECC_KEYPAIR_BASE ((psa_key_type_t)0x70030000)</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="preprocessor">#define PSA_KEY_TYPE_ECC_CURVE_MASK ((psa_key_type_t)0x0000ffff)</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00439"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gadf3ad65d157bf5282849c954bf3f51af"> 439</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_ECC_KEYPAIR(curve) \</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="preprocessor"> (PSA_KEY_TYPE_ECC_KEYPAIR_BASE | (curve))</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div><div class="line"><a name="l00442"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gad54c03d3b47020e571a72cd01d978cf2"> 442</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve) \</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="preprocessor"> (PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE | (curve))</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> </div><div class="line"><a name="l00446"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga88e01fa06b585654689a99bcc06bbe66"> 446</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_ECC(type) \</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> <span class="preprocessor"> ((PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) & \</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="preprocessor"> ~PSA_KEY_TYPE_ECC_CURVE_MASK) == PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE)</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> </div><div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga7bf101b671e8cf26f4cb08fcb679db4b"> 450</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_ECC_KEYPAIR(type) \</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <span class="preprocessor"> (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="preprocessor"> PSA_KEY_TYPE_ECC_KEYPAIR_BASE)</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> </div><div class="line"><a name="l00454"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga5af146a173b0c84d7e737e2fb6a3c0a7"> 454</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(type) \</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="preprocessor"> (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="preprocessor"> PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE)</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> </div><div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga0c567210e6f80aa8f2aa87efa7a3a3f9"> 459</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_GET_CURVE(type) \</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="preprocessor"> ((psa_ecc_curve_t) (PSA_KEY_TYPE_IS_ECC(type) ? \</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="preprocessor"> ((type) & PSA_KEY_TYPE_ECC_CURVE_MASK) : \</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="preprocessor"> 0))</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="comment">/* The encoding of curve identifiers is currently aligned with the</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="comment"> * TLS Supported Groups Registry (formerly known as the</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="comment"> * TLS EC Named Curve Registry)</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="comment"> * https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> <span class="comment"> * The values are defined by RFC 8422 and RFC 7027. */</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT163K1 ((psa_ecc_curve_t) 0x0001)</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT163R1 ((psa_ecc_curve_t) 0x0002)</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT163R2 ((psa_ecc_curve_t) 0x0003)</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT193R1 ((psa_ecc_curve_t) 0x0004)</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT193R2 ((psa_ecc_curve_t) 0x0005)</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT233K1 ((psa_ecc_curve_t) 0x0006)</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT233R1 ((psa_ecc_curve_t) 0x0007)</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT239K1 ((psa_ecc_curve_t) 0x0008)</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT283K1 ((psa_ecc_curve_t) 0x0009)</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT283R1 ((psa_ecc_curve_t) 0x000a)</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT409K1 ((psa_ecc_curve_t) 0x000b)</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT409R1 ((psa_ecc_curve_t) 0x000c)</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT571K1 ((psa_ecc_curve_t) 0x000d)</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECT571R1 ((psa_ecc_curve_t) 0x000e)</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP160K1 ((psa_ecc_curve_t) 0x000f)</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP160R1 ((psa_ecc_curve_t) 0x0010)</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP160R2 ((psa_ecc_curve_t) 0x0011)</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP192K1 ((psa_ecc_curve_t) 0x0012)</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP192R1 ((psa_ecc_curve_t) 0x0013)</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP224K1 ((psa_ecc_curve_t) 0x0014)</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP224R1 ((psa_ecc_curve_t) 0x0015)</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP256K1 ((psa_ecc_curve_t) 0x0016)</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP256R1 ((psa_ecc_curve_t) 0x0017)</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP384R1 ((psa_ecc_curve_t) 0x0018)</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="preprocessor">#define PSA_ECC_CURVE_SECP521R1 ((psa_ecc_curve_t) 0x0019)</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="preprocessor">#define PSA_ECC_CURVE_BRAINPOOL_P256R1 ((psa_ecc_curve_t) 0x001a)</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <span class="preprocessor">#define PSA_ECC_CURVE_BRAINPOOL_P384R1 ((psa_ecc_curve_t) 0x001b)</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="preprocessor">#define PSA_ECC_CURVE_BRAINPOOL_P512R1 ((psa_ecc_curve_t) 0x001c)</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <span class="preprocessor">#define PSA_ECC_CURVE_CURVE25519 ((psa_ecc_curve_t) 0x001d)</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="preprocessor">#define PSA_ECC_CURVE_CURVE448 ((psa_ecc_curve_t) 0x001e)</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> </div><div class="line"><a name="l00501"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga325a340d7c72d99d3a678eb210bf6e0a"> 501</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_DH_PUBLIC_KEY ((psa_key_type_t)0x60040000)</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga39b63c6b97a62a316c0660bf72b2fdd5"> 503</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_DH_KEYPAIR ((psa_key_type_t)0x70040000)</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga248ae35c0e2becaebbf479fc1c3a3b0e"> 506</a></span> <span class="preprocessor">#define PSA_KEY_TYPE_IS_DH(type) \</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="preprocessor"> (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) == PSA_KEY_TYPE_DH_PUBLIC_KEY)</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> </div><div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gacaa366bdeb0413e63e87a667c5457b2e"> 527</a></span> <span class="preprocessor">#define PSA_BLOCK_CIPHER_BLOCK_SIZE(type) \</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="preprocessor"> ( \</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="preprocessor"> (type) == PSA_KEY_TYPE_AES ? 16 : \</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="preprocessor"> (type) == PSA_KEY_TYPE_DES ? 8 : \</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="preprocessor"> (type) == PSA_KEY_TYPE_CAMELLIA ? 16 : \</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="preprocessor"> (type) == PSA_KEY_TYPE_ARC4 ? 1 : \</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> </div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="preprocessor">#define PSA_ALG_VENDOR_FLAG ((psa_algorithm_t)0x80000000)</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_MASK ((psa_algorithm_t)0x7f000000)</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_HASH ((psa_algorithm_t)0x01000000)</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_MAC ((psa_algorithm_t)0x02000000)</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_CIPHER ((psa_algorithm_t)0x04000000)</span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_AEAD ((psa_algorithm_t)0x06000000)</span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_SIGN ((psa_algorithm_t)0x10000000)</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION ((psa_algorithm_t)0x12000000)</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_KEY_DERIVATION ((psa_algorithm_t)0x20000000)</span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> <span class="preprocessor">#define PSA_ALG_CATEGORY_KEY_AGREEMENT ((psa_algorithm_t)0x30000000)</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> <span class="preprocessor">#define PSA_ALG_IS_VENDOR_DEFINED(alg) \</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> <span class="preprocessor"> (((alg) & PSA_ALG_VENDOR_FLAG) != 0)</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> </div><div class="line"><a name="l00557"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gac9280662bb482590b4b33d1dcd32930f"> 557</a></span> <span class="preprocessor">#define PSA_ALG_IS_HASH(alg) \</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> <span class="preprocessor"> (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_HASH)</span></div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> </div><div class="line"><a name="l00568"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaca7aee4c9dde316b3b1a150a26eab776"> 568</a></span> <span class="preprocessor">#define PSA_ALG_IS_MAC(alg) \</span></div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> <span class="preprocessor"> (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_MAC)</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> </div><div class="line"><a name="l00579"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga1d1a5a402ad89a2e68f12bfb535490eb"> 579</a></span> <span class="preprocessor">#define PSA_ALG_IS_CIPHER(alg) \</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> <span class="preprocessor"> (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_CIPHER)</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span> </div><div class="line"><a name="l00591"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga1d44829d60065eaa4ac9a703e7d6abc8"> 591</a></span> <span class="preprocessor">#define PSA_ALG_IS_AEAD(alg) \</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> <span class="preprocessor"> (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_AEAD)</span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> </div><div class="line"><a name="l00602"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga6d490d0904e0698f6c1268a89d72ff31"> 602</a></span> <span class="preprocessor">#define PSA_ALG_IS_SIGN(alg) \</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span> <span class="preprocessor"> (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_SIGN)</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span> </div><div class="line"><a name="l00613"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga41d2ee937d54efd76bd54a97b2ebc08a"> 613</a></span> <span class="preprocessor">#define PSA_ALG_IS_ASYMMETRIC_ENCRYPTION(alg) \</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="preprocessor"> (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION)</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> </div><div class="line"><a name="l00624"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga59753742cb06553bd22751bbef472b6f"> 624</a></span> <span class="preprocessor">#define PSA_ALG_IS_KEY_AGREEMENT(alg) \</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> <span class="preprocessor"> (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_AGREEMENT)</span></div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span> </div><div class="line"><a name="l00635"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaf8b90c648aa53dbd06c236695e300cd0"> 635</a></span> <span class="preprocessor">#define PSA_ALG_IS_KEY_DERIVATION(alg) \</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="preprocessor"> (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_DERIVATION)</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> </div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="preprocessor">#define PSA_ALG_HASH_MASK ((psa_algorithm_t)0x000000ff)</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> </div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="preprocessor">#define PSA_ALG_MD2 ((psa_algorithm_t)0x01000001)</span></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="preprocessor">#define PSA_ALG_MD4 ((psa_algorithm_t)0x01000002)</span></div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <span class="preprocessor">#define PSA_ALG_MD5 ((psa_algorithm_t)0x01000003)</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> <span class="preprocessor">#define PSA_ALG_RIPEMD160 ((psa_algorithm_t)0x01000004)</span></div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> <span class="preprocessor">#define PSA_ALG_SHA_1 ((psa_algorithm_t)0x01000005)</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> </div><div class="line"><a name="l00646"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga25d6a3244d10a7148fe6b026d1979f7b"> 646</a></span> <span class="preprocessor">#define PSA_ALG_SHA_224 ((psa_algorithm_t)0x01000008)</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> </div><div class="line"><a name="l00648"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga619471f978e13cdd0a1e37145e4bf341"> 648</a></span> <span class="preprocessor">#define PSA_ALG_SHA_256 ((psa_algorithm_t)0x01000009)</span></div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> </div><div class="line"><a name="l00650"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga58af64dd9a86a287e8da9ed7739eead4"> 650</a></span> <span class="preprocessor">#define PSA_ALG_SHA_384 ((psa_algorithm_t)0x0100000a)</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span> </div><div class="line"><a name="l00652"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gafba3ae409f46d3dd7f37a0910660c3e9"> 652</a></span> <span class="preprocessor">#define PSA_ALG_SHA_512 ((psa_algorithm_t)0x0100000b)</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> </div><div class="line"><a name="l00654"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga3fe2d7c3c80e3186ca78d16a35d5d931"> 654</a></span> <span class="preprocessor">#define PSA_ALG_SHA_512_224 ((psa_algorithm_t)0x0100000c)</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> </div><div class="line"><a name="l00656"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga5910b3964c14e9613e8643a45b09c2d4"> 656</a></span> <span class="preprocessor">#define PSA_ALG_SHA_512_256 ((psa_algorithm_t)0x0100000d)</span></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> </div><div class="line"><a name="l00658"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga16f5fe34ccce68c2fada1224c054a999"> 658</a></span> <span class="preprocessor">#define PSA_ALG_SHA3_224 ((psa_algorithm_t)0x01000010)</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> </div><div class="line"><a name="l00660"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaace70d9515489bbe3c5e7ac1b7d9155b"> 660</a></span> <span class="preprocessor">#define PSA_ALG_SHA3_256 ((psa_algorithm_t)0x01000011)</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> </div><div class="line"><a name="l00662"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gab0f079257ea75e2acfe2fc3b38c78cd8"> 662</a></span> <span class="preprocessor">#define PSA_ALG_SHA3_384 ((psa_algorithm_t)0x01000012)</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> </div><div class="line"><a name="l00664"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga37e5dbe936dddb155e76f2997de27188"> 664</a></span> <span class="preprocessor">#define PSA_ALG_SHA3_512 ((psa_algorithm_t)0x01000013)</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span> </div><div class="line"><a name="l00699"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaa1288ea8bd397a8a3f5e19e94110f2e4"> 699</a></span> <span class="preprocessor">#define PSA_ALG_ANY_HASH ((psa_algorithm_t)0x010000ff)</span></div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> </div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span> <span class="preprocessor">#define PSA_ALG_MAC_SUBCATEGORY_MASK ((psa_algorithm_t)0x00c00000)</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span> <span class="preprocessor">#define PSA_ALG_HMAC_BASE ((psa_algorithm_t)0x02800000)</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span> </div><div class="line"><a name="l00714"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga70f397425684b3efcde1e0e34c28261f"> 714</a></span> <span class="preprocessor">#define PSA_ALG_HMAC(hash_alg) \</span></div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span> <span class="preprocessor"> (PSA_ALG_HMAC_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span> </div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span> <span class="preprocessor">#define PSA_ALG_HMAC_GET_HASH(hmac_alg) \</span></div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span> <span class="preprocessor"> (PSA_ALG_CATEGORY_HASH | ((hmac_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> </div><div class="line"><a name="l00730"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga4a050c3c3cbc6eb96418f18847601c8a"> 730</a></span> <span class="preprocessor">#define PSA_ALG_IS_HMAC(alg) \</span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span> <span class="preprocessor"> (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \</span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> <span class="preprocessor"> PSA_ALG_HMAC_BASE)</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> </div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> <span class="comment">/* In the encoding of a MAC algorithm, the bits corresponding to</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span> <span class="comment"> * PSA_ALG_MAC_TRUNCATION_MASK encode the length to which the MAC is</span></div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> <span class="comment"> * truncated. As an exception, the value 0 means the untruncated algorithm,</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span> <span class="comment"> * whatever its length is. The length is encoded in 6 bits, so it can</span></div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span> <span class="comment"> * reach up to 63; the largest MAC is 64 bytes so its trivial truncation</span></div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span> <span class="comment"> * to full length is correctly encoded as 0 and any non-trivial truncation</span></div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> <span class="comment"> * is correctly encoded as a value between 1 and 63. */</span></div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span> <span class="preprocessor">#define PSA_ALG_MAC_TRUNCATION_MASK ((psa_algorithm_t)0x00003f00)</span></div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> <span class="preprocessor">#define PSA_MAC_TRUNCATION_OFFSET 8</span></div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span> </div><div class="line"><a name="l00777"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaf36137110baf7bb13c5028fd62c64276"> 777</a></span> <span class="preprocessor">#define PSA_ALG_TRUNCATED_MAC(alg, mac_length) \</span></div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_MAC_TRUNCATION_MASK) | \</span></div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span> <span class="preprocessor"> ((mac_length) << PSA_MAC_TRUNCATION_OFFSET & PSA_ALG_MAC_TRUNCATION_MASK))</span></div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span> </div><div class="line"><a name="l00793"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaa05a8d99634f3350597ac9284fb70cb1"> 793</a></span> <span class="preprocessor">#define PSA_ALG_FULL_LENGTH_MAC(alg) \</span></div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> <span class="preprocessor"> ((alg) & ~PSA_ALG_MAC_TRUNCATION_MASK)</span></div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span> </div><div class="line"><a name="l00807"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gab03726c4476174e019a08e2a04018ce8"> 807</a></span> <span class="preprocessor">#define PSA_MAC_TRUNCATED_LENGTH(alg) \</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span> <span class="preprocessor"> (((alg) & PSA_ALG_MAC_TRUNCATION_MASK) >> PSA_MAC_TRUNCATION_OFFSET)</span></div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> </div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span> <span class="preprocessor">#define PSA_ALG_CIPHER_MAC_BASE ((psa_algorithm_t)0x02c00000)</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> <span class="preprocessor">#define PSA_ALG_CBC_MAC ((psa_algorithm_t)0x02c00001)</span></div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> <span class="preprocessor">#define PSA_ALG_CMAC ((psa_algorithm_t)0x02c00002)</span></div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> <span class="preprocessor">#define PSA_ALG_GMAC ((psa_algorithm_t)0x02c00003)</span></div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span> </div><div class="line"><a name="l00823"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gae49d1eb601125d65a5c5b252aa45479e"> 823</a></span> <span class="preprocessor">#define PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) \</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span> <span class="preprocessor"> (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> <span class="preprocessor"> PSA_ALG_CIPHER_MAC_BASE)</span></div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span> </div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span> <span class="preprocessor">#define PSA_ALG_CIPHER_STREAM_FLAG ((psa_algorithm_t)0x00800000)</span></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> <span class="preprocessor">#define PSA_ALG_CIPHER_FROM_BLOCK_FLAG ((psa_algorithm_t)0x00400000)</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> </div><div class="line"><a name="l00842"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gacfec68e0c6175e02e1b2ebc97df383c0"> 842</a></span> <span class="preprocessor">#define PSA_ALG_IS_STREAM_CIPHER(alg) \</span></div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span> <span class="preprocessor"> (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_CIPHER_STREAM_FLAG)) == \</span></div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span> <span class="preprocessor"> (PSA_ALG_CATEGORY_CIPHER | PSA_ALG_CIPHER_STREAM_FLAG))</span></div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> </div><div class="line"><a name="l00848"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gab6a5284decb0e5e1b5b8740a41ef3c5e"> 848</a></span> <span class="preprocessor">#define PSA_ALG_ARC4 ((psa_algorithm_t)0x04800001)</span></div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span> </div><div class="line"><a name="l00857"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gad318309706a769cffdc64e4c7e06b2e9"> 857</a></span> <span class="preprocessor">#define PSA_ALG_CTR ((psa_algorithm_t)0x04c00001)</span></div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span> </div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> <span class="preprocessor">#define PSA_ALG_CFB ((psa_algorithm_t)0x04c00002)</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span> </div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span> <span class="preprocessor">#define PSA_ALG_OFB ((psa_algorithm_t)0x04c00003)</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span> </div><div class="line"><a name="l00869"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaa722c0e426a797fd6d99623f59748125"> 869</a></span> <span class="preprocessor">#define PSA_ALG_XTS ((psa_algorithm_t)0x044000ff)</span></div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span> </div><div class="line"><a name="l00878"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gacb332d72716958880ee7f97d8365ae66"> 878</a></span> <span class="preprocessor">#define PSA_ALG_CBC_NO_PADDING ((psa_algorithm_t)0x04600100)</span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> </div><div class="line"><a name="l00886"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaef50d2e9716eb6d476046608e4e0c78c"> 886</a></span> <span class="preprocessor">#define PSA_ALG_CBC_PKCS7 ((psa_algorithm_t)0x04600101)</span></div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> </div><div class="line"><a name="l00890"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gac2c0e7d21f1b2df5e76bcb4a8f84273c"> 890</a></span> <span class="preprocessor">#define PSA_ALG_CCM ((psa_algorithm_t)0x06001001)</span></div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span> </div><div class="line"><a name="l00894"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga0d7d02b15aaae490d38277d99f1c637c"> 894</a></span> <span class="preprocessor">#define PSA_ALG_GCM ((psa_algorithm_t)0x06001002)</span></div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span> </div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span> <span class="comment">/* In the encoding of a AEAD algorithm, the bits corresponding to</span></div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span> <span class="comment"> * PSA_ALG_AEAD_TAG_LENGTH_MASK encode the length of the AEAD tag.</span></div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span> <span class="comment"> * The constants for default lengths follow this encoding.</span></div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span> <span class="comment"> */</span></div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> <span class="preprocessor">#define PSA_ALG_AEAD_TAG_LENGTH_MASK ((psa_algorithm_t)0x00003f00)</span></div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span> <span class="preprocessor">#define PSA_AEAD_TAG_LENGTH_OFFSET 8</span></div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> </div><div class="line"><a name="l00921"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaa63c520b62ab001d54d28801742fc9db"> 921</a></span> <span class="preprocessor">#define PSA_ALG_AEAD_WITH_TAG_LENGTH(alg, tag_length) \</span></div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_AEAD_TAG_LENGTH_MASK) | \</span></div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span> <span class="preprocessor"> ((tag_length) << PSA_AEAD_TAG_LENGTH_OFFSET & \</span></div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span> <span class="preprocessor"> PSA_ALG_AEAD_TAG_LENGTH_MASK))</span></div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> </div><div class="line"><a name="l00934"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaddea507e062250cda8a29407a9480d2b"> 934</a></span> <span class="preprocessor">#define PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH(alg) \</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span> <span class="preprocessor"> ( \</span></div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span> <span class="preprocessor"> PSA__ALG_AEAD_WITH_DEFAULT_TAG_LENGTH__CASE(alg, PSA_ALG_CCM) \</span></div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span> <span class="preprocessor"> PSA__ALG_AEAD_WITH_DEFAULT_TAG_LENGTH__CASE(alg, PSA_ALG_GCM) \</span></div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span> <span class="preprocessor">#define PSA__ALG_AEAD_WITH_DEFAULT_TAG_LENGTH__CASE(alg, ref) \</span></div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> <span class="preprocessor"> PSA_ALG_AEAD_WITH_TAG_LENGTH(alg, 0) == \</span></div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span> <span class="preprocessor"> PSA_ALG_AEAD_WITH_TAG_LENGTH(ref, 0) ? \</span></div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span> <span class="preprocessor"> ref :</span></div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span> </div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span> <span class="preprocessor">#define PSA_ALG_RSA_PKCS1V15_SIGN_BASE ((psa_algorithm_t)0x10020000)</span></div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span> </div><div class="line"><a name="l00960"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga702ff75385a6ae7d4247033f479439af"> 960</a></span> <span class="preprocessor">#define PSA_ALG_RSA_PKCS1V15_SIGN(hash_alg) \</span></div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span> <span class="preprocessor"> (PSA_ALG_RSA_PKCS1V15_SIGN_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> </div><div class="line"><a name="l00968"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga4215e2a78dcf834e9a625927faa2a817"> 968</a></span> <span class="preprocessor">#define PSA_ALG_RSA_PKCS1V15_SIGN_RAW PSA_ALG_RSA_PKCS1V15_SIGN_BASE</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span> <span class="preprocessor">#define PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) \</span></div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PKCS1V15_SIGN_BASE)</span></div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span> </div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span> <span class="preprocessor">#define PSA_ALG_RSA_PSS_BASE ((psa_algorithm_t)0x10030000)</span></div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> </div><div class="line"><a name="l00991"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga62152bf4cb4bf6aace5e1be8f143564d"> 991</a></span> <span class="preprocessor">#define PSA_ALG_RSA_PSS(hash_alg) \</span></div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span> <span class="preprocessor"> (PSA_ALG_RSA_PSS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span> <span class="preprocessor">#define PSA_ALG_IS_RSA_PSS(alg) \</span></div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PSS_BASE)</span></div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span> </div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span> <span class="preprocessor">#define PSA_ALG_DSA_BASE ((psa_algorithm_t)0x10040000)</span></div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span> </div><div class="line"><a name="l01011"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga9a68efdddff5ae95f104a1416b12742e"> 1011</a></span> <span class="preprocessor">#define PSA_ALG_DSA(hash_alg) \</span></div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <span class="preprocessor"> (PSA_ALG_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> <span class="preprocessor">#define PSA_ALG_DETERMINISTIC_DSA_BASE ((psa_algorithm_t)0x10050000)</span></div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> <span class="preprocessor">#define PSA_ALG_DSA_DETERMINISTIC_FLAG ((psa_algorithm_t)0x00010000)</span></div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> </div><div class="line"><a name="l01029"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gab8eb98fb6d2e094e47f3b44dfe128f94"> 1029</a></span> <span class="preprocessor">#define PSA_ALG_DETERMINISTIC_DSA(hash_alg) \</span></div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> <span class="preprocessor"> (PSA_ALG_DETERMINISTIC_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> <span class="preprocessor">#define PSA_ALG_IS_DSA(alg) \</span></div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_DSA_DETERMINISTIC_FLAG) == \</span></div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> <span class="preprocessor"> PSA_ALG_DSA_BASE)</span></div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> <span class="preprocessor">#define PSA_ALG_DSA_IS_DETERMINISTIC(alg) \</span></div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> <span class="preprocessor"> (((alg) & PSA_ALG_DSA_DETERMINISTIC_FLAG) != 0)</span></div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> <span class="preprocessor">#define PSA_ALG_IS_DETERMINISTIC_DSA(alg) \</span></div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> <span class="preprocessor"> (PSA_ALG_IS_DSA(alg) && PSA_ALG_DSA_IS_DETERMINISTIC(alg))</span></div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> <span class="preprocessor">#define PSA_ALG_IS_RANDOMIZED_DSA(alg) \</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> <span class="preprocessor"> (PSA_ALG_IS_DSA(alg) && !PSA_ALG_DSA_IS_DETERMINISTIC(alg))</span></div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> </div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> <span class="preprocessor">#define PSA_ALG_ECDSA_BASE ((psa_algorithm_t)0x10060000)</span></div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> </div><div class="line"><a name="l01062"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga7e3ce9f514a227d5ba5d8318870452e3"> 1062</a></span> <span class="preprocessor">#define PSA_ALG_ECDSA(hash_alg) \</span></div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> <span class="preprocessor"> (PSA_ALG_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> </div><div class="line"><a name="l01073"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga51d6b6044a62e33cae0cf64bfc3b22a4"> 1073</a></span> <span class="preprocessor">#define PSA_ALG_ECDSA_ANY PSA_ALG_ECDSA_BASE</span></div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> <span class="preprocessor">#define PSA_ALG_DETERMINISTIC_ECDSA_BASE ((psa_algorithm_t)0x10070000)</span></div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> </div><div class="line"><a name="l01097"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga11da566bcd341661c8de921e2ca5ed03"> 1097</a></span> <span class="preprocessor">#define PSA_ALG_DETERMINISTIC_ECDSA(hash_alg) \</span></div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> <span class="preprocessor"> (PSA_ALG_DETERMINISTIC_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> <span class="preprocessor">#define PSA_ALG_IS_ECDSA(alg) \</span></div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_DSA_DETERMINISTIC_FLAG) == \</span></div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> <span class="preprocessor"> PSA_ALG_ECDSA_BASE)</span></div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span> <span class="preprocessor">#define PSA_ALG_ECDSA_IS_DETERMINISTIC(alg) \</span></div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> <span class="preprocessor"> (((alg) & PSA_ALG_DSA_DETERMINISTIC_FLAG) != 0)</span></div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> <span class="preprocessor">#define PSA_ALG_IS_DETERMINISTIC_ECDSA(alg) \</span></div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> <span class="preprocessor"> (PSA_ALG_IS_ECDSA(alg) && PSA_ALG_ECDSA_IS_DETERMINISTIC(alg))</span></div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span> <span class="preprocessor">#define PSA_ALG_IS_RANDOMIZED_ECDSA(alg) \</span></div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> <span class="preprocessor"> (PSA_ALG_IS_ECDSA(alg) && !PSA_ALG_ECDSA_IS_DETERMINISTIC(alg))</span></div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> </div><div class="line"><a name="l01122"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gad8a8ea0536975363b66410cdeafe38b6"> 1122</a></span> <span class="preprocessor">#define PSA_ALG_IS_HASH_AND_SIGN(alg) \</span></div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span> <span class="preprocessor"> (PSA_ALG_IS_RSA_PSS(alg) || PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) || \</span></div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span> <span class="preprocessor"> PSA_ALG_IS_DSA(alg) || PSA_ALG_IS_ECDSA(alg))</span></div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span> </div><div class="line"><a name="l01144"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga24cf6d7bcd2b9aeeeff86f07b6c674e3"> 1144</a></span> <span class="preprocessor">#define PSA_ALG_SIGN_GET_HASH(alg) \</span></div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span> <span class="preprocessor"> (PSA_ALG_IS_HASH_AND_SIGN(alg) ? \</span></div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span> <span class="preprocessor"> ((alg) & PSA_ALG_HASH_MASK) == 0 ? </span><span class="comment">/*"raw" algorithm*/</span><span class="preprocessor"> 0 : \</span></div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> <span class="preprocessor"> ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \</span></div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> </div><div class="line"><a name="l01152"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga4c540d3abe43fb9abcb94f2bc51acef9"> 1152</a></span> <span class="preprocessor">#define PSA_ALG_RSA_PKCS1V15_CRYPT ((psa_algorithm_t)0x12020000)</span></div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> </div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> <span class="preprocessor">#define PSA_ALG_RSA_OAEP_BASE ((psa_algorithm_t)0x12030000)</span></div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> </div><div class="line"><a name="l01169"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaa1235dc3fdd9839c6c1b1a9857344c76"> 1169</a></span> <span class="preprocessor">#define PSA_ALG_RSA_OAEP(hash_alg) \</span></div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span> <span class="preprocessor"> (PSA_ALG_RSA_OAEP_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span> <span class="preprocessor">#define PSA_ALG_IS_RSA_OAEP(alg) \</span></div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_OAEP_BASE)</span></div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span> <span class="preprocessor">#define PSA_ALG_RSA_OAEP_GET_HASH(alg) \</span></div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> <span class="preprocessor"> (PSA_ALG_IS_RSA_OAEP(alg) ? \</span></div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span> <span class="preprocessor"> ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \</span></div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span> <span class="preprocessor"> 0)</span></div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> </div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> <span class="preprocessor">#define PSA_ALG_HKDF_BASE ((psa_algorithm_t)0x20000100)</span></div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span> </div><div class="line"><a name="l01199"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga32a888fb360e6e25cab8a343772c4a82"> 1199</a></span> <span class="preprocessor">#define PSA_ALG_HKDF(hash_alg) \</span></div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> <span class="preprocessor"> (PSA_ALG_HKDF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span> </div><div class="line"><a name="l01212"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga1979d0a76fcee6164cf2e65960f38db2"> 1212</a></span> <span class="preprocessor">#define PSA_ALG_IS_HKDF(alg) \</span></div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_BASE)</span></div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span> <span class="preprocessor">#define PSA_ALG_HKDF_GET_HASH(hkdf_alg) \</span></div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span> <span class="preprocessor"> (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span> </div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> <span class="preprocessor">#define PSA_ALG_TLS12_PRF_BASE ((psa_algorithm_t)0x20000200)</span></div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span> </div><div class="line"><a name="l01240"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga6d5623c2ccda1d4a84e34351af8382d5"> 1240</a></span> <span class="preprocessor">#define PSA_ALG_TLS12_PRF(hash_alg) \</span></div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span> <span class="preprocessor"> (PSA_ALG_TLS12_PRF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span> </div><div class="line"><a name="l01251"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaa3c18890c50222e5219f40ade8927e66"> 1251</a></span> <span class="preprocessor">#define PSA_ALG_IS_TLS12_PRF(alg) \</span></div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PRF_BASE)</span></div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> <span class="preprocessor">#define PSA_ALG_TLS12_PRF_GET_HASH(hkdf_alg) \</span></div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> <span class="preprocessor"> (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> </div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span> <span class="preprocessor">#define PSA_ALG_TLS12_PSK_TO_MS_BASE ((psa_algorithm_t)0x20000300)</span></div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span> </div><div class="line"><a name="l01280"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga039ec797f15d1635d9b2e09a611f8a68"> 1280</a></span> <span class="preprocessor">#define PSA_ALG_TLS12_PSK_TO_MS(hash_alg) \</span></div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span> <span class="preprocessor"> (PSA_ALG_TLS12_PSK_TO_MS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span> </div><div class="line"><a name="l01291"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gab25ecc074a93fd11069bedfbba5a287b"> 1291</a></span> <span class="preprocessor">#define PSA_ALG_IS_TLS12_PSK_TO_MS(alg) \</span></div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span> <span class="preprocessor"> (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PSK_TO_MS_BASE)</span></div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span> <span class="preprocessor">#define PSA_ALG_TLS12_PSK_TO_MS_GET_HASH(hkdf_alg) \</span></div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span> <span class="preprocessor"> (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK))</span></div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span> </div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span> <span class="preprocessor">#define PSA_ALG_KEY_DERIVATION_MASK ((psa_algorithm_t)0x080fffff)</span></div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span> <span class="preprocessor">#define PSA_ALG_KEY_AGREEMENT_MASK ((psa_algorithm_t)0x10f00000)</span></div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span> </div><div class="line"><a name="l01313"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga78bb81cffb87a635c247725eeb2a2682"> 1313</a></span> <span class="preprocessor">#define PSA_ALG_KEY_AGREEMENT(ka_alg, kdf_alg) \</span></div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> <span class="preprocessor"> ((ka_alg) | (kdf_alg))</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> </div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span> <span class="preprocessor">#define PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) \</span></div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span> <span class="preprocessor"> (((alg) & PSA_ALG_KEY_DERIVATION_MASK) | PSA_ALG_CATEGORY_KEY_DERIVATION)</span></div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span> </div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span> <span class="preprocessor">#define PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) \</span></div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span> <span class="preprocessor"> (((alg) & PSA_ALG_KEY_AGREEMENT_MASK) | PSA_ALG_CATEGORY_KEY_AGREEMENT)</span></div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span> </div><div class="line"><a name="l01336"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaa40ab362ce141ce541d69b2eb1f41438"> 1336</a></span> <span class="preprocessor">#define PSA_ALG_IS_RAW_KEY_AGREEMENT(alg) \</span></div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span> <span class="preprocessor"> (PSA_ALG_IS_KEY_AGREEMENT(alg) && \</span></div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span> <span class="preprocessor"> PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) == PSA_ALG_CATEGORY_KEY_DERIVATION)</span></div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span> </div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span> <span class="preprocessor">#define PSA_ALG_IS_KEY_DERIVATION_OR_AGREEMENT(alg) \</span></div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span> <span class="preprocessor"> ((PSA_ALG_IS_KEY_DERIVATION(alg) || PSA_ALG_IS_KEY_AGREEMENT(alg)))</span></div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span> </div><div class="line"><a name="l01351"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga0ebbb6f93a05b6511e6f108ffd2d1eb4"> 1351</a></span> <span class="preprocessor">#define PSA_ALG_FFDH ((psa_algorithm_t)0x30100000)</span></div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span> </div><div class="line"><a name="l01364"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gaa3cf76164cd9375af4fb8a291078a19e"> 1364</a></span> <span class="preprocessor">#define PSA_ALG_IS_FFDH(alg) \</span></div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span> <span class="preprocessor"> (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_FFDH)</span></div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span> </div><div class="line"><a name="l01392"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gab2dbcf71b63785e7dd7b54a100edee43"> 1392</a></span> <span class="preprocessor">#define PSA_ALG_ECDH ((psa_algorithm_t)0x30200000)</span></div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span> </div><div class="line"><a name="l01407"></a><span class="lineno"><a class="line" href="group__crypto__types.html#ga9d9b6533d2a6bea7bac7ae01facb820d"> 1407</a></span> <span class="preprocessor">#define PSA_ALG_IS_ECDH(alg) \</span></div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span> <span class="preprocessor"> (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_ECDH)</span></div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> </div><div class="line"><a name="l01423"></a><span class="lineno"><a class="line" href="group__crypto__types.html#gacf83d7430e82b97cecb8b26ca6fa1426"> 1423</a></span> <span class="preprocessor">#define PSA_ALG_IS_WILDCARD(alg) \</span></div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span> <span class="preprocessor"> (PSA_ALG_IS_HASH_AND_SIGN(alg) ? \</span></div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span> <span class="preprocessor"> PSA_ALG_SIGN_GET_HASH(alg) == PSA_ALG_ANY_HASH : \</span></div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span> <span class="preprocessor"> (alg) == PSA_ALG_ANY_HASH)</span></div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span> </div><div class="line"><a name="l01437"></a><span class="lineno"><a class="line" href="group__key__lifetimes.html#ga8b438870ba69489b685730d346455108"> 1437</a></span> <span class="preprocessor">#define PSA_KEY_LIFETIME_VOLATILE ((psa_key_lifetime_t)0x00000000)</span></div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span> </div><div class="line"><a name="l01451"></a><span class="lineno"><a class="line" href="group__key__lifetimes.html#ga3713a01c5fcd5f7eae46ff22ceaf6d02"> 1451</a></span> <span class="preprocessor">#define PSA_KEY_LIFETIME_PERSISTENT ((psa_key_lifetime_t)0x00000001)</span></div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span> </div><div class="line"><a name="l01470"></a><span class="lineno"><a class="line" href="group__policy.html#ga7dddccdd1303176e87a4d20c87b589ed"> 1470</a></span> <span class="preprocessor">#define PSA_KEY_USAGE_EXPORT ((psa_key_usage_t)0x00000001)</span></div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span> </div><div class="line"><a name="l01481"></a><span class="lineno"><a class="line" href="group__policy.html#ga75153b296d045d529d97203a6a995dad"> 1481</a></span> <span class="preprocessor">#define PSA_KEY_USAGE_ENCRYPT ((psa_key_usage_t)0x00000100)</span></div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span> </div><div class="line"><a name="l01492"></a><span class="lineno"><a class="line" href="group__policy.html#gac3f2d2e5983db1edde9f142ca9bf8e6a"> 1492</a></span> <span class="preprocessor">#define PSA_KEY_USAGE_DECRYPT ((psa_key_usage_t)0x00000200)</span></div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span> </div><div class="line"><a name="l01502"></a><span class="lineno"><a class="line" href="group__policy.html#ga99b9f456cf59efc4b5579465407aef5a"> 1502</a></span> <span class="preprocessor">#define PSA_KEY_USAGE_SIGN ((psa_key_usage_t)0x00000400)</span></div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span> </div><div class="line"><a name="l01512"></a><span class="lineno"><a class="line" href="group__policy.html#ga39b54ffd5958b69634607924fa53cea6"> 1512</a></span> <span class="preprocessor">#define PSA_KEY_USAGE_VERIFY ((psa_key_usage_t)0x00000800)</span></div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span> </div><div class="line"><a name="l01516"></a><span class="lineno"><a class="line" href="group__policy.html#gaf19022acc5ef23cf12477f632b48a0b2"> 1516</a></span> <span class="preprocessor">#define PSA_KEY_USAGE_DERIVE ((psa_key_usage_t)0x00001000)</span></div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span> </div><div class="line"><a name="l01528"></a><span class="lineno"><a class="line" href="group__derivation.html#ga90a1995a41e26ed5ca30d2d4641d1168"> 1528</a></span> <span class="preprocessor">#define PSA_KDF_STEP_SECRET ((psa_key_derivation_step_t)0x0101)</span></div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span> </div><div class="line"><a name="l01534"></a><span class="lineno"><a class="line" href="group__derivation.html#ga9f4da10191bcb690b88756ed8470b03c"> 1534</a></span> <span class="preprocessor">#define PSA_KDF_STEP_LABEL ((psa_key_derivation_step_t)0x0201)</span></div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span> </div><div class="line"><a name="l01540"></a><span class="lineno"><a class="line" href="group__derivation.html#ga384777dac55791d8f3a1af72c847b327"> 1540</a></span> <span class="preprocessor">#define PSA_KDF_STEP_SALT ((psa_key_derivation_step_t)0x0202)</span></div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span> </div><div class="line"><a name="l01546"></a><span class="lineno"><a class="line" href="group__derivation.html#ga836afe760bbda3dafc6c29631560b1a0"> 1546</a></span> <span class="preprocessor">#define PSA_KDF_STEP_INFO ((psa_key_derivation_step_t)0x0203)</span></div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> </div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span> <span class="preprocessor">#endif </span><span class="comment">/* PSA_CRYPTO_VALUES_H */</span><span class="preprocessor"></span></div></div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by  <a href="http://www.doxygen.org/index.html">
diff --git a/docs/html/dir_7dae9cfde651cd3cb034485ce5e391b9.html b/docs/html/dir_7dae9cfde651cd3cb034485ce5e391b9.html
index 35adc5e..cef9bc1 100644
--- a/docs/html/dir_7dae9cfde651cd3cb034485ce5e391b9.html
+++ b/docs/html/dir_7dae9cfde651cd3cb034485ce5e391b9.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/files.html b/docs/html/files.html
index 63d5a9c..56787ed 100644
--- a/docs/html/files.html
+++ b/docs/html/files.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/functions.html b/docs/html/functions.html
index 527d5b8..d4f8c35 100644
--- a/docs/html/functions.html
+++ b/docs/html/functions.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html
index 0a3d6cd..8f82460 100644
--- a/docs/html/functions_vars.html
+++ b/docs/html/functions_vars.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/globals.html b/docs/html/globals.html
index df99e4a..a355aaf 100644
--- a/docs/html/globals.html
+++ b/docs/html/globals.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
@@ -123,7 +123,7 @@
: <a class="el" href="group__aead.html#ga759791bbe1763b377c3b5447641f1fc8">crypto.h</a>
</li>
<li>PSA_AEAD_FINISH_OUTPUT_SIZE
-: <a class="el" href="crypto__sizes_8h.html#af45d92c1d7ef43822b8df21ab1117d3f">crypto_sizes.h</a>
+: <a class="el" href="crypto__sizes_8h.html#ab097f6e054f1a73e975d597ade9029a6">crypto_sizes.h</a>
</li>
<li>psa_aead_generate_nonce()
: <a class="el" href="group__aead.html#ga3eadcf2a29f662129ea4fb3454969ba2">crypto.h</a>
@@ -170,9 +170,15 @@
<li>PSA_ALG_CBC_PKCS7
: <a class="el" href="group__crypto__types.html#gaef50d2e9716eb6d476046608e4e0c78c">crypto_values.h</a>
</li>
+<li>PSA_ALG_CCM
+: <a class="el" href="group__crypto__types.html#gac2c0e7d21f1b2df5e76bcb4a8f84273c">crypto_values.h</a>
+</li>
<li>PSA_ALG_CTR
: <a class="el" href="group__crypto__types.html#gad318309706a769cffdc64e4c7e06b2e9">crypto_values.h</a>
</li>
+<li>PSA_ALG_DETERMINISTIC_DSA
+: <a class="el" href="group__crypto__types.html#gab8eb98fb6d2e094e47f3b44dfe128f94">crypto_values.h</a>
+</li>
<li>PSA_ALG_DETERMINISTIC_ECDSA
: <a class="el" href="group__crypto__types.html#ga11da566bcd341661c8de921e2ca5ed03">crypto_values.h</a>
</li>
@@ -194,6 +200,9 @@
<li>PSA_ALG_FULL_LENGTH_MAC
: <a class="el" href="group__crypto__types.html#gaa05a8d99634f3350597ac9284fb70cb1">crypto_values.h</a>
</li>
+<li>PSA_ALG_GCM
+: <a class="el" href="group__crypto__types.html#ga0d7d02b15aaae490d38277d99f1c637c">crypto_values.h</a>
+</li>
<li>PSA_ALG_HKDF
: <a class="el" href="group__crypto__types.html#ga32a888fb360e6e25cab8a343772c4a82">crypto_values.h</a>
</li>
@@ -236,12 +245,12 @@
<li>PSA_ALG_IS_KEY_DERIVATION
: <a class="el" href="group__crypto__types.html#gaf8b90c648aa53dbd06c236695e300cd0">crypto_values.h</a>
</li>
-<li>PSA_ALG_IS_KEY_SELECTION
-: <a class="el" href="group__crypto__types.html#ga51b1834ee5e98c6a83c2cfc7699f9077">crypto_values.h</a>
-</li>
<li>PSA_ALG_IS_MAC
: <a class="el" href="group__crypto__types.html#gaca7aee4c9dde316b3b1a150a26eab776">crypto_values.h</a>
</li>
+<li>PSA_ALG_IS_RAW_KEY_AGREEMENT
+: <a class="el" href="group__crypto__types.html#gaa40ab362ce141ce541d69b2eb1f41438">crypto_values.h</a>
+</li>
<li>PSA_ALG_IS_SIGN
: <a class="el" href="group__crypto__types.html#ga6d490d0904e0698f6c1268a89d72ff31">crypto_values.h</a>
</li>
diff --git a/docs/html/globals_defs.html b/docs/html/globals_defs.html
index 734e48a..3f4c571 100644
--- a/docs/html/globals_defs.html
+++ b/docs/html/globals_defs.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
@@ -105,7 +105,7 @@
: <a class="el" href="crypto__sizes_8h.html#a85667d47a7aa6c7b99a80e5273671266">crypto_sizes.h</a>
</li>
<li>PSA_AEAD_FINISH_OUTPUT_SIZE
-: <a class="el" href="crypto__sizes_8h.html#af45d92c1d7ef43822b8df21ab1117d3f">crypto_sizes.h</a>
+: <a class="el" href="crypto__sizes_8h.html#ab097f6e054f1a73e975d597ade9029a6">crypto_sizes.h</a>
</li>
<li>PSA_AEAD_OPERATION_INIT
: <a class="el" href="group__aead.html#gaf52e036794c0dc6fbadd93a2b990f366">crypto.h</a>
@@ -131,9 +131,15 @@
<li>PSA_ALG_CBC_PKCS7
: <a class="el" href="group__crypto__types.html#gaef50d2e9716eb6d476046608e4e0c78c">crypto_values.h</a>
</li>
+<li>PSA_ALG_CCM
+: <a class="el" href="group__crypto__types.html#gac2c0e7d21f1b2df5e76bcb4a8f84273c">crypto_values.h</a>
+</li>
<li>PSA_ALG_CTR
: <a class="el" href="group__crypto__types.html#gad318309706a769cffdc64e4c7e06b2e9">crypto_values.h</a>
</li>
+<li>PSA_ALG_DETERMINISTIC_DSA
+: <a class="el" href="group__crypto__types.html#gab8eb98fb6d2e094e47f3b44dfe128f94">crypto_values.h</a>
+</li>
<li>PSA_ALG_DETERMINISTIC_ECDSA
: <a class="el" href="group__crypto__types.html#ga11da566bcd341661c8de921e2ca5ed03">crypto_values.h</a>
</li>
@@ -155,6 +161,9 @@
<li>PSA_ALG_FULL_LENGTH_MAC
: <a class="el" href="group__crypto__types.html#gaa05a8d99634f3350597ac9284fb70cb1">crypto_values.h</a>
</li>
+<li>PSA_ALG_GCM
+: <a class="el" href="group__crypto__types.html#ga0d7d02b15aaae490d38277d99f1c637c">crypto_values.h</a>
+</li>
<li>PSA_ALG_HKDF
: <a class="el" href="group__crypto__types.html#ga32a888fb360e6e25cab8a343772c4a82">crypto_values.h</a>
</li>
@@ -197,12 +206,12 @@
<li>PSA_ALG_IS_KEY_DERIVATION
: <a class="el" href="group__crypto__types.html#gaf8b90c648aa53dbd06c236695e300cd0">crypto_values.h</a>
</li>
-<li>PSA_ALG_IS_KEY_SELECTION
-: <a class="el" href="group__crypto__types.html#ga51b1834ee5e98c6a83c2cfc7699f9077">crypto_values.h</a>
-</li>
<li>PSA_ALG_IS_MAC
: <a class="el" href="group__crypto__types.html#gaca7aee4c9dde316b3b1a150a26eab776">crypto_values.h</a>
</li>
+<li>PSA_ALG_IS_RAW_KEY_AGREEMENT
+: <a class="el" href="group__crypto__types.html#gaa40ab362ce141ce541d69b2eb1f41438">crypto_values.h</a>
+</li>
<li>PSA_ALG_IS_SIGN
: <a class="el" href="group__crypto__types.html#ga6d490d0904e0698f6c1268a89d72ff31">crypto_values.h</a>
</li>
diff --git a/docs/html/globals_func.html b/docs/html/globals_func.html
index 881bba1..1413d25 100644
--- a/docs/html/globals_func.html
+++ b/docs/html/globals_func.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/globals_type.html b/docs/html/globals_type.html
index aa3e8ad..83d5c82 100644
--- a/docs/html/globals_type.html
+++ b/docs/html/globals_type.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/graph_legend.html b/docs/html/graph_legend.html
index 76ec0a9..8e69841 100644
--- a/docs/html/graph_legend.html
+++ b/docs/html/graph_legend.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/group__MAC.html b/docs/html/group__MAC.html
index dd76896..be57bf1 100644
--- a/docs/html/group__MAC.html
+++ b/docs/html/group__MAC.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
@@ -249,12 +249,12 @@
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">handle</td><td>Handle to the key to use for the operation. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">alg</td><td>The MAC algorithm to compute (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#gaca7aee4c9dde316b3b1a150a26eab776">PSA_ALG_IS_MAC(alg)</a> is true). </td></tr>
+ <tr><td class="paramdir"></td><td class="paramname">alg</td><td>The MAC algorithm to compute (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#gaca7aee4c9dde316b3b1a150a26eab776">PSA_ALG_IS_MAC</a>(<code>alg</code>) is true). </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>Buffer containing the input message. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">input_length</td><td>Size of the <code>input</code> buffer in bytes. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">mac</td><td>Buffer where the MAC value is to be written. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">mac_size</td><td>Size of the <code>mac</code> buffer in bytes. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">mac_length</td><td>On success, the number of bytes that make up the mac value. This is always <a class="el" href="crypto__sizes_8h.html#aef340331ce3cba2b57e1fc5624bf1f99">PSA_HASH_SIZE</a>(<code>alg</code>) where <code>alg</code> is the hash algorithm that is calculated.</td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">mac_length</td><td>On success, the number of bytes that make up the MAC value.</td></tr>
</table>
</dd>
</dl>
@@ -387,7 +387,7 @@
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">operation</td><td>The operation object to set up. It must have been initialized as per the documentation for <a class="el" href="group__MAC.html#ga78f0838b0c4e3db28b26355624d4bd37">psa_mac_operation_t</a> and not yet in use. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">handle</td><td>Handle to the key to use for the operation. It must remain valid until the operation terminates. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">alg</td><td>The MAC algorithm to compute (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#gaca7aee4c9dde316b3b1a150a26eab776">PSA_ALG_IS_MAC(alg)</a> is true).</td></tr>
+ <tr><td class="paramdir"></td><td class="paramname">alg</td><td>The MAC algorithm to compute (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#gaca7aee4c9dde316b3b1a150a26eab776">PSA_ALG_IS_MAC</a>(<code>alg</code>) is true).</td></tr>
</table>
</dd>
</dl>
@@ -515,7 +515,7 @@
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">handle</td><td>Handle to the key to use for the operation. </td></tr>
- <tr><td class="paramdir"></td><td class="paramname">alg</td><td>The MAC algorithm to compute (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#gaca7aee4c9dde316b3b1a150a26eab776">PSA_ALG_IS_MAC(alg)</a> is true). </td></tr>
+ <tr><td class="paramdir"></td><td class="paramname">alg</td><td>The MAC algorithm to compute (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#gaca7aee4c9dde316b3b1a150a26eab776">PSA_ALG_IS_MAC</a>(<code>alg</code>) is true). </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>Buffer containing the input message. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">input_length</td><td>Size of the <code>input</code> buffer in bytes. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">mac</td><td>Buffer containing the expected MAC value. </td></tr>
diff --git a/docs/html/group__aead.html b/docs/html/group__aead.html
index 5e3af48..9ff9a21 100644
--- a/docs/html/group__aead.html
+++ b/docs/html/group__aead.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
@@ -289,7 +289,7 @@
<tr><td class="paramdir"></td><td class="paramname">ciphertext_length</td><td>Size of <code>ciphertext</code> in bytes. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">plaintext</td><td>Output buffer for the decrypted data. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">plaintext_size</td><td>Size of the <code>plaintext</code> buffer in bytes. This must be at least <a class="el" href="crypto__sizes_8h.html#a1d057796166c16eb673ad1997e48a60b">PSA_AEAD_DECRYPT_OUTPUT_SIZE</a>(<code>alg</code>, <code>ciphertext_length</code>). </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">plaintext_length</td><td>On success, the size of the output in the <b>plaintext</b> buffer.</td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">plaintext_length</td><td>On success, the size of the output in the <code>plaintext</code> buffer.</td></tr>
</table>
</dd>
</dl>
@@ -475,7 +475,7 @@
<tr><td class="paramdir"></td><td class="paramname">plaintext_length</td><td>Size of <code>plaintext</code> in bytes. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">ciphertext</td><td>Output buffer for the authenticated and encrypted data. The additional data is not part of this output. For algorithms where the encrypted data and the authentication tag are defined as separate outputs, the authentication tag is appended to the encrypted data. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">ciphertext_size</td><td>Size of the <code>ciphertext</code> buffer in bytes. This must be at least <a class="el" href="crypto__sizes_8h.html#a85667d47a7aa6c7b99a80e5273671266">PSA_AEAD_ENCRYPT_OUTPUT_SIZE</a>(<code>alg</code>, <code>plaintext_length</code>). </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">ciphertext_length</td><td>On success, the size of the output in the <b>ciphertext</b> buffer.</td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">ciphertext_length</td><td>On success, the size of the output in the <code>ciphertext</code> buffer.</td></tr>
</table>
</dd>
</dl>
@@ -756,7 +756,7 @@
<p>The application must call this function before calling <a class="el" href="group__aead.html#ga6d0eed03f832e5c9c91cb8adf2882569">psa_aead_update_ad()</a> or <a class="el" href="group__aead.html#ga3b105de2088cef7c3d9e2fd8048c841c">psa_aead_update()</a> if the algorithm for the operation requires it. If the algorithm does not require it, calling this function is optional, but if this function is called then the implementation must enforce the lengths.</p>
<p>You may call this function before or after setting the nonce with <a class="el" href="group__aead.html#ga40641d0721ca7fe01bbcd9ef635fbc46">psa_aead_set_nonce()</a> or <a class="el" href="group__aead.html#ga3eadcf2a29f662129ea4fb3454969ba2">psa_aead_generate_nonce()</a>.</p>
<ul>
-<li>For #PSA_ALG_CCM, calling this function is required.</li>
+<li>For <a class="el" href="group__crypto__types.html#gac2c0e7d21f1b2df5e76bcb4a8f84273c">PSA_ALG_CCM</a>, calling this function is required.</li>
<li>For the other AEAD algorithms defined in this specification, calling this function is not required.</li>
<li>For vendor-defined algorithm, refer to the vendor documentation.</li>
</ul>
diff --git a/docs/html/group__asymmetric.html b/docs/html/group__asymmetric.html
index 623eca0..be442fb 100644
--- a/docs/html/group__asymmetric.html
+++ b/docs/html/group__asymmetric.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/group__cipher.html b/docs/html/group__cipher.html
index 0853f6d..67bb06a 100644
--- a/docs/html/group__cipher.html
+++ b/docs/html/group__cipher.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/group__crypto__types.html b/docs/html/group__crypto__types.html
index 804c4ec..b4ff343 100644
--- a/docs/html/group__crypto__types.html
+++ b/docs/html/group__crypto__types.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
@@ -312,15 +312,10 @@
<tr class="separator:ga6d490d0904e0698f6c1268a89d72ff31"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga41d2ee937d54efd76bd54a97b2ebc08a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#ga41d2ee937d54efd76bd54a97b2ebc08a">PSA_ALG_IS_ASYMMETRIC_ENCRYPTION</a>(alg)   (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION)</td></tr>
<tr class="separator:ga41d2ee937d54efd76bd54a97b2ebc08a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gab19961aac97f3856f83057b04ba7c5f5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab19961aac97f3856f83057b04ba7c5f5"></a>
-#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_KEY_SELECTION_FLAG</b>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x01000000)</td></tr>
-<tr class="separator:gab19961aac97f3856f83057b04ba7c5f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga59753742cb06553bd22751bbef472b6f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#ga59753742cb06553bd22751bbef472b6f">PSA_ALG_IS_KEY_AGREEMENT</a>(alg)</td></tr>
+<tr class="memitem:ga59753742cb06553bd22751bbef472b6f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#ga59753742cb06553bd22751bbef472b6f">PSA_ALG_IS_KEY_AGREEMENT</a>(alg)   (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_AGREEMENT)</td></tr>
<tr class="separator:ga59753742cb06553bd22751bbef472b6f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaf8b90c648aa53dbd06c236695e300cd0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#gaf8b90c648aa53dbd06c236695e300cd0">PSA_ALG_IS_KEY_DERIVATION</a>(alg)   (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_DERIVATION)</td></tr>
<tr class="separator:gaf8b90c648aa53dbd06c236695e300cd0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga51b1834ee5e98c6a83c2cfc7699f9077"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#ga51b1834ee5e98c6a83c2cfc7699f9077">PSA_ALG_IS_KEY_SELECTION</a>(alg)   (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_SELECTION)</td></tr>
-<tr class="separator:ga51b1834ee5e98c6a83c2cfc7699f9077"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac41a7077aef55bb20c629c8949d43c57"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac41a7077aef55bb20c629c8949d43c57"></a>
#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_HASH_MASK</b>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x000000ff)</td></tr>
<tr class="separator:gac41a7077aef55bb20c629c8949d43c57"><td class="memSeparator" colspan="2"> </td></tr>
@@ -424,11 +419,9 @@
<tr class="separator:gacb332d72716958880ee7f97d8365ae66"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaef50d2e9716eb6d476046608e4e0c78c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#gaef50d2e9716eb6d476046608e4e0c78c">PSA_ALG_CBC_PKCS7</a>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x04600101)</td></tr>
<tr class="separator:gaef50d2e9716eb6d476046608e4e0c78c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gac2c0e7d21f1b2df5e76bcb4a8f84273c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac2c0e7d21f1b2df5e76bcb4a8f84273c"></a>
-#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_CCM</b>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x06001001)</td></tr>
+<tr class="memitem:gac2c0e7d21f1b2df5e76bcb4a8f84273c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#gac2c0e7d21f1b2df5e76bcb4a8f84273c">PSA_ALG_CCM</a>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x06001001)</td></tr>
<tr class="separator:gac2c0e7d21f1b2df5e76bcb4a8f84273c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga0d7d02b15aaae490d38277d99f1c637c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0d7d02b15aaae490d38277d99f1c637c"></a>
-#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_GCM</b>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x06001002)</td></tr>
+<tr class="memitem:ga0d7d02b15aaae490d38277d99f1c637c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#ga0d7d02b15aaae490d38277d99f1c637c">PSA_ALG_GCM</a>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x06001002)</td></tr>
<tr class="separator:ga0d7d02b15aaae490d38277d99f1c637c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga575d9082463a06a86c2a22dd63c2e772"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga575d9082463a06a86c2a22dd63c2e772"></a>
#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_AEAD_TAG_LENGTH_MASK</b>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x00003f00)</td></tr>
@@ -471,8 +464,7 @@
<tr class="memitem:ga1d2a96f788cce4f8fc156d13342e70de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga1d2a96f788cce4f8fc156d13342e70de"></a>
#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_DSA_DETERMINISTIC_FLAG</b>   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x00010000)</td></tr>
<tr class="separator:ga1d2a96f788cce4f8fc156d13342e70de"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gab8eb98fb6d2e094e47f3b44dfe128f94"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab8eb98fb6d2e094e47f3b44dfe128f94"></a>
-#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_DETERMINISTIC_DSA</b>(hash_alg)   (PSA_ALG_DETERMINISTIC_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</td></tr>
+<tr class="memitem:gab8eb98fb6d2e094e47f3b44dfe128f94"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#gab8eb98fb6d2e094e47f3b44dfe128f94">PSA_ALG_DETERMINISTIC_DSA</a>(hash_alg)   (PSA_ALG_DETERMINISTIC_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</td></tr>
<tr class="separator:gab8eb98fb6d2e094e47f3b44dfe128f94"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gacfc3cd50ef0c4bf694cf936079bcbaee"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_IS_DSA</b>(alg)</td></tr>
<tr class="separator:gacfc3cd50ef0c4bf694cf936079bcbaee"><td class="memSeparator" colspan="2"> </td></tr>
@@ -568,8 +560,7 @@
<tr class="memitem:gaf837c55ba698b488b6e63300e3470abf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf837c55ba698b488b6e63300e3470abf"></a>
#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_KEY_AGREEMENT_GET_BASE</b>(alg)   (((alg) & PSA_ALG_KEY_AGREEMENT_MASK) | PSA_ALG_CATEGORY_KEY_AGREEMENT)</td></tr>
<tr class="separator:gaf837c55ba698b488b6e63300e3470abf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaa40ab362ce141ce541d69b2eb1f41438"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa40ab362ce141ce541d69b2eb1f41438"></a>
-#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_IS_RAW_KEY_AGREEMENT</b>(alg)   (PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) == PSA_ALG_CATEGORY_KEY_DERIVATION)</td></tr>
+<tr class="memitem:gaa40ab362ce141ce541d69b2eb1f41438"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#gaa40ab362ce141ce541d69b2eb1f41438">PSA_ALG_IS_RAW_KEY_AGREEMENT</a>(alg)</td></tr>
<tr class="separator:gaa40ab362ce141ce541d69b2eb1f41438"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga14529588c008091de0ad2716170dbd48"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga14529588c008091de0ad2716170dbd48"></a>
#define </td><td class="memItemRight" valign="bottom"><b>PSA_ALG_IS_KEY_DERIVATION_OR_AGREEMENT</b>(alg)   ((<a class="el" href="group__crypto__types.html#gaf8b90c648aa53dbd06c236695e300cd0">PSA_ALG_IS_KEY_DERIVATION</a>(alg) || <a class="el" href="group__crypto__types.html#ga59753742cb06553bd22751bbef472b6f">PSA_ALG_IS_KEY_AGREEMENT</a>(alg)))</td></tr>
@@ -584,8 +575,6 @@
<tr class="separator:ga9d9b6533d2a6bea7bac7ae01facb820d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gacf83d7430e82b97cecb8b26ca6fa1426"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#gacf83d7430e82b97cecb8b26ca6fa1426">PSA_ALG_IS_WILDCARD</a>(alg)</td></tr>
<tr class="separator:gacf83d7430e82b97cecb8b26ca6fa1426"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gacf83d7430e82b97cecb8b26ca6fa1426"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto__types.html#gacf83d7430e82b97cecb8b26ca6fa1426">PSA_ALG_IS_WILDCARD</a>(alg)</td></tr>
-<tr class="separator:gacf83d7430e82b97cecb8b26ca6fa1426"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
@@ -624,7 +613,7 @@
</tr>
</table>
</div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line"><a class="code" href="group__crypto__types.html#gaa63c520b62ab001d54d28801742fc9db">PSA_ALG_AEAD_WITH_TAG_LENGTH</a>(alg, 0) == <a class="code" href="group__crypto__types.html#gaa63c520b62ab001d54d28801742fc9db">\</a></div><div class="line"><a class="code" href="group__crypto__types.html#gaa63c520b62ab001d54d28801742fc9db"> PSA_ALG_AEAD_WITH_TAG_LENGTH</a>(ref, 0) ? \</div><div class="line"> ref :</div><div class="ttc" id="group__crypto__types_html_gaa63c520b62ab001d54d28801742fc9db"><div class="ttname"><a href="group__crypto__types.html#gaa63c520b62ab001d54d28801742fc9db">PSA_ALG_AEAD_WITH_TAG_LENGTH</a></div><div class="ttdeci">#define PSA_ALG_AEAD_WITH_TAG_LENGTH(alg, tag_length)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:929</div></div>
+<b>Value:</b><div class="fragment"><div class="line"><a class="code" href="group__crypto__types.html#gaa63c520b62ab001d54d28801742fc9db">PSA_ALG_AEAD_WITH_TAG_LENGTH</a>(alg, 0) == <a class="code" href="group__crypto__types.html#gaa63c520b62ab001d54d28801742fc9db">\</a></div><div class="line"><a class="code" href="group__crypto__types.html#gaa63c520b62ab001d54d28801742fc9db"> PSA_ALG_AEAD_WITH_TAG_LENGTH</a>(ref, 0) ? \</div><div class="line"> ref :</div><div class="ttc" id="group__crypto__types_html_gaa63c520b62ab001d54d28801742fc9db"><div class="ttname"><a href="group__crypto__types.html#gaa63c520b62ab001d54d28801742fc9db">PSA_ALG_AEAD_WITH_TAG_LENGTH</a></div><div class="ttdeci">#define PSA_ALG_AEAD_WITH_TAG_LENGTH(alg, tag_length)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:921</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -641,7 +630,9 @@
</tr>
</table>
</div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line">( \</div><div class="line"> PSA__ALG_AEAD_WITH_DEFAULT_TAG_LENGTH__CASE(alg, PSA_ALG_CCM) \</div><div class="line"> PSA__ALG_AEAD_WITH_DEFAULT_TAG_LENGTH__CASE(alg, PSA_ALG_GCM) \</div><div class="line"> 0)</div></div><!-- fragment --><p>Calculate the corresponding AEAD algorithm with the default tag length.</p>
+<b>Value:</b><div class="fragment"><div class="line">( \</div><div class="line"> PSA__ALG_AEAD_WITH_DEFAULT_TAG_LENGTH__CASE(alg, <a class="code" href="group__crypto__types.html#gac2c0e7d21f1b2df5e76bcb4a8f84273c">PSA_ALG_CCM</a>) \</div><div class="line"> PSA__ALG_AEAD_WITH_DEFAULT_TAG_LENGTH__CASE(alg, <a class="code" href="group__crypto__types.html#ga0d7d02b15aaae490d38277d99f1c637c">PSA_ALG_GCM</a>) \</div><div class="line"> 0)</div><div class="ttc" id="group__crypto__types_html_ga0d7d02b15aaae490d38277d99f1c637c"><div class="ttname"><a href="group__crypto__types.html#ga0d7d02b15aaae490d38277d99f1c637c">PSA_ALG_GCM</a></div><div class="ttdeci">#define PSA_ALG_GCM</div><div class="ttdef"><b>Definition:</b> crypto_values.h:894</div></div>
+<div class="ttc" id="group__crypto__types_html_gac2c0e7d21f1b2df5e76bcb4a8f84273c"><div class="ttname"><a href="group__crypto__types.html#gac2c0e7d21f1b2df5e76bcb4a8f84273c">PSA_ALG_CCM</a></div><div class="ttdeci">#define PSA_ALG_CCM</div><div class="ttdef"><b>Definition:</b> crypto_values.h:890</div></div>
+</div><!-- fragment --><p>Calculate the corresponding AEAD algorithm with the default tag length.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">alg</td><td>An AEAD algorithm (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#ga1d44829d60065eaa4ac9a703e7d6abc8">PSA_ALG_IS_AEAD</a>(<code>alg</code>) is true).</td></tr>
@@ -702,7 +693,7 @@
<p>Allow any hash algorithm.</p>
<p>This value may only be used to form the algorithm usage field of a policy for a signature algorithm that is parametrized by a hash. That is, suppose that <code>PSA_xxx_SIGNATURE</code> is one of the following macros:</p><ul>
<li><a class="el" href="group__crypto__types.html#ga702ff75385a6ae7d4247033f479439af">PSA_ALG_RSA_PKCS1V15_SIGN</a>, <a class="el" href="group__crypto__types.html#ga62152bf4cb4bf6aace5e1be8f143564d">PSA_ALG_RSA_PSS</a>,</li>
-<li><a class="el" href="group__crypto__types.html#ga9a68efdddff5ae95f104a1416b12742e">PSA_ALG_DSA</a>, #PSA_ALG_DETERMINISTIC_DSA,</li>
+<li><a class="el" href="group__crypto__types.html#ga9a68efdddff5ae95f104a1416b12742e">PSA_ALG_DSA</a>, <a class="el" href="group__crypto__types.html#gab8eb98fb6d2e094e47f3b44dfe128f94">PSA_ALG_DETERMINISTIC_DSA</a>,</li>
<li><a class="el" href="group__crypto__types.html#ga7e3ce9f514a227d5ba5d8318870452e3">PSA_ALG_ECDSA</a>, <a class="el" href="group__crypto__types.html#ga11da566bcd341661c8de921e2ca5ed03">PSA_ALG_DETERMINISTIC_ECDSA</a>. Then you may create a key as follows:</li>
<li>Set the key usage field using <a class="el" href="group__crypto__types.html#gaa1288ea8bd397a8a3f5e19e94110f2e4">PSA_ALG_ANY_HASH</a>, for example: <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> psa_key_policy_set_usage(&policy,</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  PSA_KEY_USAGE_SIGN, //or PSA_KEY_USAGE_VERIFY</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>  PSA_xxx_SIGNATURE(PSA_ALG_ANY_HASH));</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> psa_set_key_policy(handle, &policy);</div></div><!-- fragment --></li>
<li>Import or generate key material.</li>
@@ -756,6 +747,19 @@
</div>
</div>
+<a class="anchor" id="gac2c0e7d21f1b2df5e76bcb4a8f84273c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define PSA_ALG_CCM   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x06001001)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The CCM authenticated encryption algorithm. </p>
+
+</div>
+</div>
<a class="anchor" id="gad318309706a769cffdc64e4c7e06b2e9"></a>
<div class="memitem">
<div class="memproto">
@@ -770,6 +774,33 @@
</div>
</div>
+<a class="anchor" id="gab8eb98fb6d2e094e47f3b44dfe128f94"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define PSA_ALG_DETERMINISTIC_DSA</td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname">hash_alg</td><td>)</td>
+ <td>   (PSA_ALG_DETERMINISTIC_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Deterministic DSA signature with hashing.</p>
+<p>This is the deterministic variant defined by RFC 6979 of the signature scheme defined by FIPS 186-4.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">hash_alg</td><td>A hash algorithm (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#gac9280662bb482590b4b33d1dcd32930f">PSA_ALG_IS_HASH</a>(<code>hash_alg</code>) is true). This includes <a class="el" href="group__crypto__types.html#gaa1288ea8bd397a8a3f5e19e94110f2e4">PSA_ALG_ANY_HASH</a> when specifying the algorithm in a usage policy.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The corresponding DSA signature algorithm. </dd>
+<dd>
+Unspecified if <code>alg</code> is not a supported hash algorithm. </dd></dl>
+
+</div>
+</div>
<a class="anchor" id="ga11da566bcd341661c8de921e2ca5ed03"></a>
<div class="memitem">
<div class="memproto">
@@ -927,6 +958,19 @@
</div>
</div>
+<a class="anchor" id="ga0d7d02b15aaae490d38277d99f1c637c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define PSA_ALG_GCM   ((<a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69">psa_algorithm_t</a>)0x06001002)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The GCM authenticated encryption algorithm. </p>
+
+</div>
+</div>
<a class="anchor" id="ga32a888fb360e6e25cab8a343772c4a82"></a>
<div class="memitem">
<div class="memproto">
@@ -1272,11 +1316,11 @@
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">alg</td><td>)</td>
- <td></td>
+ <td>   (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_AGREEMENT)</td>
</tr>
</table>
</div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line">(((alg) & PSA_ALG_CATEGORY_MASK & ~PSA_ALG_KEY_SELECTION_FLAG) == \</div><div class="line"> PSA_ALG_CATEGORY_KEY_AGREEMENT)</div></div><!-- fragment --><p>Whether the specified algorithm is a key agreement algorithm.</p>
+<p>Whether the specified algorithm is a key agreement algorithm.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">alg</td><td>An algorithm identifier (value of type <a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69" title="Encoding of a cryptographic algorithm. ">psa_algorithm_t</a>).</td></tr>
@@ -1311,30 +1355,6 @@
</div>
</div>
-<a class="anchor" id="ga51b1834ee5e98c6a83c2cfc7699f9077"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define PSA_ALG_IS_KEY_SELECTION</td>
- <td>(</td>
- <td class="paramtype"> </td>
- <td class="paramname">alg</td><td>)</td>
- <td>   (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_SELECTION)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>Whether the specified algorithm is a key selection algorithm.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">alg</td><td>An algorithm identifier (value of type <a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69" title="Encoding of a cryptographic algorithm. ">psa_algorithm_t</a>).</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>1 if <code>alg</code> is a key selection algorithm, 0 otherwise. This macro may return either 0 or 1 if <code>alg</code> is not a supported algorithm identifier. </dd></dl>
-
-</div>
-</div>
<a class="anchor" id="gaca7aee4c9dde316b3b1a150a26eab776"></a>
<div class="memitem">
<div class="memproto">
@@ -1359,6 +1379,32 @@
</div>
</div>
+<a class="anchor" id="gaa40ab362ce141ce541d69b2eb1f41438"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define PSA_ALG_IS_RAW_KEY_AGREEMENT</td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname">alg</td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="group__crypto__types.html#ga59753742cb06553bd22751bbef472b6f">PSA_ALG_IS_KEY_AGREEMENT</a>(alg) && \</div><div class="line"> PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) == PSA_ALG_CATEGORY_KEY_DERIVATION)</div><div class="ttc" id="group__crypto__types_html_ga59753742cb06553bd22751bbef472b6f"><div class="ttname"><a href="group__crypto__types.html#ga59753742cb06553bd22751bbef472b6f">PSA_ALG_IS_KEY_AGREEMENT</a></div><div class="ttdeci">#define PSA_ALG_IS_KEY_AGREEMENT(alg)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:624</div></div>
+</div><!-- fragment --><p>Whether the specified algorithm is a raw key agreement algorithm.</p>
+<p>A raw key agreement algorithm is one that does not specify a key derivation function. Usually, raw key agreement algorithms are constructed directly with a <code>PSA_ALG_xxx</code> macro while non-raw key agreement algorithms are constructed with <a class="el" href="group__crypto__types.html#ga78bb81cffb87a635c247725eeb2a2682">PSA_ALG_KEY_AGREEMENT()</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">alg</td><td>An algorithm identifier (value of type <a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69" title="Encoding of a cryptographic algorithm. ">psa_algorithm_t</a>).</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>1 if <code>alg</code> is a raw key agreement algorithm, 0 otherwise. This macro may return either 0 or 1 if <code>alg</code> is not a supported algorithm identifier. </dd></dl>
+
+</div>
+</div>
<a class="anchor" id="ga6d490d0904e0698f6c1268a89d72ff31"></a>
<div class="memitem">
<div class="memproto">
@@ -1469,41 +1515,9 @@
</tr>
</table>
</div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="group__crypto__types.html#gad8a8ea0536975363b66410cdeafe38b6">PSA_ALG_IS_HASH_AND_SIGN</a>(alg) ? <a class="code" href="group__crypto__types.html#ga24cf6d7bcd2b9aeeeff86f07b6c674e3">\</a></div><div class="line"><a class="code" href="group__crypto__types.html#ga24cf6d7bcd2b9aeeeff86f07b6c674e3"> PSA_ALG_SIGN_GET_HASH</a>(alg) == <a class="code" href="group__crypto__types.html#gaa1288ea8bd397a8a3f5e19e94110f2e4">PSA_ALG_ANY_HASH</a> : \</div><div class="line"> (alg) == <a class="code" href="group__crypto__types.html#gaa1288ea8bd397a8a3f5e19e94110f2e4">PSA_ALG_ANY_HASH</a>)</div><div class="ttc" id="group__crypto__types_html_gaa1288ea8bd397a8a3f5e19e94110f2e4"><div class="ttname"><a href="group__crypto__types.html#gaa1288ea8bd397a8a3f5e19e94110f2e4">PSA_ALG_ANY_HASH</a></div><div class="ttdeci">#define PSA_ALG_ANY_HASH</div><div class="ttdef"><b>Definition:</b> crypto_values.h:712</div></div>
-<div class="ttc" id="group__crypto__types_html_ga24cf6d7bcd2b9aeeeff86f07b6c674e3"><div class="ttname"><a href="group__crypto__types.html#ga24cf6d7bcd2b9aeeeff86f07b6c674e3">PSA_ALG_SIGN_GET_HASH</a></div><div class="ttdeci">#define PSA_ALG_SIGN_GET_HASH(alg)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:1138</div></div>
-<div class="ttc" id="group__crypto__types_html_gad8a8ea0536975363b66410cdeafe38b6"><div class="ttname"><a href="group__crypto__types.html#gad8a8ea0536975363b66410cdeafe38b6">PSA_ALG_IS_HASH_AND_SIGN</a></div><div class="ttdeci">#define PSA_ALG_IS_HASH_AND_SIGN(alg)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:1116</div></div>
-</div><!-- fragment --><p>Whether the specified algorithm encoding is a wildcard.</p>
-<p>Wildcard values may only be used to set the usage algorithm field in a policy, not to perform an operation.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">alg</td><td>An algorithm identifier (value of type <a class="el" href="group__crypto__types.html#gac2e4d47f1300d73c2f829a6d99252d69" title="Encoding of a cryptographic algorithm. ">psa_algorithm_t</a>).</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>1 if <code>alg</code> is a wildcard algorithm encoding. </dd>
-<dd>
-0 if <code>alg</code> is a non-wildcard algorithm encoding (suitable for an operation). </dd>
-<dd>
-This macro may return either 0 or 1 if <code>alg</code> is not a supported algorithm identifier. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="gacf83d7430e82b97cecb8b26ca6fa1426"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define PSA_ALG_IS_WILDCARD</td>
- <td>(</td>
- <td class="paramtype"> </td>
- <td class="paramname">alg</td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="group__crypto__types.html#gad8a8ea0536975363b66410cdeafe38b6">PSA_ALG_IS_HASH_AND_SIGN</a>(alg) ? <a class="code" href="group__crypto__types.html#ga24cf6d7bcd2b9aeeeff86f07b6c674e3">\</a></div><div class="line"><a class="code" href="group__crypto__types.html#ga24cf6d7bcd2b9aeeeff86f07b6c674e3"> PSA_ALG_SIGN_GET_HASH</a>(alg) == <a class="code" href="group__crypto__types.html#gaa1288ea8bd397a8a3f5e19e94110f2e4">PSA_ALG_ANY_HASH</a> : \</div><div class="line"> (alg) == <a class="code" href="group__crypto__types.html#gaa1288ea8bd397a8a3f5e19e94110f2e4">PSA_ALG_ANY_HASH</a>)</div><div class="ttc" id="group__crypto__types_html_gaa1288ea8bd397a8a3f5e19e94110f2e4"><div class="ttname"><a href="group__crypto__types.html#gaa1288ea8bd397a8a3f5e19e94110f2e4">PSA_ALG_ANY_HASH</a></div><div class="ttdeci">#define PSA_ALG_ANY_HASH</div><div class="ttdef"><b>Definition:</b> crypto_values.h:712</div></div>
-<div class="ttc" id="group__crypto__types_html_ga24cf6d7bcd2b9aeeeff86f07b6c674e3"><div class="ttname"><a href="group__crypto__types.html#ga24cf6d7bcd2b9aeeeff86f07b6c674e3">PSA_ALG_SIGN_GET_HASH</a></div><div class="ttdeci">#define PSA_ALG_SIGN_GET_HASH(alg)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:1138</div></div>
-<div class="ttc" id="group__crypto__types_html_gad8a8ea0536975363b66410cdeafe38b6"><div class="ttname"><a href="group__crypto__types.html#gad8a8ea0536975363b66410cdeafe38b6">PSA_ALG_IS_HASH_AND_SIGN</a></div><div class="ttdeci">#define PSA_ALG_IS_HASH_AND_SIGN(alg)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:1116</div></div>
+<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="group__crypto__types.html#gad8a8ea0536975363b66410cdeafe38b6">PSA_ALG_IS_HASH_AND_SIGN</a>(alg) ? <a class="code" href="group__crypto__types.html#ga24cf6d7bcd2b9aeeeff86f07b6c674e3">\</a></div><div class="line"><a class="code" href="group__crypto__types.html#ga24cf6d7bcd2b9aeeeff86f07b6c674e3"> PSA_ALG_SIGN_GET_HASH</a>(alg) == <a class="code" href="group__crypto__types.html#gaa1288ea8bd397a8a3f5e19e94110f2e4">PSA_ALG_ANY_HASH</a> : \</div><div class="line"> (alg) == <a class="code" href="group__crypto__types.html#gaa1288ea8bd397a8a3f5e19e94110f2e4">PSA_ALG_ANY_HASH</a>)</div><div class="ttc" id="group__crypto__types_html_gaa1288ea8bd397a8a3f5e19e94110f2e4"><div class="ttname"><a href="group__crypto__types.html#gaa1288ea8bd397a8a3f5e19e94110f2e4">PSA_ALG_ANY_HASH</a></div><div class="ttdeci">#define PSA_ALG_ANY_HASH</div><div class="ttdef"><b>Definition:</b> crypto_values.h:699</div></div>
+<div class="ttc" id="group__crypto__types_html_ga24cf6d7bcd2b9aeeeff86f07b6c674e3"><div class="ttname"><a href="group__crypto__types.html#ga24cf6d7bcd2b9aeeeff86f07b6c674e3">PSA_ALG_SIGN_GET_HASH</a></div><div class="ttdeci">#define PSA_ALG_SIGN_GET_HASH(alg)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:1144</div></div>
+<div class="ttc" id="group__crypto__types_html_gad8a8ea0536975363b66410cdeafe38b6"><div class="ttname"><a href="group__crypto__types.html#gad8a8ea0536975363b66410cdeafe38b6">PSA_ALG_IS_HASH_AND_SIGN</a></div><div class="ttdeci">#define PSA_ALG_IS_HASH_AND_SIGN(alg)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:1122</div></div>
</div><!-- fragment --><p>Whether the specified algorithm encoding is a wildcard.</p>
<p>Wildcard values may only be used to set the usage algorithm field in a policy, not to perform an operation.</p>
<dl class="params"><dt>Parameters</dt><dd>
@@ -1824,7 +1838,7 @@
</tr>
</table>
</div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="group__crypto__types.html#gad8a8ea0536975363b66410cdeafe38b6">PSA_ALG_IS_HASH_AND_SIGN</a>(alg) ? \</div><div class="line"> ((alg) & PSA_ALG_HASH_MASK) == 0 ? <span class="comment">/*"raw" algorithm*/</span> 0 : \</div><div class="line"> ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \</div><div class="line"> 0)</div><div class="ttc" id="group__crypto__types_html_gad8a8ea0536975363b66410cdeafe38b6"><div class="ttname"><a href="group__crypto__types.html#gad8a8ea0536975363b66410cdeafe38b6">PSA_ALG_IS_HASH_AND_SIGN</a></div><div class="ttdeci">#define PSA_ALG_IS_HASH_AND_SIGN(alg)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:1116</div></div>
+<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="group__crypto__types.html#gad8a8ea0536975363b66410cdeafe38b6">PSA_ALG_IS_HASH_AND_SIGN</a>(alg) ? \</div><div class="line"> ((alg) & PSA_ALG_HASH_MASK) == 0 ? <span class="comment">/*"raw" algorithm*/</span> 0 : \</div><div class="line"> ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \</div><div class="line"> 0)</div><div class="ttc" id="group__crypto__types_html_gad8a8ea0536975363b66410cdeafe38b6"><div class="ttname"><a href="group__crypto__types.html#gad8a8ea0536975363b66410cdeafe38b6">PSA_ALG_IS_HASH_AND_SIGN</a></div><div class="ttdeci">#define PSA_ALG_IS_HASH_AND_SIGN(alg)</div><div class="ttdef"><b>Definition:</b> crypto_values.h:1122</div></div>
</div><!-- fragment --><p>Get the hash used by a hash-and-sign signature algorithm.</p>
<p>A hash-and-sign algorithm is a signature algorithm which is composed of two phases: first a hashing phase which does not use the key and produces a hash of the input message, then a signing phase which only uses the hash and the key and not the message itself.</p>
<dl class="params"><dt>Parameters</dt><dd>
diff --git a/docs/html/group__derivation.html b/docs/html/group__derivation.html
index 0baa784..0c17519 100644
--- a/docs/html/group__derivation.html
+++ b/docs/html/group__derivation.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
@@ -220,10 +220,10 @@
<p>A key agreement algorithm takes two inputs: a private key <code>private_key</code> a public key <code>peer_key</code>. The result of this function is passed as input to a key derivation. The output of this key derivation can be extracted by reading from the resulting generator to produce keys and other cryptographic material.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramdir">[in,out]</td><td class="paramname">generator</td><td>The generator object to use. It must have been set up with <a class="el" href="group__derivation.html#ga1825696be813dfac2b8d3d02717e71c5">psa_key_derivation_setup()</a> with a key agreement and derivation algorithm <code>alg</code> (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#ga59753742cb06553bd22751bbef472b6f">PSA_ALG_IS_KEY_AGREEMENT</a>(<code>alg</code>) is true and #PSA_ALG_IS_RAW_KEY_AGREEMENT(<code>alg</code>) is false). The generator must be ready for an input of the type given by <code>step</code>. </td></tr>
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">generator</td><td>The generator object to use. It must have been set up with <a class="el" href="group__derivation.html#ga1825696be813dfac2b8d3d02717e71c5">psa_key_derivation_setup()</a> with a key agreement and derivation algorithm <code>alg</code> (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#ga59753742cb06553bd22751bbef472b6f">PSA_ALG_IS_KEY_AGREEMENT</a>(<code>alg</code>) is true and <a class="el" href="group__crypto__types.html#gaa40ab362ce141ce541d69b2eb1f41438">PSA_ALG_IS_RAW_KEY_AGREEMENT</a>(<code>alg</code>) is false). The generator must be ready for an input of the type given by <code>step</code>. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">step</td><td>Which step the input data is for. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">private_key</td><td>Handle to the private key to use. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">peer_key</td><td>Public key of the peer. The peer key must be in the same format that <a class="el" href="group__import__export.html#gac9f999cb4d098663d56095afe81a453a" title="Import a key in binary format. ">psa_import_key()</a> accepts for the public key type corresponding to the type of private_key. That is, this function performs the equivalent of `psa_import_key(internal_public_key_handle, <a class="el" href="group__crypto__types.html#gace08e46dd7cbf642d50d982a25d02bec">PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(private_key_type)</a>, peer_key, peer_key_length)<code>where </code>private_key_type<code>is the type of</code>private_key`. For example, for EC keys, this means that peer_key is interpreted as a point on the curve that the private key is on. The standard formats for public keys are documented in the documentation of <a class="el" href="group__import__export.html#gad760d1f0d4e60972c78cbb4c8a528256" title="Export a public key or the public part of a key pair in binary format. ">psa_export_public_key()</a>. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">peer_key</td><td>Public key of the peer. The peer key must be in the same format that <a class="el" href="group__import__export.html#gac9f999cb4d098663d56095afe81a453a" title="Import a key in binary format. ">psa_import_key()</a> accepts for the public key type corresponding to the type of private_key. That is, this function performs the equivalent of <a class="el" href="group__import__export.html#gac9f999cb4d098663d56095afe81a453a" title="Import a key in binary format. ">psa_import_key</a>(<code>internal_public_key_handle</code>, <a class="el" href="group__crypto__types.html#gace08e46dd7cbf642d50d982a25d02bec">PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR</a>(<code>private_key_type</code>), <code>peer_key</code>, <code>peer_key_length</code>) where <code>private_key_type</code> is the type of <code>private_key</code>. For example, for EC keys, this means that peer_key is interpreted as a point on the curve that the private key is on. The standard formats for public keys are documented in the documentation of <a class="el" href="group__import__export.html#gad760d1f0d4e60972c78cbb4c8a528256" title="Export a public key or the public part of a key pair in binary format. ">psa_export_public_key()</a>. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">peer_key_length</td><td>Size of <code>peer_key</code> in bytes.</td></tr>
</table>
</dd>
@@ -304,6 +304,7 @@
<dl class="section warning"><dt>Warning</dt><dd>The raw result of a key agreement algorithm such as finite-field Diffie-Hellman or elliptic curve Diffie-Hellman has biases and should not be used directly as key material. It should instead be passed as input to a key derivation algorithm. To chain a key agreement with a key derivation, use <a class="el" href="group__derivation.html#ga2c7fe304cacc141ffb91553548abc5d2">psa_key_agreement()</a> and other functions from the key derivation and generator interface.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
+ <tr><td class="paramdir"></td><td class="paramname">alg</td><td>The key agreement algorithm to compute (<code>PSA_ALG_XXX</code> value such that <a class="el" href="group__crypto__types.html#gaa40ab362ce141ce541d69b2eb1f41438">PSA_ALG_IS_RAW_KEY_AGREEMENT</a>(<code>alg</code>) is true). </td></tr>
<tr><td class="paramdir"></td><td class="paramname">private_key</td><td>Handle to the private key to use. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">peer_key</td><td>Public key of the peer. It must be in the same format that <a class="el" href="group__import__export.html#gac9f999cb4d098663d56095afe81a453a" title="Import a key in binary format. ">psa_import_key()</a> accepts. The standard formats for public keys are documented in the documentation of <a class="el" href="group__import__export.html#gad760d1f0d4e60972c78cbb4c8a528256" title="Export a public key or the public part of a key pair in binary format. ">psa_export_public_key()</a>. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">peer_key_length</td><td>Size of <code>peer_key</code> in bytes. </td></tr>
diff --git a/docs/html/group__error.html b/docs/html/group__error.html
index 302633b..394e039 100644
--- a/docs/html/group__error.html
+++ b/docs/html/group__error.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
@@ -379,7 +379,7 @@
<p>There was a storage failure that may have led to data loss.</p>
<p>This error indicates that some persistent storage is corrupted. It should not be used for a corruption of volatile memory (use <a class="el" href="group__error.html#ga2c5dda1485cb54f2385cb9c1279a7004">PSA_ERROR_TAMPERING_DETECTED</a>), for a communication error between the cryptoprocessor and its external storage (use <a class="el" href="group__error.html#ga5cdb6948371d49e916106249020ea3f7">PSA_ERROR_COMMUNICATION_FAILURE</a>), or when the storage is in a valid state but is full (use <a class="el" href="group__error.html#ga897a45eb206a6f6b7be7ffbe36f0d766">PSA_ERROR_INSUFFICIENT_STORAGE</a>).</p>
<p>Note that a storage failure does not indicate that any data that was previously read is invalid. However this previously read data may no longer be readable from storage.</p>
-<p>When a storage failure occurs, it is no longer possible to ensure the global integrity of the keystore. Depending on the global integrity guarantees offered by the implementation, access to other data may or may not fail even if the data is still readable but its integrity canont be guaranteed.</p>
+<p>When a storage failure occurs, it is no longer possible to ensure the global integrity of the keystore. Depending on the global integrity guarantees offered by the implementation, access to other data may or may not fail even if the data is still readable but its integrity cannot be guaranteed.</p>
<p>Implementations should only use this error code to report a permanent storage corruption. However application writers should keep in mind that transient errors while reading the storage may be reported using this error code. </p>
</div>
diff --git a/docs/html/group__generators.html b/docs/html/group__generators.html
index 9f93b4d..e092ad9 100644
--- a/docs/html/group__generators.html
+++ b/docs/html/group__generators.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/group__hash.html b/docs/html/group__hash.html
index b174b4c..ef7f322 100644
--- a/docs/html/group__hash.html
+++ b/docs/html/group__hash.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
@@ -360,7 +360,7 @@
<tr><td class="paramdir"></td><td class="paramname">input_length</td><td>Size of the <code>input</code> buffer in bytes. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">hash</td><td>Buffer where the hash is to be written. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">hash_size</td><td>Size of the <code>hash</code> buffer in bytes. </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">hash_length</td><td>On success, the number of bytes that make up the hash value. This is always <a class="el" href="crypto__sizes_8h.html#aef340331ce3cba2b57e1fc5624bf1f99">PSA_HASH_SIZE</a>(<code>alg</code>) where <code>alg</code> is the hash algorithm that is calculated.</td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">hash_length</td><td>On success, the number of bytes that make up the hash value. This is always <a class="el" href="crypto__sizes_8h.html#aef340331ce3cba2b57e1fc5624bf1f99">PSA_HASH_SIZE</a>(<code>alg</code>).</td></tr>
</table>
</dd>
</dl>
diff --git a/docs/html/group__import__export.html b/docs/html/group__import__export.html
index 7c61d7b..7d05ce4 100644
--- a/docs/html/group__import__export.html
+++ b/docs/html/group__import__export.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
@@ -143,7 +143,7 @@
<p>Make a copy of a key.</p>
<p>Copy key material from one location to another.</p>
<p>This function is primarily useful to copy a key from one lifetime to another. The target key retains its lifetime and location.</p>
-<p>In an implementation where slots have different ownerships, this functin may be used to share a key with a different party, subject to implementation-defined restrictions on key sharing. In this case <code>constraint</code> would typically prevent the recipient from exporting the key.</p>
+<p>In an implementation where slots have different ownerships, this function may be used to share a key with a different party, subject to implementation-defined restrictions on key sharing. In this case <code>constraint</code> would typically prevent the recipient from exporting the key.</p>
<p>The resulting key may only be used in a way that conforms to all three of: the policy of the source key, the policy previously set on the target, and the <code>constraint</code> parameter passed when calling this function.</p><ul>
<li>The usage flags on the resulting key are the bitwise-and of the usage flags on the source policy, the previously-set target policy and the policy constraint.</li>
<li>If all three policies allow the same algorithm or wildcard-based algorithm policy, the resulting key has the same algorithm policy.</li>
diff --git a/docs/html/group__initialization.html b/docs/html/group__initialization.html
index d9574b8..613eb46 100644
--- a/docs/html/group__initialization.html
+++ b/docs/html/group__initialization.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/group__key__lifetimes.html b/docs/html/group__key__lifetimes.html
index 5fefd1d..9ede76c 100644
--- a/docs/html/group__key__lifetimes.html
+++ b/docs/html/group__key__lifetimes.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/group__key__management.html b/docs/html/group__key__management.html
index 1dd61f4..7c02c99 100644
--- a/docs/html/group__key__management.html
+++ b/docs/html/group__key__management.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/group__platform.html b/docs/html/group__platform.html
index a1ddf2a..4b616b1 100644
--- a/docs/html/group__platform.html
+++ b/docs/html/group__platform.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/group__policy.html b/docs/html/group__policy.html
index ee73daf..2036b3c 100644
--- a/docs/html/group__policy.html
+++ b/docs/html/group__policy.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/group__random.html b/docs/html/group__random.html
index e405eba..48173f2 100644
--- a/docs/html/group__random.html
+++ b/docs/html/group__random.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/index.html b/docs/html/index.html
index f096d3c..3fb1ac1 100644
--- a/docs/html/index.html
+++ b/docs/html/index.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/modules.html b/docs/html/modules.html
index 0d2051e..b78fe83 100644
--- a/docs/html/modules.html
+++ b/docs/html/modules.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/search/all_8.js b/docs/html/search/all_8.js
index 0e9f4ce..c99c08b 100644
--- a/docs/html/search/all_8.js
+++ b/docs/html/search/all_8.js
@@ -8,7 +8,7 @@
['psa_5faead_5fencrypt_5foutput_5fsize',['PSA_AEAD_ENCRYPT_OUTPUT_SIZE',['../crypto__sizes_8h.html#a85667d47a7aa6c7b99a80e5273671266',1,'crypto_sizes.h']]],
['psa_5faead_5fencrypt_5fsetup',['psa_aead_encrypt_setup',['../group__aead.html#ga47265dc4852f1476f852752218fd12b2',1,'crypto.h']]],
['psa_5faead_5ffinish',['psa_aead_finish',['../group__aead.html#ga759791bbe1763b377c3b5447641f1fc8',1,'crypto.h']]],
- ['psa_5faead_5ffinish_5foutput_5fsize',['PSA_AEAD_FINISH_OUTPUT_SIZE',['../crypto__sizes_8h.html#af45d92c1d7ef43822b8df21ab1117d3f',1,'crypto_sizes.h']]],
+ ['psa_5faead_5ffinish_5foutput_5fsize',['PSA_AEAD_FINISH_OUTPUT_SIZE',['../crypto__sizes_8h.html#ab097f6e054f1a73e975d597ade9029a6',1,'crypto_sizes.h']]],
['psa_5faead_5fgenerate_5fnonce',['psa_aead_generate_nonce',['../group__aead.html#ga3eadcf2a29f662129ea4fb3454969ba2',1,'crypto.h']]],
['psa_5faead_5foperation_5finit',['PSA_AEAD_OPERATION_INIT',['../group__aead.html#gaf52e036794c0dc6fbadd93a2b990f366',1,'crypto.h']]],
['psa_5faead_5foperation_5ft',['psa_aead_operation_t',['../group__aead.html#ga14f6a01afbaa8c5b3d8c5d345cbaa3ed',1,'crypto.h']]],
@@ -24,7 +24,9 @@
['psa_5falg_5farc4',['PSA_ALG_ARC4',['../group__crypto__types.html#gab6a5284decb0e5e1b5b8740a41ef3c5e',1,'crypto_values.h']]],
['psa_5falg_5fcbc_5fno_5fpadding',['PSA_ALG_CBC_NO_PADDING',['../group__crypto__types.html#gacb332d72716958880ee7f97d8365ae66',1,'crypto_values.h']]],
['psa_5falg_5fcbc_5fpkcs7',['PSA_ALG_CBC_PKCS7',['../group__crypto__types.html#gaef50d2e9716eb6d476046608e4e0c78c',1,'crypto_values.h']]],
+ ['psa_5falg_5fccm',['PSA_ALG_CCM',['../group__crypto__types.html#gac2c0e7d21f1b2df5e76bcb4a8f84273c',1,'crypto_values.h']]],
['psa_5falg_5fctr',['PSA_ALG_CTR',['../group__crypto__types.html#gad318309706a769cffdc64e4c7e06b2e9',1,'crypto_values.h']]],
+ ['psa_5falg_5fdeterministic_5fdsa',['PSA_ALG_DETERMINISTIC_DSA',['../group__crypto__types.html#gab8eb98fb6d2e094e47f3b44dfe128f94',1,'crypto_values.h']]],
['psa_5falg_5fdeterministic_5fecdsa',['PSA_ALG_DETERMINISTIC_ECDSA',['../group__crypto__types.html#ga11da566bcd341661c8de921e2ca5ed03',1,'crypto_values.h']]],
['psa_5falg_5fdsa',['PSA_ALG_DSA',['../group__crypto__types.html#ga9a68efdddff5ae95f104a1416b12742e',1,'crypto_values.h']]],
['psa_5falg_5fecdh',['PSA_ALG_ECDH',['../group__crypto__types.html#gab2dbcf71b63785e7dd7b54a100edee43',1,'crypto_values.h']]],
@@ -32,6 +34,7 @@
['psa_5falg_5fecdsa_5fany',['PSA_ALG_ECDSA_ANY',['../group__crypto__types.html#ga51d6b6044a62e33cae0cf64bfc3b22a4',1,'crypto_values.h']]],
['psa_5falg_5fffdh',['PSA_ALG_FFDH',['../group__crypto__types.html#ga0ebbb6f93a05b6511e6f108ffd2d1eb4',1,'crypto_values.h']]],
['psa_5falg_5ffull_5flength_5fmac',['PSA_ALG_FULL_LENGTH_MAC',['../group__crypto__types.html#gaa05a8d99634f3350597ac9284fb70cb1',1,'crypto_values.h']]],
+ ['psa_5falg_5fgcm',['PSA_ALG_GCM',['../group__crypto__types.html#ga0d7d02b15aaae490d38277d99f1c637c',1,'crypto_values.h']]],
['psa_5falg_5fhkdf',['PSA_ALG_HKDF',['../group__crypto__types.html#ga32a888fb360e6e25cab8a343772c4a82',1,'crypto_values.h']]],
['psa_5falg_5fhmac',['PSA_ALG_HMAC',['../group__crypto__types.html#ga70f397425684b3efcde1e0e34c28261f',1,'crypto_values.h']]],
['psa_5falg_5fis_5faead',['PSA_ALG_IS_AEAD',['../group__crypto__types.html#ga1d44829d60065eaa4ac9a703e7d6abc8',1,'crypto_values.h']]],
@@ -46,13 +49,13 @@
['psa_5falg_5fis_5fhmac',['PSA_ALG_IS_HMAC',['../group__crypto__types.html#ga4a050c3c3cbc6eb96418f18847601c8a',1,'crypto_values.h']]],
['psa_5falg_5fis_5fkey_5fagreement',['PSA_ALG_IS_KEY_AGREEMENT',['../group__crypto__types.html#ga59753742cb06553bd22751bbef472b6f',1,'crypto_values.h']]],
['psa_5falg_5fis_5fkey_5fderivation',['PSA_ALG_IS_KEY_DERIVATION',['../group__crypto__types.html#gaf8b90c648aa53dbd06c236695e300cd0',1,'crypto_values.h']]],
- ['psa_5falg_5fis_5fkey_5fselection',['PSA_ALG_IS_KEY_SELECTION',['../group__crypto__types.html#ga51b1834ee5e98c6a83c2cfc7699f9077',1,'crypto_values.h']]],
['psa_5falg_5fis_5fmac',['PSA_ALG_IS_MAC',['../group__crypto__types.html#gaca7aee4c9dde316b3b1a150a26eab776',1,'crypto_values.h']]],
+ ['psa_5falg_5fis_5fraw_5fkey_5fagreement',['PSA_ALG_IS_RAW_KEY_AGREEMENT',['../group__crypto__types.html#gaa40ab362ce141ce541d69b2eb1f41438',1,'crypto_values.h']]],
['psa_5falg_5fis_5fsign',['PSA_ALG_IS_SIGN',['../group__crypto__types.html#ga6d490d0904e0698f6c1268a89d72ff31',1,'crypto_values.h']]],
['psa_5falg_5fis_5fstream_5fcipher',['PSA_ALG_IS_STREAM_CIPHER',['../group__crypto__types.html#gacfec68e0c6175e02e1b2ebc97df383c0',1,'crypto_values.h']]],
['psa_5falg_5fis_5ftls12_5fprf',['PSA_ALG_IS_TLS12_PRF',['../group__crypto__types.html#gaa3c18890c50222e5219f40ade8927e66',1,'crypto_values.h']]],
['psa_5falg_5fis_5ftls12_5fpsk_5fto_5fms',['PSA_ALG_IS_TLS12_PSK_TO_MS',['../group__crypto__types.html#gab25ecc074a93fd11069bedfbba5a287b',1,'crypto_values.h']]],
- ['psa_5falg_5fis_5fwildcard',['PSA_ALG_IS_WILDCARD',['../group__crypto__types.html#gacf83d7430e82b97cecb8b26ca6fa1426',1,'PSA_ALG_IS_WILDCARD(): crypto_values.h'],['../group__crypto__types.html#gacf83d7430e82b97cecb8b26ca6fa1426',1,'PSA_ALG_IS_WILDCARD(): crypto_values.h']]],
+ ['psa_5falg_5fis_5fwildcard',['PSA_ALG_IS_WILDCARD',['../group__crypto__types.html#gacf83d7430e82b97cecb8b26ca6fa1426',1,'crypto_values.h']]],
['psa_5falg_5fkey_5fagreement',['PSA_ALG_KEY_AGREEMENT',['../group__crypto__types.html#ga78bb81cffb87a635c247725eeb2a2682',1,'crypto_values.h']]],
['psa_5falg_5frsa_5foaep',['PSA_ALG_RSA_OAEP',['../group__crypto__types.html#gaa1235dc3fdd9839c6c1b1a9857344c76',1,'crypto_values.h']]],
['psa_5falg_5frsa_5fpkcs1v15_5fcrypt',['PSA_ALG_RSA_PKCS1V15_CRYPT',['../group__crypto__types.html#ga4c540d3abe43fb9abcb94f2bc51acef9',1,'crypto_values.h']]],
diff --git a/docs/html/search/defines_0.js b/docs/html/search/defines_0.js
index ff2253e..81e47ba 100644
--- a/docs/html/search/defines_0.js
+++ b/docs/html/search/defines_0.js
@@ -2,7 +2,7 @@
[
['psa_5faead_5fdecrypt_5foutput_5fsize',['PSA_AEAD_DECRYPT_OUTPUT_SIZE',['../crypto__sizes_8h.html#a1d057796166c16eb673ad1997e48a60b',1,'crypto_sizes.h']]],
['psa_5faead_5fencrypt_5foutput_5fsize',['PSA_AEAD_ENCRYPT_OUTPUT_SIZE',['../crypto__sizes_8h.html#a85667d47a7aa6c7b99a80e5273671266',1,'crypto_sizes.h']]],
- ['psa_5faead_5ffinish_5foutput_5fsize',['PSA_AEAD_FINISH_OUTPUT_SIZE',['../crypto__sizes_8h.html#af45d92c1d7ef43822b8df21ab1117d3f',1,'crypto_sizes.h']]],
+ ['psa_5faead_5ffinish_5foutput_5fsize',['PSA_AEAD_FINISH_OUTPUT_SIZE',['../crypto__sizes_8h.html#ab097f6e054f1a73e975d597ade9029a6',1,'crypto_sizes.h']]],
['psa_5faead_5ftag_5flength',['PSA_AEAD_TAG_LENGTH',['../crypto__sizes_8h.html#a8e3079b2e624cb8d32b94843cddada49',1,'crypto_sizes.h']]],
['psa_5falg_5ftls12_5fpsk_5fto_5fms_5fmax_5fpsk_5flen',['PSA_ALG_TLS12_PSK_TO_MS_MAX_PSK_LEN',['../crypto__sizes_8h.html#ab589ea3b86f2bfa18880459299c58f8a',1,'crypto_sizes.h']]],
['psa_5fasymmetric_5fdecrypt_5foutput_5fsize',['PSA_ASYMMETRIC_DECRYPT_OUTPUT_SIZE',['../crypto__sizes_8h.html#a61a246f3eac41989821d982e56fea6c1',1,'crypto_sizes.h']]],
diff --git a/docs/html/structpsa__generate__key__extra__rsa-members.html b/docs/html/structpsa__generate__key__extra__rsa-members.html
index f57ba95..f03b6de 100644
--- a/docs/html/structpsa__generate__key__extra__rsa-members.html
+++ b/docs/html/structpsa__generate__key__extra__rsa-members.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>
diff --git a/docs/html/structpsa__generate__key__extra__rsa.html b/docs/html/structpsa__generate__key__extra__rsa.html
index 53170d9..4121301 100644
--- a/docs/html/structpsa__generate__key__extra__rsa.html
+++ b/docs/html/structpsa__generate__key__extra__rsa.html
@@ -24,7 +24,7 @@
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform Security Architecture — cryptography and keystore interface
-  <span id="projectnumber">beta 1 — 2019-01-21</span>
+  <span id="projectnumber">beta 2 — 2019-02-22</span>
</div>
</td>
</tr>