MCUXpresso_MIMXRT1021xxxxx/docs/MCUXpresso SDK API Referenc.../a00020.html

477 lines
27 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: DCP HASH driver</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('a00020.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">DCP HASH driver<div class="ingroups"><a class="el" href="a00019.html">DCP: Data Co-Processor</a></div></div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<p>This section describes the programming interface of the DCP HASH driver. </p>
<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:a00332"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00020.html#a00332">_dcp_hash_ctx_t</a></td></tr>
<tr class="memdesc:a00332"><td class="mdescLeft">&#160;</td><td class="mdescRight">Storage type used to save hash context. <a href="a00020.html#a00332">More...</a><br/></td></tr>
<tr class="separator:a00332"><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:gaaaf05095de831681825b475fca16ca14"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00020.html#gaaaf05095de831681825b475fca16ca14">DCP_SHA_BLOCK_SIZE</a>&#160;&#160;&#160;128U</td></tr>
<tr class="memdesc:gaaaf05095de831681825b475fca16ca14"><td class="mdescLeft">&#160;</td><td class="mdescRight">DCP HASH Context size. <a href="#gaaaf05095de831681825b475fca16ca14">More...</a><br/></td></tr>
<tr class="separator:gaaaf05095de831681825b475fca16ca14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6c48bdbcc2a96ef138e5de5393fe5965"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6c48bdbcc2a96ef138e5de5393fe5965"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00020.html#ga6c48bdbcc2a96ef138e5de5393fe5965">DCP_HASH_BLOCK_SIZE</a>&#160;&#160;&#160;<a class="el" href="a00020.html#gaaaf05095de831681825b475fca16ca14">DCP_SHA_BLOCK_SIZE</a></td></tr>
<tr class="memdesc:ga6c48bdbcc2a96ef138e5de5393fe5965"><td class="mdescLeft">&#160;</td><td class="mdescRight">DCP hash block size. <br/></td></tr>
<tr class="separator:ga6c48bdbcc2a96ef138e5de5393fe5965"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa5741738e5700607fd0ab7da6228bba2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00020.html#gaa5741738e5700607fd0ab7da6228bba2">DCP_HASH_CTX_SIZE</a>&#160;&#160;&#160;64</td></tr>
<tr class="memdesc:gaa5741738e5700607fd0ab7da6228bba2"><td class="mdescLeft">&#160;</td><td class="mdescRight">DCP HASH Context size. <a href="#gaa5741738e5700607fd0ab7da6228bba2">More...</a><br/></td></tr>
<tr class="separator:gaa5741738e5700607fd0ab7da6228bba2"><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:ga1e4eb47c999a6c409f76b9017f2ee853"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga1e4eb47c999a6c409f76b9017f2ee853"></a>
typedef enum <a class="el" href="a00020.html#gabd52d43c270ce2e56c9e868b57cb92a5">_dcp_hash_algo_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00020.html#ga1e4eb47c999a6c409f76b9017f2ee853">dcp_hash_algo_t</a></td></tr>
<tr class="memdesc:ga1e4eb47c999a6c409f76b9017f2ee853"><td class="mdescLeft">&#160;</td><td class="mdescRight">Supported cryptographic block cipher functions for HASH creation. <br/></td></tr>
<tr class="separator:ga1e4eb47c999a6c409f76b9017f2ee853"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae06d811ead112ae70d6c27e5f306268d"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a00020.html#a00332">_dcp_hash_ctx_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00020.html#gae06d811ead112ae70d6c27e5f306268d">dcp_hash_ctx_t</a></td></tr>
<tr class="memdesc:gae06d811ead112ae70d6c27e5f306268d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Storage type used to save hash context. <a href="#gae06d811ead112ae70d6c27e5f306268d">More...</a><br/></td></tr>
<tr class="separator:gae06d811ead112ae70d6c27e5f306268d"><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:gabd52d43c270ce2e56c9e868b57cb92a5"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00020.html#gabd52d43c270ce2e56c9e868b57cb92a5">_dcp_hash_algo_t</a> { <br/>
&#160;&#160;<a class="el" href="a00020.html#ggabd52d43c270ce2e56c9e868b57cb92a5a789e6da5cc19aa6d5eae061fbdd918d9">kDCP_Sha1</a>,
<br/>
&#160;&#160;<a class="el" href="a00020.html#ggabd52d43c270ce2e56c9e868b57cb92a5a8e1e38a094ad5bb89f323f29f66eb4b9">kDCP_Sha256</a>,
<br/>
&#160;&#160;<a class="el" href="a00020.html#ggabd52d43c270ce2e56c9e868b57cb92a5a1747e58c83642f2104c68049a44ce69e">kDCP_Crc32</a>
<br/>
}</td></tr>
<tr class="memdesc:gabd52d43c270ce2e56c9e868b57cb92a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Supported cryptographic block cipher functions for HASH creation. <a href="a00020.html#gabd52d43c270ce2e56c9e868b57cb92a5">More...</a><br/></td></tr>
<tr class="separator:gabd52d43c270ce2e56c9e868b57cb92a5"><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:gad343ac658a1d1118abb53a91b87f43cf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00260.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00020.html#gad343ac658a1d1118abb53a91b87f43cf">DCP_HASH_Init</a> (DCP_Type *base, <a class="el" href="a00019.html#ga3a72807e47a0e99f3827c8ca5b299484">dcp_handle_t</a> *handle, <a class="el" href="a00020.html#gae06d811ead112ae70d6c27e5f306268d">dcp_hash_ctx_t</a> *ctx, <a class="el" href="a00020.html#ga1e4eb47c999a6c409f76b9017f2ee853">dcp_hash_algo_t</a> algo)</td></tr>
<tr class="memdesc:gad343ac658a1d1118abb53a91b87f43cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize HASH context. <a href="#gad343ac658a1d1118abb53a91b87f43cf">More...</a><br/></td></tr>
<tr class="separator:gad343ac658a1d1118abb53a91b87f43cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga65d17b5c879f548b0c725d7be43d6415"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00260.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00020.html#ga65d17b5c879f548b0c725d7be43d6415">DCP_HASH_Update</a> (DCP_Type *base, <a class="el" href="a00020.html#gae06d811ead112ae70d6c27e5f306268d">dcp_hash_ctx_t</a> *ctx, const uint8_t *input, size_t inputSize)</td></tr>
<tr class="memdesc:ga65d17b5c879f548b0c725d7be43d6415"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add data to current HASH. <a href="#ga65d17b5c879f548b0c725d7be43d6415">More...</a><br/></td></tr>
<tr class="separator:ga65d17b5c879f548b0c725d7be43d6415"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7a3ed9d163c10e27d6d30f2ee9c7093f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00260.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00020.html#ga7a3ed9d163c10e27d6d30f2ee9c7093f">DCP_HASH_Finish</a> (DCP_Type *base, <a class="el" href="a00020.html#gae06d811ead112ae70d6c27e5f306268d">dcp_hash_ctx_t</a> *ctx, uint8_t *output, size_t *outputSize)</td></tr>
<tr class="memdesc:ga7a3ed9d163c10e27d6d30f2ee9c7093f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finalize hashing. <a href="#ga7a3ed9d163c10e27d6d30f2ee9c7093f">More...</a><br/></td></tr>
<tr class="separator:ga7a3ed9d163c10e27d6d30f2ee9c7093f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4f07a7b717483d2b760cd772bc1f6df7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00260.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00020.html#ga4f07a7b717483d2b760cd772bc1f6df7">DCP_HASH</a> (DCP_Type *base, <a class="el" href="a00019.html#ga3a72807e47a0e99f3827c8ca5b299484">dcp_handle_t</a> *handle, <a class="el" href="a00020.html#ga1e4eb47c999a6c409f76b9017f2ee853">dcp_hash_algo_t</a> algo, const uint8_t *input, size_t inputSize, uint8_t *output, size_t *outputSize)</td></tr>
<tr class="memdesc:ga4f07a7b717483d2b760cd772bc1f6df7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create HASH on given data. <a href="#ga4f07a7b717483d2b760cd772bc1f6df7">More...</a><br/></td></tr>
<tr class="separator:ga4f07a7b717483d2b760cd772bc1f6df7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="a00332" id="a00332"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _dcp_hash_ctx_t</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"></div>
</div>
</div>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="gaaaf05095de831681825b475fca16ca14"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define DCP_SHA_BLOCK_SIZE&#160;&#160;&#160;128U</td>
</tr>
</table>
</div><div class="memdoc">
<p>internal buffer block size </p>
</div>
</div>
<a class="anchor" id="gaa5741738e5700607fd0ab7da6228bba2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define DCP_HASH_CTX_SIZE&#160;&#160;&#160;64</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="gae06d811ead112ae70d6c27e5f306268d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="a00020.html#a00332">_dcp_hash_ctx_t</a> <a class="el" href="a00020.html#gae06d811ead112ae70d6c27e5f306268d">dcp_hash_ctx_t</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="gabd52d43c270ce2e56c9e868b57cb92a5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00020.html#gabd52d43c270ce2e56c9e868b57cb92a5">_dcp_hash_algo_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="ggabd52d43c270ce2e56c9e868b57cb92a5a789e6da5cc19aa6d5eae061fbdd918d9"></a>kDCP_Sha1</em>&nbsp;</td><td class="fielddoc">
<p>SHA_1. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggabd52d43c270ce2e56c9e868b57cb92a5a8e1e38a094ad5bb89f323f29f66eb4b9"></a>kDCP_Sha256</em>&nbsp;</td><td class="fielddoc">
<p>SHA_256. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggabd52d43c270ce2e56c9e868b57cb92a5a1747e58c83642f2104c68049a44ce69e"></a>kDCP_Crc32</em>&nbsp;</td><td class="fielddoc">
<p>CRC_32. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gad343ac658a1d1118abb53a91b87f43cf"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00260.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> DCP_HASH_Init </td>
<td>(</td>
<td class="paramtype">DCP_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="a00019.html#ga3a72807e47a0e99f3827c8ca5b299484">dcp_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00020.html#gae06d811ead112ae70d6c27e5f306268d">dcp_hash_ctx_t</a> *&#160;</td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00020.html#ga1e4eb47c999a6c409f76b9017f2ee853">dcp_hash_algo_t</a>&#160;</td>
<td class="paramname"><em>algo</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function initializes the HASH.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">base</td><td>DCP peripheral base address </td></tr>
<tr><td class="paramdir"></td><td class="paramname">handle</td><td>Specifies the DCP channel used for hashing. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">ctx</td><td>Output hash context </td></tr>
<tr><td class="paramdir"></td><td class="paramname">algo</td><td>Underlaying algorithm to use for hash computation. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status of initialization </dd></dl>
</div>
</div>
<a class="anchor" id="ga65d17b5c879f548b0c725d7be43d6415"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00260.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> DCP_HASH_Update </td>
<td>(</td>
<td class="paramtype">DCP_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="a00020.html#gae06d811ead112ae70d6c27e5f306268d">dcp_hash_ctx_t</a> *&#160;</td>
<td class="paramname"><em>ctx</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">size_t&#160;</td>
<td class="paramname"><em>inputSize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add data to current HASH. This can be called repeatedly with an arbitrary amount of data to be hashed. The functions blocks. If it returns kStatus_Success, the running hash has been updated (DCP has processed the input data), so the memory at the input pointer can be released back to system. The DCP context buffer is updated with the running hash and with all necessary information to support possible context switch.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">base</td><td>DCP peripheral base address </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">ctx</td><td>HASH context </td></tr>
<tr><td class="paramdir"></td><td class="paramname">input</td><td>Input data </td></tr>
<tr><td class="paramdir"></td><td class="paramname">inputSize</td><td>Size of input data in bytes </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status of the hash update operation </dd></dl>
</div>
</div>
<a class="anchor" id="ga7a3ed9d163c10e27d6d30f2ee9c7093f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00260.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> DCP_HASH_Finish </td>
<td>(</td>
<td class="paramtype">DCP_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="a00020.html#gae06d811ead112ae70d6c27e5f306268d">dcp_hash_ctx_t</a> *&#160;</td>
<td class="paramname"><em>ctx</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>outputSize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Outputs the final hash (computed by <a class="el" href="a00020.html#ga65d17b5c879f548b0c725d7be43d6415" title="Add data to current HASH. ">DCP_HASH_Update()</a>) and erases the context.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">base</td><td>DCP peripheral base address </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">ctx</td><td>Input hash context </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">output</td><td>Output hash data </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">outputSize</td><td>Optional parameter (can be passed as NULL). On function entry, it specifies the size of output[] buffer. On function return, it stores the number of updated output bytes. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status of the hash finish operation </dd></dl>
</div>
</div>
<a class="anchor" id="ga4f07a7b717483d2b760cd772bc1f6df7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00260.html#gaaabdaf7ee58ca7269bd4bf24efcde092">status_t</a> DCP_HASH </td>
<td>(</td>
<td class="paramtype">DCP_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="a00019.html#ga3a72807e47a0e99f3827c8ca5b299484">dcp_handle_t</a> *&#160;</td>
<td class="paramname"><em>handle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00020.html#ga1e4eb47c999a6c409f76b9017f2ee853">dcp_hash_algo_t</a>&#160;</td>
<td class="paramname"><em>algo</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">size_t&#160;</td>
<td class="paramname"><em>inputSize</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>outputSize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Perform the full SHA or CRC32 in one function call. The function is blocking.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">base</td><td>DCP peripheral base address </td></tr>
<tr><td class="paramdir"></td><td class="paramname">handle</td><td>Handle used for the request. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">algo</td><td>Underlaying algorithm to use for hash computation. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">input</td><td>Input data </td></tr>
<tr><td class="paramdir"></td><td class="paramname">inputSize</td><td>Size of input data in bytes </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">output</td><td>Output hash data </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">outputSize</td><td>Output parameter storing the size of the output hash in bytes </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status of the one call hash 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>