]> Git Repo - pico-vscode.git/blob - web/docs/group__hardware__sha256.html
Merge branch 'main' into main
[pico-vscode.git] / web / docs / group__hardware__sha256.html
1 <!-- HTML header for doxygen 1.8.20-->
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
4 <head>
5         <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6         <meta http-equiv="X-UA-Compatible" content="IE=9"/>
7         <meta name="generator" content="Doxygen 1.9.4"/>
8         <meta name="viewport" content="width=device-width, initial-scale=1"/>
9         <title>Raspberry Pi Pico SDK: hardware_sha256</title>
10         <!-- <link href="tabs.css" rel="stylesheet" type="text/css"/> -->
11         <script type="text/javascript" src="jquery.js"></script>
12         <script type="text/javascript" src="dynsections.js"></script>
13         <link href="navtree.css" rel="stylesheet" type="text/css"/>
14 <script type="text/javascript" src="resize.js"></script>
15 <script type="text/javascript" src="navtreedata.js"></script>
16 <script type="text/javascript" src="navtree.js"></script>
17         <link href="search/search.css" rel="stylesheet" type="text/css"/>
18 <script type="text/javascript" src="search/searchdata.js"></script>
19 <script type="text/javascript" src="search/search.js"></script>
20     <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
21         <link href="doxygen.css" rel="stylesheet" type="text/css" />
22         <link href="normalise.css" rel="stylesheet" type="text/css"/>
23 <link href="main.css" rel="stylesheet" type="text/css"/>
24 <link href="styles.css" rel="stylesheet" type="text/css"/>
25 </head>
26 <body>
27         <div class="navigation-mobile">
28                 <div class="logo--mobile">
29                         <a href="/"><img src="logo-mobile.svg" alt="Raspberry Pi"></a>
30                 </div>
31                 <div class="navigation-toggle">
32                         <span class="line-1"></span>
33                         <span class="line-2">
34                                 <p>Menu Toggle</p>
35                         </span>
36                         <span class="line-3"></span>
37                 </div>
38         </div>
39         <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
40                 <div class="logo">
41                         <a href="index.html"> <img src="logo.svg" alt="Raspberry Pi"></a>
42                         <span style="display: inline-block; margin-top: 10px;">
43                                 v2.0.0
44                         </span>
45                 </div>
46                 <div class="navigation-footer">
47                         <img src="logo-mobile.svg" alt="Raspberry Pi">
48                         <a href="https://www.raspberrypi.com/" target="_blank">By Raspberry Pi Ltd</a>
49                 </div>
50 <!--            <div class="search">
51                         <form>
52                                 <input type="search" name="search" id="search" placeholder="Search">
53                                 <input type="submit" value="Search">
54                         </form>
55                 </div> -->
56 <!-- Generated by Doxygen 1.9.4 -->
57 <script type="text/javascript">
58 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
59 var searchBox = new SearchBox("searchBox", "search",'Search','.html');
60 /* @license-end */
61 </script>
62 <script type="text/javascript" src="menudata.js"></script>
63 <script type="text/javascript" src="menu.js"></script>
64 <script type="text/javascript">
65 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
66 $(function() {
67   initMenu('',true,false,'search.php','Search');
68   $(document).ready(function() { init_search(); });
69 });
70 /* @license-end */
71 </script>
72 <div id="main-nav"></div>
73 </div><!-- top -->
74 <div id="side-nav" class="ui-resizable side-nav-resizable">
75   <div id="nav-tree">
76     <div id="nav-tree-contents">
77       <div id="nav-sync" class="sync"></div>
78     </div>
79   </div>
80   <div id="splitbar" style="-moz-user-select:none;" 
81        class="ui-resizable-handle">
82   </div>
83 </div>
84 <script type="text/javascript">
85 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
86 $(document).ready(function(){initNavTree('group__hardware__sha256.html',''); initResizable(); });
87 /* @license-end */
88 </script>
89 <div id="doc-content">
90 <!-- window showing the filter options -->
91 <div id="MSearchSelectWindow"
92      onmouseover="return searchBox.OnSearchSelectShow()"
93      onmouseout="return searchBox.OnSearchSelectHide()"
94      onkeydown="return searchBox.OnSearchSelectKey(event)">
95 </div>
96
97 <!-- iframe showing the search results (closed by default) -->
98 <div id="MSearchResultsWindow">
99 <iframe src="javascript:void(0)" frameborder="0" 
100         name="MSearchResults" id="MSearchResults">
101 </iframe>
102 </div>
103
104 <div class="header">
105   <div class="summary">
106 <a href="#nested-classes">Data Structures</a> &#124;
107 <a href="#define-members">Macros</a> &#124;
108 <a href="#enum-members">Enumerations</a> &#124;
109 <a href="#func-members">Functions</a>  </div>
110   <div class="headertitle"><div class="title">hardware_sha256<div class="ingroups"><a class="el" href="group__hardware.html">Hardware APIs</a></div></div></div>
111 </div><!--header-->
112 <div class="contents">
113
114 <p>Hardware SHA-256 Accelerator API.  
115 <a href="#details">More...</a></p>
116 <table class="memberdecls">
117 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
118 Data Structures</h2></td></tr>
119 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionsha256__result__t.html">sha256_result_t</a></td></tr>
120 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">SHA-256 result generated by the API.  <a href="unionsha256__result__t.html#details">More...</a><br /></td></tr>
121 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
122 </table><table class="memberdecls">
123 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
124 Macros</h2></td></tr>
125 <tr class="memitem:ga08a18381a4c5a7c9f7d0d1b6550621a3"><td class="memItemLeft" align="right" valign="top"><a id="ga08a18381a4c5a7c9f7d0d1b6550621a3" name="ga08a18381a4c5a7c9f7d0d1b6550621a3"></a>
126 #define&#160;</td><td class="memItemRight" valign="bottom"><b>SHA256_RESULT_BYTES</b>&#160;&#160;&#160;32</td></tr>
127 <tr class="memdesc:ga08a18381a4c5a7c9f7d0d1b6550621a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of a sha256 result in bytes. <br /></td></tr>
128 <tr class="separator:ga08a18381a4c5a7c9f7d0d1b6550621a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
129 </table><table class="memberdecls">
130 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
131 Enumerations</h2></td></tr>
132 <tr class="memitem:gaaf3089af3667088256de5d352973d5e6"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__sha256.html#gaaf3089af3667088256de5d352973d5e6">sha256_endianness</a> { <a class="el" href="group__hardware__sha256.html#ggaaf3089af3667088256de5d352973d5e6af7be52b37d04b7ffbd9ba69ba6cad8fd">SHA256_LITTLE_ENDIAN</a>
133 , <a class="el" href="group__hardware__sha256.html#ggaaf3089af3667088256de5d352973d5e6a9ed40fa208beaabfc2fc5b8edbd652c1">SHA256_BIG_ENDIAN</a>
134  }</td></tr>
135 <tr class="memdesc:gaaf3089af3667088256de5d352973d5e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">SHA-256 endianness definition used in the API.  <a href="group__hardware__sha256.html#gaaf3089af3667088256de5d352973d5e6">More...</a><br /></td></tr>
136 <tr class="separator:gaaf3089af3667088256de5d352973d5e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
137 </table><table class="memberdecls">
138 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
139 Functions</h2></td></tr>
140 <tr class="memitem:ga4f35e6d85d8991216e9c1edd7e682cc7"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__sha256.html#ga4f35e6d85d8991216e9c1edd7e682cc7">sha256_set_dma_size</a> (uint size_in_bytes)</td></tr>
141 <tr class="memdesc:ga4f35e6d85d8991216e9c1edd7e682cc7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configure the correct DMA data size.  <a href="group__hardware__sha256.html#ga4f35e6d85d8991216e9c1edd7e682cc7">More...</a><br /></td></tr>
142 <tr class="separator:ga4f35e6d85d8991216e9c1edd7e682cc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
143 <tr class="memitem:ga21bca5a93ccad014cc890e734c9436eb"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__sha256.html#ga21bca5a93ccad014cc890e734c9436eb">sha256_set_bswap</a> (bool swap)</td></tr>
144 <tr class="memdesc:ga21bca5a93ccad014cc890e734c9436eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable or disable byte swapping of 32-bit values.  <a href="group__hardware__sha256.html#ga21bca5a93ccad014cc890e734c9436eb">More...</a><br /></td></tr>
145 <tr class="separator:ga21bca5a93ccad014cc890e734c9436eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
146 <tr class="memitem:ga327d4bf2af7a8291cc402c569392b4d7"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__sha256.html#ga327d4bf2af7a8291cc402c569392b4d7">sha256_start</a> (void)</td></tr>
147 <tr class="memdesc:ga327d4bf2af7a8291cc402c569392b4d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepare the hardware for a new checksum.  <a href="group__hardware__sha256.html#ga327d4bf2af7a8291cc402c569392b4d7">More...</a><br /></td></tr>
148 <tr class="separator:ga327d4bf2af7a8291cc402c569392b4d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
149 <tr class="memitem:ga7e4f6ab4a7738c38d094ecd4c5ee9839"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__sha256.html#ga7e4f6ab4a7738c38d094ecd4c5ee9839">sha256_is_sum_valid</a> (void)</td></tr>
150 <tr class="memdesc:ga7e4f6ab4a7738c38d094ecd4c5ee9839"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if a valid checksum has been calculated.  <a href="group__hardware__sha256.html#ga7e4f6ab4a7738c38d094ecd4c5ee9839">More...</a><br /></td></tr>
151 <tr class="separator:ga7e4f6ab4a7738c38d094ecd4c5ee9839"><td class="memSeparator" colspan="2">&#160;</td></tr>
152 <tr class="memitem:ga586dc580abe393a0eb4af052da4f9050"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__sha256.html#ga586dc580abe393a0eb4af052da4f9050">sha256_is_ready</a> (void)</td></tr>
153 <tr class="memdesc:ga586dc580abe393a0eb4af052da4f9050"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if a the hardware is ready to accept more data.  <a href="group__hardware__sha256.html#ga586dc580abe393a0eb4af052da4f9050">More...</a><br /></td></tr>
154 <tr class="separator:ga586dc580abe393a0eb4af052da4f9050"><td class="memSeparator" colspan="2">&#160;</td></tr>
155 <tr class="memitem:ga98114068a397971354cd24ae75d051a6"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__sha256.html#ga98114068a397971354cd24ae75d051a6">sha256_wait_valid_blocking</a> (void)</td></tr>
156 <tr class="memdesc:ga98114068a397971354cd24ae75d051a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait until the checksum is valid.  <a href="group__hardware__sha256.html#ga98114068a397971354cd24ae75d051a6">More...</a><br /></td></tr>
157 <tr class="separator:ga98114068a397971354cd24ae75d051a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
158 <tr class="memitem:gaab29e83e6d914d262e9aaf13ed34f06e"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__sha256.html#gaab29e83e6d914d262e9aaf13ed34f06e">sha256_wait_ready_blocking</a> (void)</td></tr>
159 <tr class="memdesc:gaab29e83e6d914d262e9aaf13ed34f06e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wait until the hardware is ready to accept more data.  <a href="group__hardware__sha256.html#gaab29e83e6d914d262e9aaf13ed34f06e">More...</a><br /></td></tr>
160 <tr class="separator:gaab29e83e6d914d262e9aaf13ed34f06e"><td class="memSeparator" colspan="2">&#160;</td></tr>
161 <tr class="memitem:ga065f30a83c4d96ea85712a0e22f7a62e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__sha256.html#ga065f30a83c4d96ea85712a0e22f7a62e">sha256_get_result</a> (<a class="el" href="unionsha256__result__t.html">sha256_result_t</a> *out, enum <a class="el" href="group__hardware__sha256.html#gaaf3089af3667088256de5d352973d5e6">sha256_endianness</a> endianness)</td></tr>
162 <tr class="memdesc:ga065f30a83c4d96ea85712a0e22f7a62e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the checksum result.  <a href="group__hardware__sha256.html#ga065f30a83c4d96ea85712a0e22f7a62e">More...</a><br /></td></tr>
163 <tr class="separator:ga065f30a83c4d96ea85712a0e22f7a62e"><td class="memSeparator" colspan="2">&#160;</td></tr>
164 <tr class="memitem:gab26b08aabc454e46859d38acdb9afb63"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__sha256.html#gab26b08aabc454e46859d38acdb9afb63">sha256_err_not_ready</a> (void)</td></tr>
165 <tr class="memdesc:gab26b08aabc454e46859d38acdb9afb63"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if data was written before the hardware was ready.  <a href="group__hardware__sha256.html#gab26b08aabc454e46859d38acdb9afb63">More...</a><br /></td></tr>
166 <tr class="separator:gab26b08aabc454e46859d38acdb9afb63"><td class="memSeparator" colspan="2">&#160;</td></tr>
167 <tr class="memitem:gaccd81a57687cf83726d87b5da4e63551"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__sha256.html#gaccd81a57687cf83726d87b5da4e63551">sha256_err_not_ready_clear</a> (void)</td></tr>
168 <tr class="memdesc:gaccd81a57687cf83726d87b5da4e63551"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the "not ready" error condition.  <a href="group__hardware__sha256.html#gaccd81a57687cf83726d87b5da4e63551">More...</a><br /></td></tr>
169 <tr class="separator:gaccd81a57687cf83726d87b5da4e63551"><td class="memSeparator" colspan="2">&#160;</td></tr>
170 <tr class="memitem:gac7b585e60910cf0e1d927a0824cd0fe1"><td class="memItemLeft" align="right" valign="top">static volatile void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__sha256.html#gac7b585e60910cf0e1d927a0824cd0fe1">sha256_get_write_addr</a> (void)</td></tr>
171 <tr class="memdesc:gac7b585e60910cf0e1d927a0824cd0fe1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Address to write the data to be hashed.  <a href="group__hardware__sha256.html#gac7b585e60910cf0e1d927a0824cd0fe1">More...</a><br /></td></tr>
172 <tr class="separator:gac7b585e60910cf0e1d927a0824cd0fe1"><td class="memSeparator" colspan="2">&#160;</td></tr>
173 <tr class="memitem:ga7d391fa299a4e4f91c591c2e27c82295"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__sha256.html#ga7d391fa299a4e4f91c591c2e27c82295">sha256_put_word</a> (uint32_t word)</td></tr>
174 <tr class="memdesc:ga7d391fa299a4e4f91c591c2e27c82295"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write one 32bit word of data to the SHA-256 hardware.  <a href="group__hardware__sha256.html#ga7d391fa299a4e4f91c591c2e27c82295">More...</a><br /></td></tr>
175 <tr class="separator:ga7d391fa299a4e4f91c591c2e27c82295"><td class="memSeparator" colspan="2">&#160;</td></tr>
176 <tr class="memitem:gaa78f58e44c56c61c3e24c119923f28d4"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__sha256.html#gaa78f58e44c56c61c3e24c119923f28d4">sha256_put_byte</a> (uint8_t b)</td></tr>
177 <tr class="memdesc:gaa78f58e44c56c61c3e24c119923f28d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write one byte of data to the SHA-256 hardware.  <a href="group__hardware__sha256.html#gaa78f58e44c56c61c3e24c119923f28d4">More...</a><br /></td></tr>
178 <tr class="separator:gaa78f58e44c56c61c3e24c119923f28d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
179 </table>
180 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
181 <p >Hardware SHA-256 Accelerator API. </p>
182 <p >RP2350 is equipped with an implementation of the SHA-256 hash algorithm. The hardware should first be configured by calling the <a class="el" href="group__hardware__sha256.html#ga4f35e6d85d8991216e9c1edd7e682cc7">sha256_set_dma_size</a> and <a class="el" href="group__hardware__sha256.html#ga21bca5a93ccad014cc890e734c9436eb">sha256_set_bswap</a> functions. To generate a new hash the hardware should first be initialised by calling <a class="el" href="group__hardware__sha256.html#ga327d4bf2af7a8291cc402c569392b4d7">sha256_start</a>. The hardware is ready to accept data when <a class="el" href="group__hardware__sha256.html#ga586dc580abe393a0eb4af052da4f9050">sha256_is_ready</a> returns true, at which point the data to be hashed can be written to the address returned by <a class="el" href="group__hardware__sha256.html#gac7b585e60910cf0e1d927a0824cd0fe1">sha256_get_write_addr</a>. The hardware requires 64 bytes to be written in one go or else <a class="el" href="group__hardware__sha256.html#gab26b08aabc454e46859d38acdb9afb63">sha256_err_not_ready</a> will indicate an error and the hashing process must be restarted. <a class="el" href="group__hardware__sha256.html#ga7e4f6ab4a7738c38d094ecd4c5ee9839">sha256_is_sum_valid</a> will return true when there is a valid checksum result which can be retrieved by calling <a class="el" href="group__hardware__sha256.html#ga065f30a83c4d96ea85712a0e22f7a62e">sha256_get_result</a>. </p>
183 <h2 class="groupheader">Enumeration Type Documentation</h2>
184 <a id="gaaf3089af3667088256de5d352973d5e6" name="gaaf3089af3667088256de5d352973d5e6"></a>
185 <h2 class="memtitle"><span class="permalink"><a href="#gaaf3089af3667088256de5d352973d5e6">&#9670;&nbsp;</a></span>sha256_endianness</h2>
186
187 <div class="memitem">
188 <div class="memproto">
189       <table class="memname">
190         <tr>
191           <td class="memname">enum <a class="el" href="group__hardware__sha256.html#gaaf3089af3667088256de5d352973d5e6">sha256_endianness</a></td>
192         </tr>
193       </table>
194 </div><div class="memdoc">
195
196 <p>SHA-256 endianness definition used in the API. </p>
197 <table class="fieldtable">
198 <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ggaaf3089af3667088256de5d352973d5e6af7be52b37d04b7ffbd9ba69ba6cad8fd" name="ggaaf3089af3667088256de5d352973d5e6af7be52b37d04b7ffbd9ba69ba6cad8fd"></a>SHA256_LITTLE_ENDIAN&#160;</td><td class="fielddoc"><p >Little Endian. </p>
199 </td></tr>
200 <tr><td class="fieldname"><a id="ggaaf3089af3667088256de5d352973d5e6a9ed40fa208beaabfc2fc5b8edbd652c1" name="ggaaf3089af3667088256de5d352973d5e6a9ed40fa208beaabfc2fc5b8edbd652c1"></a>SHA256_BIG_ENDIAN&#160;</td><td class="fielddoc"><p >Big Endian. </p>
201 </td></tr>
202 </table>
203
204 </div>
205 </div>
206 <h2 class="groupheader">Function Documentation</h2>
207 <a id="gab26b08aabc454e46859d38acdb9afb63" name="gab26b08aabc454e46859d38acdb9afb63"></a>
208 <h2 class="memtitle"><span class="permalink"><a href="#gab26b08aabc454e46859d38acdb9afb63">&#9670;&nbsp;</a></span>sha256_err_not_ready()</h2>
209
210 <div class="memitem">
211 <div class="memproto">
212 <table class="mlabels">
213   <tr>
214   <td class="mlabels-left">
215       <table class="memname">
216         <tr>
217           <td class="memname">static bool sha256_err_not_ready </td>
218           <td>(</td>
219           <td class="paramtype">void&#160;</td>
220           <td class="paramname"></td><td>)</td>
221           <td></td>
222         </tr>
223       </table>
224   </td>
225   <td class="mlabels-right">
226 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
227   </tr>
228 </table>
229 </div><div class="memdoc">
230
231 <p>Check if data was written before the hardware was ready. </p>
232 <p >Indicates if an error has occurred due to data being written when the hardware is not ready.</p>
233 <dl class="section return"><dt>Returns</dt><dd>True if data was written before the hardware was ready </dd></dl>
234
235 </div>
236 </div>
237 <a id="gaccd81a57687cf83726d87b5da4e63551" name="gaccd81a57687cf83726d87b5da4e63551"></a>
238 <h2 class="memtitle"><span class="permalink"><a href="#gaccd81a57687cf83726d87b5da4e63551">&#9670;&nbsp;</a></span>sha256_err_not_ready_clear()</h2>
239
240 <div class="memitem">
241 <div class="memproto">
242 <table class="mlabels">
243   <tr>
244   <td class="mlabels-left">
245       <table class="memname">
246         <tr>
247           <td class="memname">static void sha256_err_not_ready_clear </td>
248           <td>(</td>
249           <td class="paramtype">void&#160;</td>
250           <td class="paramname"></td><td>)</td>
251           <td></td>
252         </tr>
253       </table>
254   </td>
255   <td class="mlabels-right">
256 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
257   </tr>
258 </table>
259 </div><div class="memdoc">
260
261 <p>Clear the "not ready" error condition. </p>
262 <p >Resets the hardware if a "not ready" error condition is indicated. </p>
263
264 </div>
265 </div>
266 <a id="ga065f30a83c4d96ea85712a0e22f7a62e" name="ga065f30a83c4d96ea85712a0e22f7a62e"></a>
267 <h2 class="memtitle"><span class="permalink"><a href="#ga065f30a83c4d96ea85712a0e22f7a62e">&#9670;&nbsp;</a></span>sha256_get_result()</h2>
268
269 <div class="memitem">
270 <div class="memproto">
271       <table class="memname">
272         <tr>
273           <td class="memname">void sha256_get_result </td>
274           <td>(</td>
275           <td class="paramtype"><a class="el" href="unionsha256__result__t.html">sha256_result_t</a> *&#160;</td>
276           <td class="paramname"><em>out</em>, </td>
277         </tr>
278         <tr>
279           <td class="paramkey"></td>
280           <td></td>
281           <td class="paramtype">enum <a class="el" href="group__hardware__sha256.html#gaaf3089af3667088256de5d352973d5e6">sha256_endianness</a>&#160;</td>
282           <td class="paramname"><em>endianness</em>&#160;</td>
283         </tr>
284         <tr>
285           <td></td>
286           <td>)</td>
287           <td></td><td></td>
288         </tr>
289       </table>
290 </div><div class="memdoc">
291
292 <p>Get the checksum result. </p>
293 <p >Read the 32 byte result calculated by the hardware. Only valid if <a class="el" href="group__hardware__sha256.html#ga7e4f6ab4a7738c38d094ecd4c5ee9839">sha256_is_sum_valid</a> is True</p>
294 <dl class="params"><dt>Parameters</dt><dd>
295   <table class="params">
296     <tr><td class="paramname">out</td><td>The checksum result</td></tr>
297   </table>
298   </dd>
299 </dl>
300 <p>Copyright (c) 2024 Raspberry Pi (Trading) Ltd.</p>
301 <p >SPDX-License-Identifier: BSD-3-Clause </p>
302
303 </div>
304 </div>
305 <a id="gac7b585e60910cf0e1d927a0824cd0fe1" name="gac7b585e60910cf0e1d927a0824cd0fe1"></a>
306 <h2 class="memtitle"><span class="permalink"><a href="#gac7b585e60910cf0e1d927a0824cd0fe1">&#9670;&nbsp;</a></span>sha256_get_write_addr()</h2>
307
308 <div class="memitem">
309 <div class="memproto">
310 <table class="mlabels">
311   <tr>
312   <td class="mlabels-left">
313       <table class="memname">
314         <tr>
315           <td class="memname">static volatile void * sha256_get_write_addr </td>
316           <td>(</td>
317           <td class="paramtype">void&#160;</td>
318           <td class="paramname"></td><td>)</td>
319           <td></td>
320         </tr>
321       </table>
322   </td>
323   <td class="mlabels-right">
324 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
325   </tr>
326 </table>
327 </div><div class="memdoc">
328
329 <p>Address to write the data to be hashed. </p>
330 <p >Returns the hardware address where data to be hashed should be written</p>
331 <dl class="section return"><dt>Returns</dt><dd>Address to write data to be hashed </dd></dl>
332
333 </div>
334 </div>
335 <a id="ga586dc580abe393a0eb4af052da4f9050" name="ga586dc580abe393a0eb4af052da4f9050"></a>
336 <h2 class="memtitle"><span class="permalink"><a href="#ga586dc580abe393a0eb4af052da4f9050">&#9670;&nbsp;</a></span>sha256_is_ready()</h2>
337
338 <div class="memitem">
339 <div class="memproto">
340 <table class="mlabels">
341   <tr>
342   <td class="mlabels-left">
343       <table class="memname">
344         <tr>
345           <td class="memname">static bool sha256_is_ready </td>
346           <td>(</td>
347           <td class="paramtype">void&#160;</td>
348           <td class="paramname"></td><td>)</td>
349           <td></td>
350         </tr>
351       </table>
352   </td>
353   <td class="mlabels-right">
354 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
355   </tr>
356 </table>
357 </div><div class="memdoc">
358
359 <p>Check if a the hardware is ready to accept more data. </p>
360 <p >After writing 64 bytes of data to the hardware, it will be unable to accept more data for a time. Call this to check if the hardware is ready for more data to be written. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__sha256.html#gab26b08aabc454e46859d38acdb9afb63" title="Check if data was written before the hardware was ready.">sha256_err_not_ready</a></dd></dl>
361 <dl class="section return"><dt>Returns</dt><dd>True if the hardware is ready to receive more data </dd></dl>
362
363 </div>
364 </div>
365 <a id="ga7e4f6ab4a7738c38d094ecd4c5ee9839" name="ga7e4f6ab4a7738c38d094ecd4c5ee9839"></a>
366 <h2 class="memtitle"><span class="permalink"><a href="#ga7e4f6ab4a7738c38d094ecd4c5ee9839">&#9670;&nbsp;</a></span>sha256_is_sum_valid()</h2>
367
368 <div class="memitem">
369 <div class="memproto">
370 <table class="mlabels">
371   <tr>
372   <td class="mlabels-left">
373       <table class="memname">
374         <tr>
375           <td class="memname">static bool sha256_is_sum_valid </td>
376           <td>(</td>
377           <td class="paramtype">void&#160;</td>
378           <td class="paramname"></td><td>)</td>
379           <td></td>
380         </tr>
381       </table>
382   </td>
383   <td class="mlabels-right">
384 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
385   </tr>
386 </table>
387 </div><div class="memdoc">
388
389 <p>Check if a valid checksum has been calculated. </p>
390 <p >The checksum result will be invalid when data is first written to the hardware, and then once 64 bytes of data has been written it may take some time to complete the digest of the current block. This function can be used to determine when the checksum is valid.</p>
391 <dl class="section return"><dt>Returns</dt><dd>True if <a class="el" href="group__hardware__sha256.html#ga065f30a83c4d96ea85712a0e22f7a62e">sha256_get_result</a> would return a valid result </dd></dl>
392
393 </div>
394 </div>
395 <a id="gaa78f58e44c56c61c3e24c119923f28d4" name="gaa78f58e44c56c61c3e24c119923f28d4"></a>
396 <h2 class="memtitle"><span class="permalink"><a href="#gaa78f58e44c56c61c3e24c119923f28d4">&#9670;&nbsp;</a></span>sha256_put_byte()</h2>
397
398 <div class="memitem">
399 <div class="memproto">
400 <table class="mlabels">
401   <tr>
402   <td class="mlabels-left">
403       <table class="memname">
404         <tr>
405           <td class="memname">static void sha256_put_byte </td>
406           <td>(</td>
407           <td class="paramtype">uint8_t&#160;</td>
408           <td class="paramname"><em>b</em></td><td>)</td>
409           <td></td>
410         </tr>
411       </table>
412   </td>
413   <td class="mlabels-right">
414 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
415   </tr>
416 </table>
417 </div><div class="memdoc">
418
419 <p>Write one byte of data to the SHA-256 hardware. </p>
420 <dl class="params"><dt>Parameters</dt><dd>
421   <table class="params">
422     <tr><td class="paramname">b</td><td>data to write </td></tr>
423   </table>
424   </dd>
425 </dl>
426
427 </div>
428 </div>
429 <a id="ga7d391fa299a4e4f91c591c2e27c82295" name="ga7d391fa299a4e4f91c591c2e27c82295"></a>
430 <h2 class="memtitle"><span class="permalink"><a href="#ga7d391fa299a4e4f91c591c2e27c82295">&#9670;&nbsp;</a></span>sha256_put_word()</h2>
431
432 <div class="memitem">
433 <div class="memproto">
434 <table class="mlabels">
435   <tr>
436   <td class="mlabels-left">
437       <table class="memname">
438         <tr>
439           <td class="memname">static void sha256_put_word </td>
440           <td>(</td>
441           <td class="paramtype">uint32_t&#160;</td>
442           <td class="paramname"><em>word</em></td><td>)</td>
443           <td></td>
444         </tr>
445       </table>
446   </td>
447   <td class="mlabels-right">
448 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
449   </tr>
450 </table>
451 </div><div class="memdoc">
452
453 <p>Write one 32bit word of data to the SHA-256 hardware. </p>
454 <dl class="params"><dt>Parameters</dt><dd>
455   <table class="params">
456     <tr><td class="paramname">word</td><td>data to write </td></tr>
457   </table>
458   </dd>
459 </dl>
460
461 </div>
462 </div>
463 <a id="ga21bca5a93ccad014cc890e734c9436eb" name="ga21bca5a93ccad014cc890e734c9436eb"></a>
464 <h2 class="memtitle"><span class="permalink"><a href="#ga21bca5a93ccad014cc890e734c9436eb">&#9670;&nbsp;</a></span>sha256_set_bswap()</h2>
465
466 <div class="memitem">
467 <div class="memproto">
468 <table class="mlabels">
469   <tr>
470   <td class="mlabels-left">
471       <table class="memname">
472         <tr>
473           <td class="memname">static void sha256_set_bswap </td>
474           <td>(</td>
475           <td class="paramtype">bool&#160;</td>
476           <td class="paramname"><em>swap</em></td><td>)</td>
477           <td></td>
478         </tr>
479       </table>
480   </td>
481   <td class="mlabels-right">
482 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
483   </tr>
484 </table>
485 </div><div class="memdoc">
486
487 <p>Enable or disable byte swapping of 32-bit values. </p>
488 <p >The SHA256 algorithm expects bytes in big endian order, but the system bus deals with little endian data, so control is provided to convert little endian bus data to big endian internal data. This defaults to true</p>
489 <dl class="params"><dt>Parameters</dt><dd>
490   <table class="params">
491     <tr><td class="paramname">swap</td><td>false to disable byte swapping </td></tr>
492   </table>
493   </dd>
494 </dl>
495
496 </div>
497 </div>
498 <a id="ga4f35e6d85d8991216e9c1edd7e682cc7" name="ga4f35e6d85d8991216e9c1edd7e682cc7"></a>
499 <h2 class="memtitle"><span class="permalink"><a href="#ga4f35e6d85d8991216e9c1edd7e682cc7">&#9670;&nbsp;</a></span>sha256_set_dma_size()</h2>
500
501 <div class="memitem">
502 <div class="memproto">
503 <table class="mlabels">
504   <tr>
505   <td class="mlabels-left">
506       <table class="memname">
507         <tr>
508           <td class="memname">static void sha256_set_dma_size </td>
509           <td>(</td>
510           <td class="paramtype">uint&#160;</td>
511           <td class="paramname"><em>size_in_bytes</em></td><td>)</td>
512           <td></td>
513         </tr>
514       </table>
515   </td>
516   <td class="mlabels-right">
517 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
518   </tr>
519 </table>
520 </div><div class="memdoc">
521
522 <p>Configure the correct DMA data size. </p>
523 <p >This must be configured before the DMA channel is triggered and ensures the correct number of transfers is requested per block.</p>
524 <dl class="params"><dt>Parameters</dt><dd>
525   <table class="params">
526     <tr><td class="paramname">size_in_bytes</td><td>Size of DMA transfers, either 1, 2 or 4 bytes only. </td></tr>
527   </table>
528   </dd>
529 </dl>
530
531 </div>
532 </div>
533 <a id="ga327d4bf2af7a8291cc402c569392b4d7" name="ga327d4bf2af7a8291cc402c569392b4d7"></a>
534 <h2 class="memtitle"><span class="permalink"><a href="#ga327d4bf2af7a8291cc402c569392b4d7">&#9670;&nbsp;</a></span>sha256_start()</h2>
535
536 <div class="memitem">
537 <div class="memproto">
538 <table class="mlabels">
539   <tr>
540   <td class="mlabels-left">
541       <table class="memname">
542         <tr>
543           <td class="memname">static void sha256_start </td>
544           <td>(</td>
545           <td class="paramtype">void&#160;</td>
546           <td class="paramname"></td><td>)</td>
547           <td></td>
548         </tr>
549       </table>
550   </td>
551   <td class="mlabels-right">
552 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
553   </tr>
554 </table>
555 </div><div class="memdoc">
556
557 <p>Prepare the hardware for a new checksum. </p>
558 <p >Called to initialise the hardware before starting the checksum calculation </p>
559
560 </div>
561 </div>
562 <a id="gaab29e83e6d914d262e9aaf13ed34f06e" name="gaab29e83e6d914d262e9aaf13ed34f06e"></a>
563 <h2 class="memtitle"><span class="permalink"><a href="#gaab29e83e6d914d262e9aaf13ed34f06e">&#9670;&nbsp;</a></span>sha256_wait_ready_blocking()</h2>
564
565 <div class="memitem">
566 <div class="memproto">
567 <table class="mlabels">
568   <tr>
569   <td class="mlabels-left">
570       <table class="memname">
571         <tr>
572           <td class="memname">static void sha256_wait_ready_blocking </td>
573           <td>(</td>
574           <td class="paramtype">void&#160;</td>
575           <td class="paramname"></td><td>)</td>
576           <td></td>
577         </tr>
578       </table>
579   </td>
580   <td class="mlabels-right">
581 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
582   </tr>
583 </table>
584 </div><div class="memdoc">
585
586 <p>Wait until the hardware is ready to accept more data. </p>
587 <p >Before writing to the hardware, it's necessary to check it is ready to accept more data. This function waits until the hardware is ready to accept more data </p>
588
589 </div>
590 </div>
591 <a id="ga98114068a397971354cd24ae75d051a6" name="ga98114068a397971354cd24ae75d051a6"></a>
592 <h2 class="memtitle"><span class="permalink"><a href="#ga98114068a397971354cd24ae75d051a6">&#9670;&nbsp;</a></span>sha256_wait_valid_blocking()</h2>
593
594 <div class="memitem">
595 <div class="memproto">
596 <table class="mlabels">
597   <tr>
598   <td class="mlabels-left">
599       <table class="memname">
600         <tr>
601           <td class="memname">static void sha256_wait_valid_blocking </td>
602           <td>(</td>
603           <td class="paramtype">void&#160;</td>
604           <td class="paramname"></td><td>)</td>
605           <td></td>
606         </tr>
607       </table>
608   </td>
609   <td class="mlabels-right">
610 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
611   </tr>
612 </table>
613 </div><div class="memdoc">
614
615 <p>Wait until the checksum is valid. </p>
616 <p >When a multiple of 64 bytes of data has been written to the hardware, the checksum will be valid once the digest of the current block is complete. This function waits until when the checksum result is valid. </p>
617
618 </div>
619 </div>
620 </div><!-- contents -->
621 </div><!-- doc-content -->
622
623         <script src="main.js"></script>
624 </body>
625 </html>
This page took 0.061519 seconds and 4 git commands to generate.