MCUXpresso_LPC55S69/docs/MCUXpresso SDK API Referenc.../a00026.html

884 lines
49 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>MCUXpresso SDK API Reference Manual: Hashcrypt AES</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="fs_logo.gif"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">MCUXpresso SDK API Reference Manual
&#160;<span id="projectnumber">Rev 2.15.000</span>
</div>
<div id="projectbrief">NXP Semiconductors</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>API&#160;Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('a00026.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Hashcrypt AES<div class="ingroups"><a class="el" href="a00254.html">Hashcrypt: The Cryptographic Accelerator</a></div></div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:a00340"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#a00340">_hashcrypt_handle</a></td></tr>
<tr class="memdesc:a00340"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specify HASHCRYPT's key resource. <a href="a00026.html#a00340">More...</a><br/></td></tr>
<tr class="separator:a00340"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:gac8b498d3aa014ca9ea26a73569784ae0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac8b498d3aa014ca9ea26a73569784ae0"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#gac8b498d3aa014ca9ea26a73569784ae0">HASHCRYPT_AES_BLOCK_SIZE</a>&#160;&#160;&#160;16U</td></tr>
<tr class="memdesc:gac8b498d3aa014ca9ea26a73569784ae0"><td class="mdescLeft">&#160;</td><td class="mdescRight">AES block size in bytes. <br/></td></tr>
<tr class="separator:gac8b498d3aa014ca9ea26a73569784ae0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:gac4b54e70186520b8c7d2e14671830a13"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac4b54e70186520b8c7d2e14671830a13"></a>
typedef enum <a class="el" href="a00026.html#gae4573fde2634b74455f8a6a3a3caf285">_hashcrypt_aes_mode_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#gac4b54e70186520b8c7d2e14671830a13">hashcrypt_aes_mode_t</a></td></tr>
<tr class="memdesc:gac4b54e70186520b8c7d2e14671830a13"><td class="mdescLeft">&#160;</td><td class="mdescRight">AES mode. <br/></td></tr>
<tr class="separator:gac4b54e70186520b8c7d2e14671830a13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae7d69d22963d6f5665fe1fd4b448ba64"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae7d69d22963d6f5665fe1fd4b448ba64"></a>
typedef enum <br class="typebreak"/>
<a class="el" href="a00026.html#ga0585d574f308cf7a7b3ac8fb173b5bdb">_hashcrypt_aes_keysize_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#gae7d69d22963d6f5665fe1fd4b448ba64">hashcrypt_aes_keysize_t</a></td></tr>
<tr class="memdesc:gae7d69d22963d6f5665fe1fd4b448ba64"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of AES key. <br/></td></tr>
<tr class="separator:gae7d69d22963d6f5665fe1fd4b448ba64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga939f81b55135ab1454deaba53c8aad0d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga939f81b55135ab1454deaba53c8aad0d"></a>
typedef enum <a class="el" href="a00026.html#ga6a50ead02ef3d94ab6eba36f23ace589">_hashcrypt_key</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#ga939f81b55135ab1454deaba53c8aad0d">hashcrypt_key_t</a></td></tr>
<tr class="memdesc:ga939f81b55135ab1454deaba53c8aad0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">HASHCRYPT key source selection. <br/></td></tr>
<tr class="separator:ga939f81b55135ab1454deaba53c8aad0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:gae4573fde2634b74455f8a6a3a3caf285"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#gae4573fde2634b74455f8a6a3a3caf285">_hashcrypt_aes_mode_t</a> { <br/>
&#160;&#160;<a class="el" href="a00026.html#ggae4573fde2634b74455f8a6a3a3caf285a0b341ebc1af794d7d780776eae7050f8">kHASHCRYPT_AesEcb</a> = 0U,
<br/>
&#160;&#160;<a class="el" href="a00026.html#ggae4573fde2634b74455f8a6a3a3caf285adfeddaa9cff97dab711a4a4264c48b07">kHASHCRYPT_AesCbc</a> = 1U,
<br/>
&#160;&#160;<a class="el" href="a00026.html#ggae4573fde2634b74455f8a6a3a3caf285a3252c207115c92c80180015ef4ee417f">kHASHCRYPT_AesCtr</a> = 2U
<br/>
}</td></tr>
<tr class="memdesc:gae4573fde2634b74455f8a6a3a3caf285"><td class="mdescLeft">&#160;</td><td class="mdescRight">AES mode. <a href="a00026.html#gae4573fde2634b74455f8a6a3a3caf285">More...</a><br/></td></tr>
<tr class="separator:gae4573fde2634b74455f8a6a3a3caf285"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0585d574f308cf7a7b3ac8fb173b5bdb"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#ga0585d574f308cf7a7b3ac8fb173b5bdb">_hashcrypt_aes_keysize_t</a> { <br/>
&#160;&#160;<a class="el" href="a00026.html#gga0585d574f308cf7a7b3ac8fb173b5bdbaa955c404a22333ebc64caaeed4aedb95">kHASHCRYPT_Aes128</a> = 0U,
<br/>
&#160;&#160;<a class="el" href="a00026.html#gga0585d574f308cf7a7b3ac8fb173b5bdba7b547726c7eb6dd8e0cb25a9b6e55a0b">kHASHCRYPT_Aes192</a> = 1U,
<br/>
&#160;&#160;<a class="el" href="a00026.html#gga0585d574f308cf7a7b3ac8fb173b5bdba0db84e68020267772cf2359d370c099d">kHASHCRYPT_Aes256</a> = 2U,
<br/>
&#160;&#160;<a class="el" href="a00026.html#gga0585d574f308cf7a7b3ac8fb173b5bdbabb6ec83ec0ef173f82e610e700f61e67">kHASHCRYPT_InvalidKey</a> = 3U
<br/>
}</td></tr>
<tr class="memdesc:ga0585d574f308cf7a7b3ac8fb173b5bdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of AES key. <a href="a00026.html#ga0585d574f308cf7a7b3ac8fb173b5bdb">More...</a><br/></td></tr>
<tr class="separator:ga0585d574f308cf7a7b3ac8fb173b5bdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6a50ead02ef3d94ab6eba36f23ace589"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#ga6a50ead02ef3d94ab6eba36f23ace589">_hashcrypt_key</a> { <br/>
&#160;&#160;<a class="el" href="a00026.html#gga6a50ead02ef3d94ab6eba36f23ace589acaad99c28b932ad32149eba64816e2d7">kHASHCRYPT_UserKey</a> = 0xc3c3U,
<br/>
&#160;&#160;<a class="el" href="a00026.html#gga6a50ead02ef3d94ab6eba36f23ace589aa0ccddd84bfdaa8a87561a1b228df303">kHASHCRYPT_SecretKey</a> = 0x3c3cU
<br/>
}</td></tr>
<tr class="memdesc:ga6a50ead02ef3d94ab6eba36f23ace589"><td class="mdescLeft">&#160;</td><td class="mdescRight">HASHCRYPT key source selection. <a href="a00026.html#ga6a50ead02ef3d94ab6eba36f23ace589">More...</a><br/></td></tr>
<tr class="separator:ga6a50ead02ef3d94ab6eba36f23ace589"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga516111a46b4c1e6d172005f1cf9546e3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#ga516111a46b4c1e6d172005f1cf9546e3">HASHCRYPT_AES_SetKey</a> (HASHCRYPT_Type *base, <a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *handle, const uint8_t *key, size_t keySize)</td></tr>
<tr class="memdesc:ga516111a46b4c1e6d172005f1cf9546e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set AES key to hashcrypt_handle_t struct and optionally to HASHCRYPT. <a href="#ga516111a46b4c1e6d172005f1cf9546e3">More...</a><br/></td></tr>
<tr class="separator:ga516111a46b4c1e6d172005f1cf9546e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga417b271e51105b9506b5b9b5fe89cf74"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#ga417b271e51105b9506b5b9b5fe89cf74">HASHCRYPT_AES_EncryptEcb</a> (HASHCRYPT_Type *base, <a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *handle, const uint8_t *plaintext, uint8_t *ciphertext, size_t size)</td></tr>
<tr class="memdesc:ga417b271e51105b9506b5b9b5fe89cf74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encrypts AES on one or multiple 128-bit block(s). <a href="#ga417b271e51105b9506b5b9b5fe89cf74">More...</a><br/></td></tr>
<tr class="separator:ga417b271e51105b9506b5b9b5fe89cf74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0f171677c79d7903cd6e66409565b83e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#ga0f171677c79d7903cd6e66409565b83e">HASHCRYPT_AES_DecryptEcb</a> (HASHCRYPT_Type *base, <a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *handle, const uint8_t *ciphertext, uint8_t *plaintext, size_t size)</td></tr>
<tr class="memdesc:ga0f171677c79d7903cd6e66409565b83e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decrypts AES on one or multiple 128-bit block(s). <a href="#ga0f171677c79d7903cd6e66409565b83e">More...</a><br/></td></tr>
<tr class="separator:ga0f171677c79d7903cd6e66409565b83e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa71be50a4d4417e46fb8aae6c85759aa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#gaa71be50a4d4417e46fb8aae6c85759aa">HASHCRYPT_AES_EncryptCbc</a> (HASHCRYPT_Type *base, <a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *handle, const uint8_t *plaintext, uint8_t *ciphertext, size_t size, const uint8_t iv[16])</td></tr>
<tr class="memdesc:gaa71be50a4d4417e46fb8aae6c85759aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encrypts AES using CBC block mode. <a href="#gaa71be50a4d4417e46fb8aae6c85759aa">More...</a><br/></td></tr>
<tr class="separator:gaa71be50a4d4417e46fb8aae6c85759aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf65c31d69a8ad1d985091fa5de5dfa17"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#gaf65c31d69a8ad1d985091fa5de5dfa17">HASHCRYPT_AES_DecryptCbc</a> (HASHCRYPT_Type *base, <a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *handle, const uint8_t *ciphertext, uint8_t *plaintext, size_t size, const uint8_t iv[16])</td></tr>
<tr class="memdesc:gaf65c31d69a8ad1d985091fa5de5dfa17"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decrypts AES using CBC block mode. <a href="#gaf65c31d69a8ad1d985091fa5de5dfa17">More...</a><br/></td></tr>
<tr class="separator:gaf65c31d69a8ad1d985091fa5de5dfa17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga209a497b9766b85ac2a76d3b3b5f3163"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#ga209a497b9766b85ac2a76d3b3b5f3163">HASHCRYPT_AES_CryptCtr</a> (HASHCRYPT_Type *base, <a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *handle, const uint8_t *input, uint8_t *output, size_t size, uint8_t counter[<a class="el" href="a00026.html#gac8b498d3aa014ca9ea26a73569784ae0">HASHCRYPT_AES_BLOCK_SIZE</a>], uint8_t counterlast[<a class="el" href="a00026.html#gac8b498d3aa014ca9ea26a73569784ae0">HASHCRYPT_AES_BLOCK_SIZE</a>], size_t *szLeft)</td></tr>
<tr class="memdesc:ga209a497b9766b85ac2a76d3b3b5f3163"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encrypts or decrypts AES using CTR block mode. <a href="#ga209a497b9766b85ac2a76d3b3b5f3163">More...</a><br/></td></tr>
<tr class="separator:ga209a497b9766b85ac2a76d3b3b5f3163"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8e0d6e211b37c9f82cff48fe9e80115d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#ga8e0d6e211b37c9f82cff48fe9e80115d">HASHCRYPT_AES_CryptOfb</a> (HASHCRYPT_Type *base, <a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *handle, const uint8_t *input, uint8_t *output, size_t size, const uint8_t iv[<a class="el" href="a00026.html#gac8b498d3aa014ca9ea26a73569784ae0">HASHCRYPT_AES_BLOCK_SIZE</a>])</td></tr>
<tr class="memdesc:ga8e0d6e211b37c9f82cff48fe9e80115d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encrypts or decrypts AES using OFB block mode. <a href="#ga8e0d6e211b37c9f82cff48fe9e80115d">More...</a><br/></td></tr>
<tr class="separator:ga8e0d6e211b37c9f82cff48fe9e80115d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga23c43c66d7654bbf9b116b7a949ead60"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#ga23c43c66d7654bbf9b116b7a949ead60">HASHCRYPT_AES_EncryptCfb</a> (HASHCRYPT_Type *base, <a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *handle, const uint8_t *plaintext, uint8_t *ciphertext, size_t size, const uint8_t iv[16])</td></tr>
<tr class="memdesc:ga23c43c66d7654bbf9b116b7a949ead60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encrypts AES using CFB block mode. <a href="#ga23c43c66d7654bbf9b116b7a949ead60">More...</a><br/></td></tr>
<tr class="separator:ga23c43c66d7654bbf9b116b7a949ead60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa3b9c8a805fbd8b004fcde0add292f3a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#gaa3b9c8a805fbd8b004fcde0add292f3a">HASHCRYPT_AES_DecryptCfb</a> (HASHCRYPT_Type *base, <a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *handle, const uint8_t *ciphertext, uint8_t *plaintext, size_t size, const uint8_t iv[16])</td></tr>
<tr class="memdesc:gaa3b9c8a805fbd8b004fcde0add292f3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decrypts AES using CFB block mode. <a href="#gaa3b9c8a805fbd8b004fcde0add292f3a">More...</a><br/></td></tr>
<tr class="separator:gaa3b9c8a805fbd8b004fcde0add292f3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="a00340" id="a00340"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _hashcrypt_handle</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"></div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a0cef2fdf01880b79decb4e05fce94e10"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#a0cef2fdf01880b79decb4e05fce94e10">keyWord</a> [8]</td></tr>
<tr class="memdesc:a0cef2fdf01880b79decb4e05fce94e10"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy of user key (set by <a class="el" href="a00026.html#ga516111a46b4c1e6d172005f1cf9546e3" title="Set AES key to hashcrypt_handle_t struct and optionally to HASHCRYPT. ">HASHCRYPT_AES_SetKey()</a>. <a href="#a0cef2fdf01880b79decb4e05fce94e10">More...</a><br/></td></tr>
<tr class="separator:a0cef2fdf01880b79decb4e05fce94e10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42ef7a1ec041ea6c689553f2358034ab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00026.html#ga939f81b55135ab1454deaba53c8aad0d">hashcrypt_key_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#a42ef7a1ec041ea6c689553f2358034ab">keyType</a></td></tr>
<tr class="memdesc:a42ef7a1ec041ea6c689553f2358034ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">For operations with key (such as AES encryption/decryption), specify key type. <a href="#a42ef7a1ec041ea6c689553f2358034ab">More...</a><br/></td></tr>
<tr class="separator:a42ef7a1ec041ea6c689553f2358034ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a0cef2fdf01880b79decb4e05fce94e10"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t _hashcrypt_handle::keyWord[8]</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a42ef7a1ec041ea6c689553f2358034ab"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00026.html#ga939f81b55135ab1454deaba53c8aad0d">hashcrypt_key_t</a> _hashcrypt_handle::keyType</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="gae4573fde2634b74455f8a6a3a3caf285"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00026.html#gae4573fde2634b74455f8a6a3a3caf285">_hashcrypt_aes_mode_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ggae4573fde2634b74455f8a6a3a3caf285a0b341ebc1af794d7d780776eae7050f8"></a>kHASHCRYPT_AesEcb</em>&nbsp;</td><td class="fielddoc">
<p>AES ECB mode. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggae4573fde2634b74455f8a6a3a3caf285adfeddaa9cff97dab711a4a4264c48b07"></a>kHASHCRYPT_AesCbc</em>&nbsp;</td><td class="fielddoc">
<p>AES CBC mode. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggae4573fde2634b74455f8a6a3a3caf285a3252c207115c92c80180015ef4ee417f"></a>kHASHCRYPT_AesCtr</em>&nbsp;</td><td class="fielddoc">
<p>AES CTR mode. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga0585d574f308cf7a7b3ac8fb173b5bdb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00026.html#ga0585d574f308cf7a7b3ac8fb173b5bdb">_hashcrypt_aes_keysize_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga0585d574f308cf7a7b3ac8fb173b5bdbaa955c404a22333ebc64caaeed4aedb95"></a>kHASHCRYPT_Aes128</em>&nbsp;</td><td class="fielddoc">
<p>AES 128 bit key. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga0585d574f308cf7a7b3ac8fb173b5bdba7b547726c7eb6dd8e0cb25a9b6e55a0b"></a>kHASHCRYPT_Aes192</em>&nbsp;</td><td class="fielddoc">
<p>AES 192 bit key. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga0585d574f308cf7a7b3ac8fb173b5bdba0db84e68020267772cf2359d370c099d"></a>kHASHCRYPT_Aes256</em>&nbsp;</td><td class="fielddoc">
<p>AES 256 bit key. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga0585d574f308cf7a7b3ac8fb173b5bdbabb6ec83ec0ef173f82e610e700f61e67"></a>kHASHCRYPT_InvalidKey</em>&nbsp;</td><td class="fielddoc">
<p>AES invalid key. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="ga6a50ead02ef3d94ab6eba36f23ace589"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00026.html#ga6a50ead02ef3d94ab6eba36f23ace589">_hashcrypt_key</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga6a50ead02ef3d94ab6eba36f23ace589acaad99c28b932ad32149eba64816e2d7"></a>kHASHCRYPT_UserKey</em>&nbsp;</td><td class="fielddoc">
<p>HASHCRYPT user key. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga6a50ead02ef3d94ab6eba36f23ace589aa0ccddd84bfdaa8a87561a1b228df303"></a>kHASHCRYPT_SecretKey</em>&nbsp;</td><td class="fielddoc">
<p>HASHCRYPT secret key (dedicated hw bus from PUF) </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga516111a46b4c1e6d172005f1cf9546e3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> HASHCRYPT_AES_SetKey </td>
<td>(</td>
<td class="paramtype">HASHCRYPT_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>keySize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the AES key for encryption/decryption with the hashcrypt_handle_t structure. The hashcrypt_handle_t input argument specifies key source.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>HASHCRYPT peripheral base address. </td></tr>
<tr><td class="paramname">handle</td><td>Handle used for the request. </td></tr>
<tr><td class="paramname">key</td><td>0-mod-4 aligned pointer to AES key. </td></tr>
<tr><td class="paramname">keySize</td><td>AES key size in bytes. Shall equal 16, 24 or 32. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>status from set key operation </dd></dl>
</div>
</div>
<a class="anchor" id="ga417b271e51105b9506b5b9b5fe89cf74"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> HASHCRYPT_AES_EncryptEcb </td>
<td>(</td>
<td class="paramtype">HASHCRYPT_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>plaintext</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>ciphertext</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Encrypts AES. The source plaintext and destination ciphertext can overlap in system memory.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">base</td><td>HASHCRYPT peripheral base address </td></tr>
<tr><td class="paramdir"></td><td class="paramname">handle</td><td>Handle used for this request. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">plaintext</td><td>Input plain text to encrypt </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">ciphertext</td><td>Output cipher text </td></tr>
<tr><td class="paramdir"></td><td class="paramname">size</td><td>Size of input and output data in bytes. Must be multiple of 16 bytes. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status from encrypt operation </dd></dl>
</div>
</div>
<a class="anchor" id="ga0f171677c79d7903cd6e66409565b83e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> HASHCRYPT_AES_DecryptEcb </td>
<td>(</td>
<td class="paramtype">HASHCRYPT_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>ciphertext</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>plaintext</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Decrypts AES. The source ciphertext and destination plaintext can overlap in system memory.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">base</td><td>HASHCRYPT peripheral base address </td></tr>
<tr><td class="paramdir"></td><td class="paramname">handle</td><td>Handle used for this request. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">ciphertext</td><td>Input plain text to encrypt </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">plaintext</td><td>Output cipher text </td></tr>
<tr><td class="paramdir"></td><td class="paramname">size</td><td>Size of input and output data in bytes. Must be multiple of 16 bytes. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status from decrypt operation </dd></dl>
</div>
</div>
<a class="anchor" id="gaa71be50a4d4417e46fb8aae6c85759aa"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> HASHCRYPT_AES_EncryptCbc </td>
<td>(</td>
<td class="paramtype">HASHCRYPT_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>plaintext</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>ciphertext</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>iv</em>[16]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">base</td><td>HASHCRYPT peripheral base address </td></tr>
<tr><td class="paramdir"></td><td class="paramname">handle</td><td>Handle used for this request. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">plaintext</td><td>Input plain text to encrypt </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">ciphertext</td><td>Output cipher text </td></tr>
<tr><td class="paramdir"></td><td class="paramname">size</td><td>Size of input and output data in bytes. Must be multiple of 16 bytes. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">iv</td><td>Input initial vector to combine with the first input block. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status from encrypt operation </dd></dl>
</div>
</div>
<a class="anchor" id="gaf65c31d69a8ad1d985091fa5de5dfa17"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> HASHCRYPT_AES_DecryptCbc </td>
<td>(</td>
<td class="paramtype">HASHCRYPT_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>ciphertext</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>plaintext</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>iv</em>[16]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">base</td><td>HASHCRYPT peripheral base address </td></tr>
<tr><td class="paramdir"></td><td class="paramname">handle</td><td>Handle used for this request. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">ciphertext</td><td>Input cipher text to decrypt </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">plaintext</td><td>Output plain text </td></tr>
<tr><td class="paramdir"></td><td class="paramname">size</td><td>Size of input and output data in bytes. Must be multiple of 16 bytes. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">iv</td><td>Input initial vector to combine with the first input block. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status from decrypt operation </dd></dl>
</div>
</div>
<a class="anchor" id="ga209a497b9766b85ac2a76d3b3b5f3163"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> HASHCRYPT_AES_CryptCtr </td>
<td>(</td>
<td class="paramtype">HASHCRYPT_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>counter</em>[HASHCRYPT_AES_BLOCK_SIZE], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>counterlast</em>[HASHCRYPT_AES_BLOCK_SIZE], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t *&#160;</td>
<td class="paramname"><em>szLeft</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Encrypts or decrypts AES using CTR block mode. AES CTR mode uses only forward AES cipher and same algorithm for encryption and decryption. The only difference between encryption and decryption is that, for encryption, the input argument is plain text and the output argument is cipher text. For decryption, the input argument is cipher text and the output argument is plain text.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">base</td><td>HASHCRYPT peripheral base address </td></tr>
<tr><td class="paramdir"></td><td class="paramname">handle</td><td>Handle used for this request. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">input</td><td>Input data for CTR block mode </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">output</td><td>Output data for CTR block mode </td></tr>
<tr><td class="paramdir"></td><td class="paramname">size</td><td>Size of input and output data in bytes </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">counter</td><td>Input counter (updates on return) </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">counterlast</td><td>Output cipher of last counter, for chained CTR calls (statefull encryption). NULL can be passed if chained calls are not used. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">szLeft</td><td>Output number of bytes in left unused in counterlast block. NULL can be passed if chained calls are not used. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status from encrypt operation </dd></dl>
</div>
</div>
<a class="anchor" id="ga8e0d6e211b37c9f82cff48fe9e80115d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> HASHCRYPT_AES_CryptOfb </td>
<td>(</td>
<td class="paramtype">HASHCRYPT_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>output</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>iv</em>[HASHCRYPT_AES_BLOCK_SIZE]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Encrypts or decrypts AES using OFB block mode. AES OFB mode uses only forward AES cipher and same algorithm for encryption and decryption. The only difference between encryption and decryption is that, for encryption, the input argument is plain text and the output argument is cipher text. For decryption, the input argument is cipher text and the output argument is plain text.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">base</td><td>HASHCRYPT peripheral base address </td></tr>
<tr><td class="paramdir"></td><td class="paramname">handle</td><td>Handle used for this request. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">input</td><td>Input data for OFB block mode </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">output</td><td>Output data for OFB block mode </td></tr>
<tr><td class="paramdir"></td><td class="paramname">size</td><td>Size of input and output data in bytes </td></tr>
<tr><td class="paramdir"></td><td class="paramname">iv</td><td>Input initial vector to combine with the first input block. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status from encrypt operation </dd></dl>
</div>
</div>
<a class="anchor" id="ga23c43c66d7654bbf9b116b7a949ead60"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> HASHCRYPT_AES_EncryptCfb </td>
<td>(</td>
<td class="paramtype">HASHCRYPT_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>plaintext</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>ciphertext</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>iv</em>[16]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">base</td><td>HASHCRYPT peripheral base address </td></tr>
<tr><td class="paramdir"></td><td class="paramname">handle</td><td>Handle used for this request. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">plaintext</td><td>Input plain text to encrypt </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">ciphertext</td><td>Output cipher text </td></tr>
<tr><td class="paramdir"></td><td class="paramname">size</td><td>Size of input and output data in bytes. Must be multiple of 16 bytes. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">iv</td><td>Input initial vector to combine with the first input block. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status from encrypt operation </dd></dl>
</div>
</div>
<a class="anchor" id="gaa3b9c8a805fbd8b004fcde0add292f3a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00242.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> HASHCRYPT_AES_DecryptCfb </td>
<td>(</td>
<td class="paramtype">HASHCRYPT_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00026.html#a00340">hashcrypt_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>ciphertext</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>plaintext</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>iv</em>[16]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">base</td><td>HASHCRYPT peripheral base address </td></tr>
<tr><td class="paramdir"></td><td class="paramname">handle</td><td>Handle used for this request. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">ciphertext</td><td>Input cipher text to decrypt </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">plaintext</td><td>Output plaintext text </td></tr>
<tr><td class="paramdir"></td><td class="paramname">size</td><td>Size of input and output data in bytes. Must be multiple of 16 bytes. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">iv</td><td>Input initial vector to combine with the first input block. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status from encrypt operation </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.5-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul class="foot">
<li class="footer">&copy; 2016 NXP Semiconductors. All rights reserved.
</li>
</ul>
</div>
</body>
</html>