1
0
mirror of https://github.com/taigrr/arduinolibs synced 2025-01-18 04:33:12 -08:00

Update docs

This commit is contained in:
Rhys Weatherley 2015-03-25 19:36:25 +10:00
parent fba6ac9417
commit efb2741e4a
306 changed files with 2931 additions and 1386 deletions

View File

@ -175,7 +175,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -175,7 +175,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -415,7 +415,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -206,7 +206,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -224,78 +224,97 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="classBLAKE2b.html#a917beae2ca6e9831a35717a526089e8a">reset</a>();</div> <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="classBLAKE2b.html#a917beae2ca6e9831a35717a526089e8a">reset</a>();</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;}</div> <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;}</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div> <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment">// Permutation on the message input state for BLAKE2b.</span></div> <div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classBLAKE2b.html#acb1ca4081c509d1c34b3aee465cd4494"> 165</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBLAKE2b.html#acb1ca4081c509d1c34b3aee465cd4494">BLAKE2b::resetHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen)</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> uint8_t sigma[12][16] PROGMEM = {</div> <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;{</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},</div> <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">formatHMACKey</a>(state.m, key, keyLen, 0x36);</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3},</div> <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; state.lengthLow += 128;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; {11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4},</div> <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; processChunk(0);</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8},</div> <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;}</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13},</div> <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9},</div> <div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classBLAKE2b.html#a29fafbba26e3c1d896b4d4c428f7d52a"> 172</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBLAKE2b.html#a29fafbba26e3c1d896b4d4c428f7d52a">BLAKE2b::finalizeHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen, <span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> hashLen)</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11},</div> <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;{</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10},</div> <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; uint8_t temp[64];</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5},</div> <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="classBLAKE2b.html#a0cd8146b7868bd0f4c24a3856f106d17">finalize</a>(temp, <span class="keyword">sizeof</span>(temp));</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0},</div> <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">formatHMACKey</a>(state.m, key, keyLen, 0x5C);</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},</div> <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; state.lengthLow += 128;</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; {14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3},</div> <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; processChunk(0);</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;};</div> <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="classBLAKE2b.html#a468e48c66ce1738e11c922d133135069">update</a>(temp, <span class="keyword">sizeof</span>(temp));</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div> <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="classBLAKE2b.html#a0cd8146b7868bd0f4c24a3856f106d17">finalize</a>(hash, hashLen);</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment">// Perform a BLAKE2b quarter round operation.</span></div> <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; clean(temp);</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="preprocessor">#define quarterRound(a, b, c, d, i) \</span></div> <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;}</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="preprocessor"> do { \</span></div> <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="preprocessor"> uint64_t _b = (b); \</span></div> <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment">// Permutation on the message input state for BLAKE2b.</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="preprocessor"> uint64_t _a = (a) + _b + state.m[pgm_read_byte(&amp;(sigma[index][2 * (i)]))]; \</span></div> <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> uint8_t sigma[12][16] PROGMEM = {</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="preprocessor"> uint64_t _d = rightRotate32_64((d) ^ _a); \</span></div> <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="preprocessor"> uint64_t _c = (c) + _d; \</span></div> <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; {14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3},</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="preprocessor"> _b = rightRotate24_64(_b ^ _c); \</span></div> <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4},</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="preprocessor"> _a += _b + state.m[pgm_read_byte(&amp;(sigma[index][2 * (i) + 1]))]; \</span></div> <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8},</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="preprocessor"> (d) = _d = rightRotate16_64(_d ^ _a); \</span></div> <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13},</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="preprocessor"> _c += _d; \</span></div> <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9},</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="preprocessor"> (a) = _a; \</span></div> <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11},</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="preprocessor"> (b) = rightRotate63_64(_b ^ _c); \</span></div> <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; {13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10},</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="preprocessor"> (c) = _c; \</span></div> <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5},</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="preprocessor"> } while (0)</span></div> <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; {10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0},</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="preprocessor"></span></div> <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="keywordtype">void</span> BLAKE2b::processChunk(uint64_t f0)</div> <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; {14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3},</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;{</div> <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;};</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; uint8_t index;</div> <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div> <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment">// Perform a BLAKE2b quarter round operation.</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="comment">// Byte-swap the message buffer into little-endian if necessary.</span></div> <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="preprocessor">#define quarterRound(a, b, c, d, i) \</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="preprocessor">#if !defined(CRYPTO_LITTLE_ENDIAN)</span></div> <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="preprocessor"> do { \</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">for</span> (index = 0; index &lt; 16; ++index)</div> <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="preprocessor"> uint64_t _b = (b); \</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; state.m[index] = le64toh(state.m[index]);</div> <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="preprocessor"> uint64_t _a = (a) + _b + state.m[pgm_read_byte(&amp;(sigma[index][2 * (i)]))]; \</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="preprocessor">#endif</span></div> <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="preprocessor"> uint64_t _d = rightRotate32_64((d) ^ _a); \</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="preprocessor"></span></div> <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="preprocessor"> uint64_t _c = (c) + _d; \</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="comment">// Format the block to be hashed.</span></div> <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="preprocessor"> _b = rightRotate24_64(_b ^ _c); \</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; memcpy(state.v, state.h, <span class="keyword">sizeof</span>(state.h));</div> <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="preprocessor"> _a += _b + state.m[pgm_read_byte(&amp;(sigma[index][2 * (i) + 1]))]; \</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; state.v[8] = BLAKE2b_IV0;</div> <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="preprocessor"> (d) = _d = rightRotate16_64(_d ^ _a); \</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; state.v[9] = BLAKE2b_IV1;</div> <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="preprocessor"> _c += _d; \</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; state.v[10] = BLAKE2b_IV2;</div> <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="preprocessor"> (a) = _a; \</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; state.v[11] = BLAKE2b_IV3;</div> <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="preprocessor"> (b) = rightRotate63_64(_b ^ _c); \</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; state.v[12] = BLAKE2b_IV4 ^ state.lengthLow;</div> <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="preprocessor"> (c) = _c; \</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; state.v[13] = BLAKE2b_IV5 ^ state.lengthHigh;</div> <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="preprocessor"> } while (0)</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; state.v[14] = BLAKE2b_IV6 ^ f0;</div> <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; state.v[15] = BLAKE2b_IV7;</div> <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="keywordtype">void</span> BLAKE2b::processChunk(uint64_t f0)</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div> <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;{</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="comment">// Perform the 12 BLAKE2b rounds.</span></div> <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; uint8_t index;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 12; ++index) {</div> <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="comment">// Column round.</span></div> <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="comment">// Byte-swap the message buffer into little-endian if necessary.</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; quarterRound(state.v[0], state.v[4], state.v[8], state.v[12], 0);</div> <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="preprocessor">#if !defined(CRYPTO_LITTLE_ENDIAN)</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; quarterRound(state.v[1], state.v[5], state.v[9], state.v[13], 1);</div> <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">for</span> (index = 0; index &lt; 16; ++index)</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; quarterRound(state.v[2], state.v[6], state.v[10], state.v[14], 2);</div> <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; state.m[index] = le64toh(state.m[index]);</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; quarterRound(state.v[3], state.v[7], state.v[11], state.v[15], 3);</div> <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div> <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="comment">// Diagonal round.</span></div> <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="comment">// Format the block to be hashed.</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; quarterRound(state.v[0], state.v[5], state.v[10], state.v[15], 4);</div> <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; memcpy(state.v, state.h, <span class="keyword">sizeof</span>(state.h));</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; quarterRound(state.v[1], state.v[6], state.v[11], state.v[12], 5);</div> <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; state.v[8] = BLAKE2b_IV0;</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; quarterRound(state.v[2], state.v[7], state.v[8], state.v[13], 6);</div> <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; state.v[9] = BLAKE2b_IV1;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; quarterRound(state.v[3], state.v[4], state.v[9], state.v[14], 7);</div> <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; state.v[10] = BLAKE2b_IV2;</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div> <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; state.v[11] = BLAKE2b_IV3;</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div> <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; state.v[12] = BLAKE2b_IV4 ^ state.lengthLow;</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="comment">// Combine the new and old hash values.</span></div> <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; state.v[13] = BLAKE2b_IV5 ^ state.lengthHigh;</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 8; ++index)</div> <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; state.v[14] = BLAKE2b_IV6 ^ f0;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; state.h[index] ^= (state.v[index] ^ state.v[index + 8]);</div> <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; state.v[15] = BLAKE2b_IV7;</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;}</div> <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment">// Perform the 12 BLAKE2b rounds.</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 12; ++index) {</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">// Column round.</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; quarterRound(state.v[0], state.v[4], state.v[8], state.v[12], 0);</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; quarterRound(state.v[1], state.v[5], state.v[9], state.v[13], 1);</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; quarterRound(state.v[2], state.v[6], state.v[10], state.v[14], 2);</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; quarterRound(state.v[3], state.v[7], state.v[11], state.v[15], 3);</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="comment">// Diagonal round.</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; quarterRound(state.v[0], state.v[5], state.v[10], state.v[15], 4);</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; quarterRound(state.v[1], state.v[6], state.v[11], state.v[12], 5);</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; quarterRound(state.v[2], state.v[7], state.v[8], state.v[13], 6);</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; quarterRound(state.v[3], state.v[4], state.v[9], state.v[14], 7);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="comment">// Combine the new and old hash values.</span></div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 8; ++index)</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; state.h[index] ^= (state.v[index] ^ state.v[index + 8]);</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;}</div>
<div class="ttc" id="classBLAKE2b_html_a0cd8146b7868bd0f4c24a3856f106d17"><div class="ttname"><a href="classBLAKE2b.html#a0cd8146b7868bd0f4c24a3856f106d17">BLAKE2b::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00143">BLAKE2b.cpp:143</a></div></div> <div class="ttc" id="classBLAKE2b_html_a0cd8146b7868bd0f4c24a3856f106d17"><div class="ttname"><a href="classBLAKE2b.html#a0cd8146b7868bd0f4c24a3856f106d17">BLAKE2b::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00143">BLAKE2b.cpp:143</a></div></div>
<div class="ttc" id="classBLAKE2b_html_a917beae2ca6e9831a35717a526089e8a"><div class="ttname"><a href="classBLAKE2b.html#a917beae2ca6e9831a35717a526089e8a">BLAKE2b::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00081">BLAKE2b.cpp:81</a></div></div> <div class="ttc" id="classBLAKE2b_html_a917beae2ca6e9831a35717a526089e8a"><div class="ttname"><a href="classBLAKE2b.html#a917beae2ca6e9831a35717a526089e8a">BLAKE2b::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00081">BLAKE2b.cpp:81</a></div></div>
<div class="ttc" id="classBLAKE2b_html_a21623759bd381285ebf7e75a00c9c8a9"><div class="ttname"><a href="classBLAKE2b.html#a21623759bd381285ebf7e75a00c9c8a9">BLAKE2b::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00159">BLAKE2b.cpp:159</a></div></div> <div class="ttc" id="classBLAKE2b_html_a21623759bd381285ebf7e75a00c9c8a9"><div class="ttname"><a href="classBLAKE2b.html#a21623759bd381285ebf7e75a00c9c8a9">BLAKE2b::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00159">BLAKE2b.cpp:159</a></div></div>
@ -305,10 +324,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="ttc" id="classBLAKE2b_html_ad0287d7284000ff236153e6afa0130f1"><div class="ttname"><a href="classBLAKE2b.html#ad0287d7284000ff236153e6afa0130f1">BLAKE2b::~BLAKE2b</a></div><div class="ttdeci">virtual ~BLAKE2b()</div><div class="ttdoc">Destroys this BLAKE2b hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00056">BLAKE2b.cpp:56</a></div></div> <div class="ttc" id="classBLAKE2b_html_ad0287d7284000ff236153e6afa0130f1"><div class="ttname"><a href="classBLAKE2b.html#ad0287d7284000ff236153e6afa0130f1">BLAKE2b::~BLAKE2b</a></div><div class="ttdeci">virtual ~BLAKE2b()</div><div class="ttdoc">Destroys this BLAKE2b hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00056">BLAKE2b.cpp:56</a></div></div>
<div class="ttc" id="classBLAKE2b_html_a468e48c66ce1738e11c922d133135069"><div class="ttname"><a href="classBLAKE2b.html#a468e48c66ce1738e11c922d133135069">BLAKE2b::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00118">BLAKE2b.cpp:118</a></div></div> <div class="ttc" id="classBLAKE2b_html_a468e48c66ce1738e11c922d133135069"><div class="ttname"><a href="classBLAKE2b.html#a468e48c66ce1738e11c922d133135069">BLAKE2b::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00118">BLAKE2b.cpp:118</a></div></div>
<div class="ttc" id="classBitmap_html_a5eeed27c176eb6e4a2c39ea83444e27d"><div class="ttname"><a href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d">Bitmap::data</a></div><div class="ttdeci">uint8_t * data()</div><div class="ttdoc">Returns a pointer to the start of the bitmap&#39;s data buffer. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00053">Bitmap.h:53</a></div></div> <div class="ttc" id="classBitmap_html_a5eeed27c176eb6e4a2c39ea83444e27d"><div class="ttname"><a href="classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d">Bitmap::data</a></div><div class="ttdeci">uint8_t * data()</div><div class="ttdoc">Returns a pointer to the start of the bitmap&#39;s data buffer. </div><div class="ttdef"><b>Definition:</b> <a href="Bitmap_8h_source.html#l00053">Bitmap.h:53</a></div></div>
<div class="ttc" id="classBLAKE2b_html_acb1ca4081c509d1c34b3aee465cd4494"><div class="ttname"><a href="classBLAKE2b.html#acb1ca4081c509d1c34b3aee465cd4494">BLAKE2b::resetHMAC</a></div><div class="ttdeci">void resetHMAC(const void *key, size_t keyLen)</div><div class="ttdoc">Resets the hash ready for a new HMAC hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00165">BLAKE2b.cpp:165</a></div></div>
<div class="ttc" id="classHash_html_ab6f40c9af91dc3d738d9fcce59af63cc"><div class="ttname"><a href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">Hash::formatHMACKey</a></div><div class="ttdeci">void formatHMACKey(void *block, const void *key, size_t len, uint8_t pad)</div><div class="ttdoc">Formats a HMAC key into a block. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8cpp_source.html#l00162">Hash.cpp:162</a></div></div>
<div class="ttc" id="classBLAKE2b_html_a29fafbba26e3c1d896b4d4c428f7d52a"><div class="ttname"><a href="classBLAKE2b.html#a29fafbba26e3c1d896b4d4c428f7d52a">BLAKE2b::finalizeHMAC</a></div><div class="ttdeci">void finalizeHMAC(const void *key, size_t keyLen, void *hash, size_t hashLen)</div><div class="ttdoc">Finalizes the HMAC hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00172">BLAKE2b.cpp:172</a></div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -131,20 +131,23 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div> <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBLAKE2b.html#a21623759bd381285ebf7e75a00c9c8a9">clear</a>();</div> <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBLAKE2b.html#a21623759bd381285ebf7e75a00c9c8a9">clear</a>();</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div> <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">private</span>:</div> <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBLAKE2b.html#acb1ca4081c509d1c34b3aee465cd4494">resetHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">struct </span>{</div> <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBLAKE2b.html#a29fafbba26e3c1d896b4d4c428f7d52a">finalizeHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen, <span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> hashLen);</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; uint64_t h[8];</div> <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; uint64_t m[16];</div> <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; uint64_t v[16];</div> <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; uint64_t lengthLow;</div> <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; uint64_t h[8];</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; uint64_t lengthHigh;</div> <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; uint64_t m[16];</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; uint8_t chunkSize;</div> <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; uint64_t v[16];</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; } state;</div> <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; uint64_t lengthLow;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div> <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; uint64_t lengthHigh;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">void</span> processChunk(uint64_t f0);</div> <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; uint8_t chunkSize;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;};</div> <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; } state;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div> <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#endif</span></div> <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">void</span> processChunk(uint64_t f0);</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;};</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="classBLAKE2b_html_a0cd8146b7868bd0f4c24a3856f106d17"><div class="ttname"><a href="classBLAKE2b.html#a0cd8146b7868bd0f4c24a3856f106d17">BLAKE2b::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00143">BLAKE2b.cpp:143</a></div></div> <div class="ttc" id="classBLAKE2b_html_a0cd8146b7868bd0f4c24a3856f106d17"><div class="ttname"><a href="classBLAKE2b.html#a0cd8146b7868bd0f4c24a3856f106d17">BLAKE2b::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00143">BLAKE2b.cpp:143</a></div></div>
<div class="ttc" id="classBLAKE2b_html_a917beae2ca6e9831a35717a526089e8a"><div class="ttname"><a href="classBLAKE2b.html#a917beae2ca6e9831a35717a526089e8a">BLAKE2b::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00081">BLAKE2b.cpp:81</a></div></div> <div class="ttc" id="classBLAKE2b_html_a917beae2ca6e9831a35717a526089e8a"><div class="ttname"><a href="classBLAKE2b.html#a917beae2ca6e9831a35717a526089e8a">BLAKE2b::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00081">BLAKE2b.cpp:81</a></div></div>
<div class="ttc" id="classBLAKE2b_html_a21623759bd381285ebf7e75a00c9c8a9"><div class="ttname"><a href="classBLAKE2b.html#a21623759bd381285ebf7e75a00c9c8a9">BLAKE2b::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00159">BLAKE2b.cpp:159</a></div></div> <div class="ttc" id="classBLAKE2b_html_a21623759bd381285ebf7e75a00c9c8a9"><div class="ttname"><a href="classBLAKE2b.html#a21623759bd381285ebf7e75a00c9c8a9">BLAKE2b::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00159">BLAKE2b.cpp:159</a></div></div>
@ -155,10 +158,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="ttc" id="classBLAKE2b_html_a7555de16f6918ab820170a7ed3098c89"><div class="ttname"><a href="classBLAKE2b.html#a7555de16f6918ab820170a7ed3098c89">BLAKE2b::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00061">BLAKE2b.cpp:61</a></div></div> <div class="ttc" id="classBLAKE2b_html_a7555de16f6918ab820170a7ed3098c89"><div class="ttname"><a href="classBLAKE2b.html#a7555de16f6918ab820170a7ed3098c89">BLAKE2b::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00061">BLAKE2b.cpp:61</a></div></div>
<div class="ttc" id="classBLAKE2b_html_ad0287d7284000ff236153e6afa0130f1"><div class="ttname"><a href="classBLAKE2b.html#ad0287d7284000ff236153e6afa0130f1">BLAKE2b::~BLAKE2b</a></div><div class="ttdeci">virtual ~BLAKE2b()</div><div class="ttdoc">Destroys this BLAKE2b hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00056">BLAKE2b.cpp:56</a></div></div> <div class="ttc" id="classBLAKE2b_html_ad0287d7284000ff236153e6afa0130f1"><div class="ttname"><a href="classBLAKE2b.html#ad0287d7284000ff236153e6afa0130f1">BLAKE2b::~BLAKE2b</a></div><div class="ttdeci">virtual ~BLAKE2b()</div><div class="ttdoc">Destroys this BLAKE2b hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00056">BLAKE2b.cpp:56</a></div></div>
<div class="ttc" id="classBLAKE2b_html_a468e48c66ce1738e11c922d133135069"><div class="ttname"><a href="classBLAKE2b.html#a468e48c66ce1738e11c922d133135069">BLAKE2b::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00118">BLAKE2b.cpp:118</a></div></div> <div class="ttc" id="classBLAKE2b_html_a468e48c66ce1738e11c922d133135069"><div class="ttname"><a href="classBLAKE2b.html#a468e48c66ce1738e11c922d133135069">BLAKE2b::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00118">BLAKE2b.cpp:118</a></div></div>
<div class="ttc" id="classBLAKE2b_html_acb1ca4081c509d1c34b3aee465cd4494"><div class="ttname"><a href="classBLAKE2b.html#acb1ca4081c509d1c34b3aee465cd4494">BLAKE2b::resetHMAC</a></div><div class="ttdeci">void resetHMAC(const void *key, size_t keyLen)</div><div class="ttdoc">Resets the hash ready for a new HMAC hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00165">BLAKE2b.cpp:165</a></div></div>
<div class="ttc" id="classBLAKE2b_html_a29fafbba26e3c1d896b4d4c428f7d52a"><div class="ttname"><a href="classBLAKE2b.html#a29fafbba26e3c1d896b4d4c428f7d52a">BLAKE2b::finalizeHMAC</a></div><div class="ttdeci">void finalizeHMAC(const void *key, size_t keyLen, void *hash, size_t hashLen)</div><div class="ttdoc">Finalizes the HMAC hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2b_8cpp_source.html#l00172">BLAKE2b.cpp:172</a></div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -219,88 +219,110 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classBLAKE2s.html#a778776d15316c182fdb2df5a89b3ca02">reset</a>();</div> <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classBLAKE2s.html#a778776d15316c182fdb2df5a89b3ca02">reset</a>();</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;}</div> <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;}</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div> <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment">// Permutation on the message input state for BLAKE2s.</span></div> <div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classBLAKE2s.html#a7f9745854704b34a508497105ca5e2fd"> 160</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBLAKE2s.html#a7f9745854704b34a508497105ca5e2fd">BLAKE2s::resetHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen)</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> uint8_t sigma[10][16] PROGMEM = {</div> <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;{</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},</div> <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">formatHMACKey</a>(state.m, key, keyLen, 0x36);</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3},</div> <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; state.length += 64;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4},</div> <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; processChunk(0);</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8},</div> <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;}</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13},</div> <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9},</div> <div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classBLAKE2s.html#a3f910f3bd48cc4a9c5330c31bcda31fc"> 167</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classBLAKE2s.html#a3f910f3bd48cc4a9c5330c31bcda31fc">BLAKE2s::finalizeHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen, <span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> hashLen)</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; {12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11},</div> <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;{</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; {13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10},</div> <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; uint8_t temp[32];</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5},</div> <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="classBLAKE2s.html#a751a3d772cbe1cd1dad83dbd09853b1b">finalize</a>(temp, <span class="keyword">sizeof</span>(temp));</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0}</div> <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">formatHMACKey</a>(state.m, key, keyLen, 0x5C);</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;};</div> <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; state.length += 64;</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div> <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; processChunk(0);</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment">// Perform a BLAKE2s quarter round operation.</span></div> <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="classBLAKE2s.html#aa192da2fa044b03cccaf11e87fdf9911">update</a>(temp, <span class="keyword">sizeof</span>(temp));</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="preprocessor">#define quarterRound(a, b, c, d, i) \</span></div> <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="classBLAKE2s.html#a751a3d772cbe1cd1dad83dbd09853b1b">finalize</a>(hash, hashLen);</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="preprocessor"> do { \</span></div> <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; clean(temp);</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="preprocessor"> uint32_t _b = (b); \</span></div> <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;}</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="preprocessor"> uint32_t _a = (a) + _b + state.m[pgm_read_byte(&amp;(sigma[index][2 * (i)]))]; \</span></div> <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="preprocessor"> uint32_t _d = rightRotate16((d) ^ _a); \</span></div> <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment">// Permutation on the message input state for BLAKE2s.</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="preprocessor"> uint32_t _c = (c) + _d; \</span></div> <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> uint8_t sigma[10][16] PROGMEM = {</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="preprocessor"> _b = rightRotate12(_b ^ _c); \</span></div> <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="preprocessor"> _a += _b + state.m[pgm_read_byte(&amp;(sigma[index][2 * (i) + 1]))]; \</span></div> <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3},</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="preprocessor"> (d) = _d = rightRotate8(_d ^ _a); \</span></div> <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4},</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="preprocessor"> _c += _d; \</span></div> <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8},</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="preprocessor"> (a) = _a; \</span></div> <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13},</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="preprocessor"> (b) = rightRotate7(_b ^ _c); \</span></div> <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9},</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="preprocessor"> (c) = _c; \</span></div> <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; {12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11},</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="preprocessor"> } while (0)</span></div> <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10},</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="preprocessor"></span></div> <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5},</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="keywordtype">void</span> BLAKE2s::processChunk(uint32_t f0)</div> <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; {10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0}</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;{</div> <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;};</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; uint8_t index;</div> <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div> <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment">// Perform a BLAKE2s quarter round operation.</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="comment">// Byte-swap the message buffer into little-endian if necessary.</span></div> <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="preprocessor">#define quarterRound(a, b, c, d, i) \</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="preprocessor">#if !defined(CRYPTO_LITTLE_ENDIAN)</span></div> <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="preprocessor"> do { \</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">for</span> (index = 0; index &lt; 16; ++index)</div> <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="preprocessor"> uint32_t _b = (b); \</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; state.m[index] = le32toh(state.m[index]);</div> <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="preprocessor"> uint32_t _a = (a) + _b + state.m[pgm_read_byte(&amp;(sigma[index][2 * (i)]))]; \</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="preprocessor">#endif</span></div> <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="preprocessor"> uint32_t _d = rightRotate16((d) ^ _a); \</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="preprocessor"></span></div> <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="preprocessor"> uint32_t _c = (c) + _d; \</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="comment">// Format the block to be hashed.</span></div> <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="preprocessor"> _b = rightRotate12(_b ^ _c); \</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; memcpy(state.v, state.h, <span class="keyword">sizeof</span>(state.h));</div> <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="preprocessor"> _a += _b + state.m[pgm_read_byte(&amp;(sigma[index][2 * (i) + 1]))]; \</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; state.v[8] = BLAKE2s_IV0;</div> <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="preprocessor"> (d) = _d = rightRotate8(_d ^ _a); \</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; state.v[9] = BLAKE2s_IV1;</div> <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="preprocessor"> _c += _d; \</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; state.v[10] = BLAKE2s_IV2;</div> <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="preprocessor"> (a) = _a; \</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; state.v[11] = BLAKE2s_IV3;</div> <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="preprocessor"> (b) = rightRotate7(_b ^ _c); \</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; state.v[12] = BLAKE2s_IV4 ^ (uint32_t)(state.length);</div> <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="preprocessor"> (c) = _c; \</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; state.v[13] = BLAKE2s_IV5 ^ (uint32_t)(state.length &gt;&gt; 32);</div> <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="preprocessor"> } while (0)</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; state.v[14] = BLAKE2s_IV6 ^ f0;</div> <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; state.v[15] = BLAKE2s_IV7;</div> <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="keywordtype">void</span> BLAKE2s::processChunk(uint32_t f0)</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div> <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;{</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// Perform the 10 BLAKE2s rounds.</span></div> <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; uint8_t index;</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 10; ++index) {</div> <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">// Column round.</span></div> <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">// Byte-swap the message buffer into little-endian if necessary.</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; quarterRound(state.v[0], state.v[4], state.v[8], state.v[12], 0);</div> <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="preprocessor">#if !defined(CRYPTO_LITTLE_ENDIAN)</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; quarterRound(state.v[1], state.v[5], state.v[9], state.v[13], 1);</div> <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">for</span> (index = 0; index &lt; 16; ++index)</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; quarterRound(state.v[2], state.v[6], state.v[10], state.v[14], 2);</div> <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; state.m[index] = le32toh(state.m[index]);</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; quarterRound(state.v[3], state.v[7], state.v[11], state.v[15], 3);</div> <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div> <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">// Diagonal round.</span></div> <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">// Format the block to be hashed.</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; quarterRound(state.v[0], state.v[5], state.v[10], state.v[15], 4);</div> <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; memcpy(state.v, state.h, <span class="keyword">sizeof</span>(state.h));</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; quarterRound(state.v[1], state.v[6], state.v[11], state.v[12], 5);</div> <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; state.v[8] = BLAKE2s_IV0;</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; quarterRound(state.v[2], state.v[7], state.v[8], state.v[13], 6);</div> <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; state.v[9] = BLAKE2s_IV1;</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; quarterRound(state.v[3], state.v[4], state.v[9], state.v[14], 7);</div> <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; state.v[10] = BLAKE2s_IV2;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div> <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; state.v[11] = BLAKE2s_IV3;</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div> <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; state.v[12] = BLAKE2s_IV4 ^ (uint32_t)(state.length);</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="comment">// Combine the new and old hash values.</span></div> <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; state.v[13] = BLAKE2s_IV5 ^ (uint32_t)(state.length &gt;&gt; 32);</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 8; ++index)</div> <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; state.v[14] = BLAKE2s_IV6 ^ f0;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; state.h[index] ^= (state.v[index] ^ state.v[index + 8]);</div> <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; state.v[15] = BLAKE2s_IV7;</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;}</div> <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="comment">// Perform the 10 BLAKE2s rounds.</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 10; ++index) {</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="comment">// Column round.</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; quarterRound(state.v[0], state.v[4], state.v[8], state.v[12], 0);</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; quarterRound(state.v[1], state.v[5], state.v[9], state.v[13], 1);</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; quarterRound(state.v[2], state.v[6], state.v[10], state.v[14], 2);</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; quarterRound(state.v[3], state.v[7], state.v[11], state.v[15], 3);</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// Diagonal round.</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; quarterRound(state.v[0], state.v[5], state.v[10], state.v[15], 4);</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; quarterRound(state.v[1], state.v[6], state.v[11], state.v[12], 5);</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; quarterRound(state.v[2], state.v[7], state.v[8], state.v[13], 6);</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; quarterRound(state.v[3], state.v[4], state.v[9], state.v[14], 7);</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="comment">// Combine the new and old hash values.</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 8; ++index)</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; state.h[index] ^= (state.v[index] ^ state.v[index + 8]);</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;}</div>
<div class="ttc" id="classBLAKE2s_html_a4b3187ecaa3d3c8febfbb40c0f779aa7"><div class="ttname"><a href="classBLAKE2s.html#a4b3187ecaa3d3c8febfbb40c0f779aa7">BLAKE2s::~BLAKE2s</a></div><div class="ttdeci">virtual ~BLAKE2s()</div><div class="ttdoc">Destroys this BLAKE2s hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00056">BLAKE2s.cpp:56</a></div></div> <div class="ttc" id="classBLAKE2s_html_a4b3187ecaa3d3c8febfbb40c0f779aa7"><div class="ttname"><a href="classBLAKE2s.html#a4b3187ecaa3d3c8febfbb40c0f779aa7">BLAKE2s::~BLAKE2s</a></div><div class="ttdeci">virtual ~BLAKE2s()</div><div class="ttdoc">Destroys this BLAKE2s hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00056">BLAKE2s.cpp:56</a></div></div>
<div class="ttc" id="classBLAKE2s_html_af9f50aac096f92ba27b1b2dd48df4c52"><div class="ttname"><a href="classBLAKE2s.html#af9f50aac096f92ba27b1b2dd48df4c52">BLAKE2s::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00061">BLAKE2s.cpp:61</a></div></div> <div class="ttc" id="classBLAKE2s_html_af9f50aac096f92ba27b1b2dd48df4c52"><div class="ttname"><a href="classBLAKE2s.html#af9f50aac096f92ba27b1b2dd48df4c52">BLAKE2s::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00061">BLAKE2s.cpp:61</a></div></div>
<div class="ttc" id="classBLAKE2s_html_a0848885f52df51dc53949d32a206e72d"><div class="ttname"><a href="classBLAKE2s.html#a0848885f52df51dc53949d32a206e72d">BLAKE2s::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00154">BLAKE2s.cpp:154</a></div></div> <div class="ttc" id="classBLAKE2s_html_a0848885f52df51dc53949d32a206e72d"><div class="ttname"><a href="classBLAKE2s.html#a0848885f52df51dc53949d32a206e72d">BLAKE2s::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00154">BLAKE2s.cpp:154</a></div></div>
<div class="ttc" id="classBLAKE2s_html_a778776d15316c182fdb2df5a89b3ca02"><div class="ttname"><a href="classBLAKE2s.html#a778776d15316c182fdb2df5a89b3ca02">BLAKE2s::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00081">BLAKE2s.cpp:81</a></div></div> <div class="ttc" id="classBLAKE2s_html_a778776d15316c182fdb2df5a89b3ca02"><div class="ttname"><a href="classBLAKE2s.html#a778776d15316c182fdb2df5a89b3ca02">BLAKE2s::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00081">BLAKE2s.cpp:81</a></div></div>
<div class="ttc" id="classBLAKE2s_html_a9b5403734c20a0591d72a98912e4a305"><div class="ttname"><a href="classBLAKE2s.html#a9b5403734c20a0591d72a98912e4a305">BLAKE2s::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00066">BLAKE2s.cpp:66</a></div></div> <div class="ttc" id="classBLAKE2s_html_a9b5403734c20a0591d72a98912e4a305"><div class="ttname"><a href="classBLAKE2s.html#a9b5403734c20a0591d72a98912e4a305">BLAKE2s::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00066">BLAKE2s.cpp:66</a></div></div>
<div class="ttc" id="classBLAKE2s_html_aa192da2fa044b03cccaf11e87fdf9911"><div class="ttname"><a href="classBLAKE2s.html#aa192da2fa044b03cccaf11e87fdf9911">BLAKE2s::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00116">BLAKE2s.cpp:116</a></div></div> <div class="ttc" id="classBLAKE2s_html_aa192da2fa044b03cccaf11e87fdf9911"><div class="ttname"><a href="classBLAKE2s.html#aa192da2fa044b03cccaf11e87fdf9911">BLAKE2s::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00116">BLAKE2s.cpp:116</a></div></div>
<div class="ttc" id="classBLAKE2s_html_a7f9745854704b34a508497105ca5e2fd"><div class="ttname"><a href="classBLAKE2s.html#a7f9745854704b34a508497105ca5e2fd">BLAKE2s::resetHMAC</a></div><div class="ttdeci">void resetHMAC(const void *key, size_t keyLen)</div><div class="ttdoc">Resets the hash ready for a new HMAC hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00160">BLAKE2s.cpp:160</a></div></div>
<div class="ttc" id="classBLAKE2s_html_a751a3d772cbe1cd1dad83dbd09853b1b"><div class="ttname"><a href="classBLAKE2s.html#a751a3d772cbe1cd1dad83dbd09853b1b">BLAKE2s::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00138">BLAKE2s.cpp:138</a></div></div> <div class="ttc" id="classBLAKE2s_html_a751a3d772cbe1cd1dad83dbd09853b1b"><div class="ttname"><a href="classBLAKE2s.html#a751a3d772cbe1cd1dad83dbd09853b1b">BLAKE2s::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00138">BLAKE2s.cpp:138</a></div></div>
<div class="ttc" id="classBLAKE2s_html_a3f910f3bd48cc4a9c5330c31bcda31fc"><div class="ttname"><a href="classBLAKE2s.html#a3f910f3bd48cc4a9c5330c31bcda31fc">BLAKE2s::finalizeHMAC</a></div><div class="ttdeci">void finalizeHMAC(const void *key, size_t keyLen, void *hash, size_t hashLen)</div><div class="ttdoc">Finalizes the HMAC hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00167">BLAKE2s.cpp:167</a></div></div>
<div class="ttc" id="classBLAKE2s_html_a7345f4e08c19d7a8c278282b46df21a2"><div class="ttname"><a href="classBLAKE2s.html#a7345f4e08c19d7a8c278282b46df21a2">BLAKE2s::BLAKE2s</a></div><div class="ttdeci">BLAKE2s()</div><div class="ttdoc">Constructs a BLAKE2s hash object. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00047">BLAKE2s.cpp:47</a></div></div> <div class="ttc" id="classBLAKE2s_html_a7345f4e08c19d7a8c278282b46df21a2"><div class="ttname"><a href="classBLAKE2s.html#a7345f4e08c19d7a8c278282b46df21a2">BLAKE2s::BLAKE2s</a></div><div class="ttdeci">BLAKE2s()</div><div class="ttdoc">Constructs a BLAKE2s hash object. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00047">BLAKE2s.cpp:47</a></div></div>
<div class="ttc" id="classHash_html_ab6f40c9af91dc3d738d9fcce59af63cc"><div class="ttname"><a href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">Hash::formatHMACKey</a></div><div class="ttdeci">void formatHMACKey(void *block, const void *key, size_t len, uint8_t pad)</div><div class="ttdoc">Formats a HMAC key into a block. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8cpp_source.html#l00162">Hash.cpp:162</a></div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -131,19 +131,22 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div> <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBLAKE2s.html#a0848885f52df51dc53949d32a206e72d">clear</a>();</div> <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBLAKE2s.html#a0848885f52df51dc53949d32a206e72d">clear</a>();</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div> <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">private</span>:</div> <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBLAKE2s.html#a7f9745854704b34a508497105ca5e2fd">resetHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">struct </span>{</div> <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classBLAKE2s.html#a3f910f3bd48cc4a9c5330c31bcda31fc">finalizeHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen, <span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> hashLen);</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; uint32_t h[8];</div> <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; uint32_t m[16];</div> <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; uint32_t v[16];</div> <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; uint64_t length;</div> <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; uint32_t h[8];</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; uint8_t chunkSize;</div> <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; uint32_t m[16];</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; } state;</div> <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; uint32_t v[16];</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div> <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; uint64_t length;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">void</span> processChunk(uint32_t f0);</div> <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; uint8_t chunkSize;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;};</div> <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; } state;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div> <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#endif</span></div> <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">void</span> processChunk(uint32_t f0);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;};</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="classBLAKE2s_html_a4b3187ecaa3d3c8febfbb40c0f779aa7"><div class="ttname"><a href="classBLAKE2s.html#a4b3187ecaa3d3c8febfbb40c0f779aa7">BLAKE2s::~BLAKE2s</a></div><div class="ttdeci">virtual ~BLAKE2s()</div><div class="ttdoc">Destroys this BLAKE2s hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00056">BLAKE2s.cpp:56</a></div></div> <div class="ttc" id="classBLAKE2s_html_a4b3187ecaa3d3c8febfbb40c0f779aa7"><div class="ttname"><a href="classBLAKE2s.html#a4b3187ecaa3d3c8febfbb40c0f779aa7">BLAKE2s::~BLAKE2s</a></div><div class="ttdeci">virtual ~BLAKE2s()</div><div class="ttdoc">Destroys this BLAKE2s hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00056">BLAKE2s.cpp:56</a></div></div>
<div class="ttc" id="classBLAKE2s_html_af9f50aac096f92ba27b1b2dd48df4c52"><div class="ttname"><a href="classBLAKE2s.html#af9f50aac096f92ba27b1b2dd48df4c52">BLAKE2s::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00061">BLAKE2s.cpp:61</a></div></div> <div class="ttc" id="classBLAKE2s_html_af9f50aac096f92ba27b1b2dd48df4c52"><div class="ttname"><a href="classBLAKE2s.html#af9f50aac096f92ba27b1b2dd48df4c52">BLAKE2s::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00061">BLAKE2s.cpp:61</a></div></div>
<div class="ttc" id="classBLAKE2s_html_a0848885f52df51dc53949d32a206e72d"><div class="ttname"><a href="classBLAKE2s.html#a0848885f52df51dc53949d32a206e72d">BLAKE2s::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00154">BLAKE2s.cpp:154</a></div></div> <div class="ttc" id="classBLAKE2s_html_a0848885f52df51dc53949d32a206e72d"><div class="ttname"><a href="classBLAKE2s.html#a0848885f52df51dc53949d32a206e72d">BLAKE2s::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00154">BLAKE2s.cpp:154</a></div></div>
@ -152,12 +155,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="ttc" id="classHash_html"><div class="ttname"><a href="classHash.html">Hash</a></div><div class="ttdoc">Abstract base class for cryptographic hash algorithms. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8h_source.html#l00029">Hash.h:29</a></div></div> <div class="ttc" id="classHash_html"><div class="ttname"><a href="classHash.html">Hash</a></div><div class="ttdoc">Abstract base class for cryptographic hash algorithms. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8h_source.html#l00029">Hash.h:29</a></div></div>
<div class="ttc" id="classBLAKE2s_html_aa192da2fa044b03cccaf11e87fdf9911"><div class="ttname"><a href="classBLAKE2s.html#aa192da2fa044b03cccaf11e87fdf9911">BLAKE2s::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00116">BLAKE2s.cpp:116</a></div></div> <div class="ttc" id="classBLAKE2s_html_aa192da2fa044b03cccaf11e87fdf9911"><div class="ttname"><a href="classBLAKE2s.html#aa192da2fa044b03cccaf11e87fdf9911">BLAKE2s::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00116">BLAKE2s.cpp:116</a></div></div>
<div class="ttc" id="classBLAKE2s_html"><div class="ttname"><a href="classBLAKE2s.html">BLAKE2s</a></div><div class="ttdoc">BLAKE2s hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8h_source.html#l00028">BLAKE2s.h:28</a></div></div> <div class="ttc" id="classBLAKE2s_html"><div class="ttname"><a href="classBLAKE2s.html">BLAKE2s</a></div><div class="ttdoc">BLAKE2s hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8h_source.html#l00028">BLAKE2s.h:28</a></div></div>
<div class="ttc" id="classBLAKE2s_html_a7f9745854704b34a508497105ca5e2fd"><div class="ttname"><a href="classBLAKE2s.html#a7f9745854704b34a508497105ca5e2fd">BLAKE2s::resetHMAC</a></div><div class="ttdeci">void resetHMAC(const void *key, size_t keyLen)</div><div class="ttdoc">Resets the hash ready for a new HMAC hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00160">BLAKE2s.cpp:160</a></div></div>
<div class="ttc" id="classBLAKE2s_html_a751a3d772cbe1cd1dad83dbd09853b1b"><div class="ttname"><a href="classBLAKE2s.html#a751a3d772cbe1cd1dad83dbd09853b1b">BLAKE2s::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00138">BLAKE2s.cpp:138</a></div></div> <div class="ttc" id="classBLAKE2s_html_a751a3d772cbe1cd1dad83dbd09853b1b"><div class="ttname"><a href="classBLAKE2s.html#a751a3d772cbe1cd1dad83dbd09853b1b">BLAKE2s::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00138">BLAKE2s.cpp:138</a></div></div>
<div class="ttc" id="classBLAKE2s_html_a3f910f3bd48cc4a9c5330c31bcda31fc"><div class="ttname"><a href="classBLAKE2s.html#a3f910f3bd48cc4a9c5330c31bcda31fc">BLAKE2s::finalizeHMAC</a></div><div class="ttdeci">void finalizeHMAC(const void *key, size_t keyLen, void *hash, size_t hashLen)</div><div class="ttdoc">Finalizes the HMAC hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00167">BLAKE2s.cpp:167</a></div></div>
<div class="ttc" id="classBLAKE2s_html_a7345f4e08c19d7a8c278282b46df21a2"><div class="ttname"><a href="classBLAKE2s.html#a7345f4e08c19d7a8c278282b46df21a2">BLAKE2s::BLAKE2s</a></div><div class="ttdeci">BLAKE2s()</div><div class="ttdoc">Constructs a BLAKE2s hash object. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00047">BLAKE2s.cpp:47</a></div></div> <div class="ttc" id="classBLAKE2s_html_a7345f4e08c19d7a8c278282b46df21a2"><div class="ttname"><a href="classBLAKE2s.html#a7345f4e08c19d7a8c278282b46df21a2">BLAKE2s::BLAKE2s</a></div><div class="ttdeci">BLAKE2s()</div><div class="ttdoc">Constructs a BLAKE2s hash object. </div><div class="ttdef"><b>Definition:</b> <a href="BLAKE2s_8cpp_source.html#l00047">BLAKE2s.cpp:47</a></div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -694,7 +694,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -271,7 +271,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -196,7 +196,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -157,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -202,7 +202,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -208,7 +208,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -233,7 +233,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -228,7 +228,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -175,7 +175,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -300,7 +300,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -163,7 +163,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -232,7 +232,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -148,7 +148,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -710,14 +710,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; }</div> <div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; }</div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;<span class="preprocessor">#endif</span></div> <div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;<span class="preprocessor"></span>}</div> <div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;<span class="preprocessor"></span>}</div>
<div class="ttc" id="classRNGClass_html_a418a833cf18198fd7e5d6dbd78c99c29"><div class="ttname"><a href="classRNGClass.html#a418a833cf18198fd7e5d6dbd78c99c29">RNGClass::rand</a></div><div class="ttdeci">void rand(uint8_t *data, size_t len)</div><div class="ttdoc">Generates random bytes into a caller-supplied buffer. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00277">RNG.cpp:277</a></div></div> <div class="ttc" id="classRNGClass_html_a418a833cf18198fd7e5d6dbd78c99c29"><div class="ttname"><a href="classRNGClass.html#a418a833cf18198fd7e5d6dbd78c99c29">RNGClass::rand</a></div><div class="ttdeci">void rand(uint8_t *data, size_t len)</div><div class="ttdoc">Generates random bytes into a caller-supplied buffer. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00297">RNG.cpp:297</a></div></div>
<div class="ttc" id="classCurve25519_html_a2e4b7dd83a019b32c76584c99bfda21a"><div class="ttname"><a href="classCurve25519.html#a2e4b7dd83a019b32c76584c99bfda21a">Curve25519::eval</a></div><div class="ttdeci">static bool eval(uint8_t result[32], const uint8_t s[32], const uint8_t x[32])</div><div class="ttdoc">Evaluates the raw Curve25519 function. </div><div class="ttdef"><b>Definition:</b> <a href="Curve25519_8cpp_source.html#l00068">Curve25519.cpp:68</a></div></div> <div class="ttc" id="classCurve25519_html_a2e4b7dd83a019b32c76584c99bfda21a"><div class="ttname"><a href="classCurve25519.html#a2e4b7dd83a019b32c76584c99bfda21a">Curve25519::eval</a></div><div class="ttdeci">static bool eval(uint8_t result[32], const uint8_t s[32], const uint8_t x[32])</div><div class="ttdoc">Evaluates the raw Curve25519 function. </div><div class="ttdef"><b>Definition:</b> <a href="Curve25519_8cpp_source.html#l00068">Curve25519.cpp:68</a></div></div>
<div class="ttc" id="classCurve25519_html_a2b6911583d17ea9a36bbbb40d58b3d89"><div class="ttname"><a href="classCurve25519.html#a2b6911583d17ea9a36bbbb40d58b3d89">Curve25519::dh1</a></div><div class="ttdeci">static void dh1(uint8_t k[32], uint8_t f[32])</div><div class="ttdoc">Performs phase 1 of a Diffie-Hellman key exchange using Curve25519. </div><div class="ttdef"><b>Definition:</b> <a href="Curve25519_8cpp_source.html#l00231">Curve25519.cpp:231</a></div></div> <div class="ttc" id="classCurve25519_html_a2b6911583d17ea9a36bbbb40d58b3d89"><div class="ttname"><a href="classCurve25519.html#a2b6911583d17ea9a36bbbb40d58b3d89">Curve25519::dh1</a></div><div class="ttdeci">static void dh1(uint8_t k[32], uint8_t f[32])</div><div class="ttdoc">Performs phase 1 of a Diffie-Hellman key exchange using Curve25519. </div><div class="ttdef"><b>Definition:</b> <a href="Curve25519_8cpp_source.html#l00231">Curve25519.cpp:231</a></div></div>
<div class="ttc" id="classCurve25519_html_a14022d6ac68ec691ffb0247275078ab9"><div class="ttname"><a href="classCurve25519.html#a14022d6ac68ec691ffb0247275078ab9">Curve25519::dh2</a></div><div class="ttdeci">static bool dh2(uint8_t k[32], uint8_t f[32])</div><div class="ttdoc">Performs phase 2 of a Diffie-Hellman key exchange using Curve25519. </div><div class="ttdef"><b>Definition:</b> <a href="Curve25519_8cpp_source.html#l00269">Curve25519.cpp:269</a></div></div> <div class="ttc" id="classCurve25519_html_a14022d6ac68ec691ffb0247275078ab9"><div class="ttname"><a href="classCurve25519.html#a14022d6ac68ec691ffb0247275078ab9">Curve25519::dh2</a></div><div class="ttdeci">static bool dh2(uint8_t k[32], uint8_t f[32])</div><div class="ttdoc">Performs phase 2 of a Diffie-Hellman key exchange using Curve25519. </div><div class="ttdef"><b>Definition:</b> <a href="Curve25519_8cpp_source.html#l00269">Curve25519.cpp:269</a></div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -188,7 +188,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -456,7 +456,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -170,7 +170,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -415,7 +415,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -575,7 +575,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -190,7 +190,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -257,7 +257,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -257,7 +257,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -257,7 +257,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -282,7 +282,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -186,7 +186,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -196,7 +196,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -164,7 +164,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -278,7 +278,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -111,21 +111,47 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> */</span></div> <div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div> <div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;Hash.h&quot;</span></div> <div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;Hash.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div> <div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classHash.html#af482880ad75b67a09d2dcb5e86244d80"> 35</a></span>&#160;<a class="code" href="classHash.html#af482880ad75b67a09d2dcb5e86244d80">Hash::Hash</a>()</div> <div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div> <div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classHash.html#af482880ad75b67a09d2dcb5e86244d80"> 36</a></span>&#160;<a class="code" href="classHash.html#af482880ad75b67a09d2dcb5e86244d80">Hash::Hash</a>()</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div> <div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div> <div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;}</div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classHash.html#a4e4b4797dda8678aaed058bae155813e"> 47</a></span>&#160;<a class="code" href="classHash.html#a4e4b4797dda8678aaed058bae155813e">Hash::~Hash</a>()</div> <div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div> <div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classHash.html#a4e4b4797dda8678aaed058bae155813e"> 48</a></span>&#160;<a class="code" href="classHash.html#a4e4b4797dda8678aaed058bae155813e">Hash::~Hash</a>()</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div> <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;{</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div> <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div>
<div class="ttc" id="classHash_html_af482880ad75b67a09d2dcb5e86244d80"><div class="ttname"><a href="classHash.html#af482880ad75b67a09d2dcb5e86244d80">Hash::Hash</a></div><div class="ttdeci">Hash()</div><div class="ttdoc">Constructs a new hash object. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8cpp_source.html#l00035">Hash.cpp:35</a></div></div> <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
<div class="ttc" id="classHash_html_a4e4b4797dda8678aaed058bae155813e"><div class="ttname"><a href="classHash.html#a4e4b4797dda8678aaed058bae155813e">Hash::~Hash</a></div><div class="ttdeci">virtual ~Hash()</div><div class="ttdoc">Destroys this hash object. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8cpp_source.html#l00047">Hash.cpp:47</a></div></div> <div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc"> 162</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">Hash::formatHMACKey</a>(<span class="keywordtype">void</span> *block, <span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> len, uint8_t pad)</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;{</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordtype">size_t</span> size = <a class="code" href="classHash.html#a4e4297812e3483410556830fe5d47bdf">blockSize</a>();</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="classHash.html#a7b94309acaa5f52386785fb780e5be61">reset</a>();</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">if</span> (len &lt;= size) {</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; memcpy(block, key, len);</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="classHash.html#aec9761ee427d122e7450de8df200265c">update</a>(key, len);</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; len = <a class="code" href="classHash.html#adcdd30de3e5ecaa2f798c0c5644d9ef8">hashSize</a>();</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="classHash.html#a09b3ccec22763fc86b1415695862977c">finalize</a>(block, len);</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="classHash.html#a7b94309acaa5f52386785fb780e5be61">reset</a>();</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; memset(block + len, pad, size - len);</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; uint8_t *b = (uint8_t *)block;</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">while</span> (len &gt; 0) {</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; *b++ ^= pad;</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; --len;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;}</div>
<div class="ttc" id="classHash_html_a4e4297812e3483410556830fe5d47bdf"><div class="ttname"><a href="classHash.html#a4e4297812e3483410556830fe5d47bdf">Hash::blockSize</a></div><div class="ttdeci">virtual size_t blockSize() const =0</div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div></div>
<div class="ttc" id="classHash_html_af482880ad75b67a09d2dcb5e86244d80"><div class="ttname"><a href="classHash.html#af482880ad75b67a09d2dcb5e86244d80">Hash::Hash</a></div><div class="ttdeci">Hash()</div><div class="ttdoc">Constructs a new hash object. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8cpp_source.html#l00036">Hash.cpp:36</a></div></div>
<div class="ttc" id="classHash_html_a7b94309acaa5f52386785fb780e5be61"><div class="ttname"><a href="classHash.html#a7b94309acaa5f52386785fb780e5be61">Hash::reset</a></div><div class="ttdeci">virtual void reset()=0</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div></div>
<div class="ttc" id="classHash_html_adcdd30de3e5ecaa2f798c0c5644d9ef8"><div class="ttname"><a href="classHash.html#adcdd30de3e5ecaa2f798c0c5644d9ef8">Hash::hashSize</a></div><div class="ttdeci">virtual size_t hashSize() const =0</div><div class="ttdoc">Size of the hash result from finalize(). </div></div>
<div class="ttc" id="classHash_html_a4e4b4797dda8678aaed058bae155813e"><div class="ttname"><a href="classHash.html#a4e4b4797dda8678aaed058bae155813e">Hash::~Hash</a></div><div class="ttdeci">virtual ~Hash()</div><div class="ttdoc">Destroys this hash object. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8cpp_source.html#l00048">Hash.cpp:48</a></div></div>
<div class="ttc" id="classHash_html_aec9761ee427d122e7450de8df200265c"><div class="ttname"><a href="classHash.html#aec9761ee427d122e7450de8df200265c">Hash::update</a></div><div class="ttdeci">virtual void update(const void *data, size_t len)=0</div><div class="ttdoc">Updates the hash with more data. </div></div>
<div class="ttc" id="classHash_html_ab6f40c9af91dc3d738d9fcce59af63cc"><div class="ttname"><a href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">Hash::formatHMACKey</a></div><div class="ttdeci">void formatHMACKey(void *block, const void *key, size_t len, uint8_t pad)</div><div class="ttdoc">Formats a HMAC key into a block. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8cpp_source.html#l00162">Hash.cpp:162</a></div></div>
<div class="ttc" id="classHash_html_a09b3ccec22763fc86b1415695862977c"><div class="ttname"><a href="classHash.html#a09b3ccec22763fc86b1415695862977c">Hash::finalize</a></div><div class="ttdeci">virtual void finalize(void *hash, size_t len)=0</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -130,22 +130,31 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHash.html#a09b3ccec22763fc86b1415695862977c">finalize</a>(<span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> len) = 0;</div> <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHash.html#a09b3ccec22763fc86b1415695862977c">finalize</a>(<span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> len) = 0;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div> <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHash.html#a4a959469433cd9348ab7f3ac6228bb34">clear</a>() = 0;</div> <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHash.html#a4a959469433cd9348ab7f3ac6228bb34">clear</a>() = 0;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;};</div> <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div> <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHash.html#adf50359c1f525af884721cc9034e7945">resetHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen) = 0;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#endif</span></div> <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHash.html#aab42fa5420cc0bda4321a3d3866cfd06">finalizeHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen, <span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> hashLen) = 0;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">formatHMACKey</a>(<span class="keywordtype">void</span> *block, <span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> len, uint8_t pad);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;};</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="classHash_html_a4e4297812e3483410556830fe5d47bdf"><div class="ttname"><a href="classHash.html#a4e4297812e3483410556830fe5d47bdf">Hash::blockSize</a></div><div class="ttdeci">virtual size_t blockSize() const =0</div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div></div> <div class="ttc" id="classHash_html_a4e4297812e3483410556830fe5d47bdf"><div class="ttname"><a href="classHash.html#a4e4297812e3483410556830fe5d47bdf">Hash::blockSize</a></div><div class="ttdeci">virtual size_t blockSize() const =0</div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div></div>
<div class="ttc" id="classHash_html_a4a959469433cd9348ab7f3ac6228bb34"><div class="ttname"><a href="classHash.html#a4a959469433cd9348ab7f3ac6228bb34">Hash::clear</a></div><div class="ttdeci">virtual void clear()=0</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div></div> <div class="ttc" id="classHash_html_a4a959469433cd9348ab7f3ac6228bb34"><div class="ttname"><a href="classHash.html#a4a959469433cd9348ab7f3ac6228bb34">Hash::clear</a></div><div class="ttdeci">virtual void clear()=0</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div></div>
<div class="ttc" id="classHash_html_af482880ad75b67a09d2dcb5e86244d80"><div class="ttname"><a href="classHash.html#af482880ad75b67a09d2dcb5e86244d80">Hash::Hash</a></div><div class="ttdeci">Hash()</div><div class="ttdoc">Constructs a new hash object. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8cpp_source.html#l00035">Hash.cpp:35</a></div></div> <div class="ttc" id="classHash_html_af482880ad75b67a09d2dcb5e86244d80"><div class="ttname"><a href="classHash.html#af482880ad75b67a09d2dcb5e86244d80">Hash::Hash</a></div><div class="ttdeci">Hash()</div><div class="ttdoc">Constructs a new hash object. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8cpp_source.html#l00036">Hash.cpp:36</a></div></div>
<div class="ttc" id="classHash_html"><div class="ttname"><a href="classHash.html">Hash</a></div><div class="ttdoc">Abstract base class for cryptographic hash algorithms. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8h_source.html#l00029">Hash.h:29</a></div></div> <div class="ttc" id="classHash_html"><div class="ttname"><a href="classHash.html">Hash</a></div><div class="ttdoc">Abstract base class for cryptographic hash algorithms. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8h_source.html#l00029">Hash.h:29</a></div></div>
<div class="ttc" id="classHash_html_aab42fa5420cc0bda4321a3d3866cfd06"><div class="ttname"><a href="classHash.html#aab42fa5420cc0bda4321a3d3866cfd06">Hash::finalizeHMAC</a></div><div class="ttdeci">virtual void finalizeHMAC(const void *key, size_t keyLen, void *hash, size_t hashLen)=0</div><div class="ttdoc">Finalizes the HMAC hashing process and returns the hash. </div></div>
<div class="ttc" id="classHash_html_a7b94309acaa5f52386785fb780e5be61"><div class="ttname"><a href="classHash.html#a7b94309acaa5f52386785fb780e5be61">Hash::reset</a></div><div class="ttdeci">virtual void reset()=0</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div></div> <div class="ttc" id="classHash_html_a7b94309acaa5f52386785fb780e5be61"><div class="ttname"><a href="classHash.html#a7b94309acaa5f52386785fb780e5be61">Hash::reset</a></div><div class="ttdeci">virtual void reset()=0</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div></div>
<div class="ttc" id="classHash_html_adf50359c1f525af884721cc9034e7945"><div class="ttname"><a href="classHash.html#adf50359c1f525af884721cc9034e7945">Hash::resetHMAC</a></div><div class="ttdeci">virtual void resetHMAC(const void *key, size_t keyLen)=0</div><div class="ttdoc">Resets the hash ready for a new HMAC hashing process. </div></div>
<div class="ttc" id="classHash_html_adcdd30de3e5ecaa2f798c0c5644d9ef8"><div class="ttname"><a href="classHash.html#adcdd30de3e5ecaa2f798c0c5644d9ef8">Hash::hashSize</a></div><div class="ttdeci">virtual size_t hashSize() const =0</div><div class="ttdoc">Size of the hash result from finalize(). </div></div> <div class="ttc" id="classHash_html_adcdd30de3e5ecaa2f798c0c5644d9ef8"><div class="ttname"><a href="classHash.html#adcdd30de3e5ecaa2f798c0c5644d9ef8">Hash::hashSize</a></div><div class="ttdeci">virtual size_t hashSize() const =0</div><div class="ttdoc">Size of the hash result from finalize(). </div></div>
<div class="ttc" id="classHash_html_a4e4b4797dda8678aaed058bae155813e"><div class="ttname"><a href="classHash.html#a4e4b4797dda8678aaed058bae155813e">Hash::~Hash</a></div><div class="ttdeci">virtual ~Hash()</div><div class="ttdoc">Destroys this hash object. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8cpp_source.html#l00047">Hash.cpp:47</a></div></div> <div class="ttc" id="classHash_html_a4e4b4797dda8678aaed058bae155813e"><div class="ttname"><a href="classHash.html#a4e4b4797dda8678aaed058bae155813e">Hash::~Hash</a></div><div class="ttdeci">virtual ~Hash()</div><div class="ttdoc">Destroys this hash object. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8cpp_source.html#l00048">Hash.cpp:48</a></div></div>
<div class="ttc" id="classHash_html_aec9761ee427d122e7450de8df200265c"><div class="ttname"><a href="classHash.html#aec9761ee427d122e7450de8df200265c">Hash::update</a></div><div class="ttdeci">virtual void update(const void *data, size_t len)=0</div><div class="ttdoc">Updates the hash with more data. </div></div> <div class="ttc" id="classHash_html_aec9761ee427d122e7450de8df200265c"><div class="ttname"><a href="classHash.html#aec9761ee427d122e7450de8df200265c">Hash::update</a></div><div class="ttdeci">virtual void update(const void *data, size_t len)=0</div><div class="ttdoc">Updates the hash with more data. </div></div>
<div class="ttc" id="classHash_html_ab6f40c9af91dc3d738d9fcce59af63cc"><div class="ttname"><a href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">Hash::formatHMACKey</a></div><div class="ttdeci">void formatHMACKey(void *block, const void *key, size_t len, uint8_t pad)</div><div class="ttdoc">Formats a HMAC key into a block. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8cpp_source.html#l00162">Hash.cpp:162</a></div></div>
<div class="ttc" id="classHash_html_a09b3ccec22763fc86b1415695862977c"><div class="ttname"><a href="classHash.html#a09b3ccec22763fc86b1415695862977c">Hash::finalize</a></div><div class="ttdeci">virtual void finalize(void *hash, size_t len)=0</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div></div> <div class="ttc" id="classHash_html_a09b3ccec22763fc86b1415695862977c"><div class="ttname"><a href="classHash.html#a09b3ccec22763fc86b1415695862977c">Hash::finalize</a></div><div class="ttdeci">virtual void finalize(void *hash, size_t len)=0</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -261,7 +261,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -157,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -208,7 +208,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -173,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -246,82 +246,106 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; clean(state);</div> <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; clean(state);</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;}</div> <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;}</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div> <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="keywordtype">void</span> KeccakCore::keccakp()</div> <div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="classKeccakCore.html#aeff6b3357916bf426b60d3629db52628"> 263</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classKeccakCore.html#aeff6b3357916bf426b60d3629db52628">KeccakCore::setHMACKey</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> len, uint8_t pad, <span class="keywordtype">size_t</span> hashSize)</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;{</div> <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;{</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint8_t addMod5Table[9] PROGMEM = {</div> <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; uint8_t *b = (uint8_t *)state.B;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; 0, 1, 2, 3, 4, 0, 1, 2, 3</div> <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordtype">size_t</span> size = <a class="code" href="classKeccakCore.html#a3742ed39151811b5d1c263c75ee5b20a">blockSize</a>();</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; };</div> <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="classKeccakCore.html#a5a322eb7e3b5c1eaad127c9c6e6a529b">reset</a>();</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="preprocessor"> #define addMod5(x, y) (pgm_read_byte(&amp;(addMod5Table[(x) + (y)])))</span></div> <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span> (len &lt;= size) {</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="preprocessor"></span> uint64_t D;</div> <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; memcpy(b, key, len);</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; uint8_t index, index2;</div> <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">for</span> (uint8_t round = 0; round &lt; 24; ++round) {</div> <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="classKeccakCore.html#aaaa0355ccec0f469ac8eb577bdf853ed">update</a>(key, len);</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="comment">// Step mapping theta. The specification mentions two temporary</span></div> <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; this-&gt;<a class="code" href="classKeccakCore.html#a97852ee4381ced17ee6d21704cf0b4d7">pad</a>(0x06);</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="comment">// arrays of size 5 called C and D. To save a bit of memory,</span></div> <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="classKeccakCore.html#aad83ece853c0cc15fcab947fdcba924f">extract</a>(b, hashSize);</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="comment">// we use the first row of B to store C and compute D on the fly.</span></div> <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; len = hashSize;</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 5; ++index) {</div> <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="classKeccakCore.html#a5a322eb7e3b5c1eaad127c9c6e6a529b">reset</a>();</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; state.B[0][index] = state.A[0][index] ^ state.A[1][index] ^</div> <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; state.A[2][index] ^ state.A[3][index] ^</div> <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; memset(b + len, pad, size - len);</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; state.A[4][index];</div> <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">while</span> (len &gt; 0) {</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div> <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; *b++ ^= <a class="code" href="classKeccakCore.html#a97852ee4381ced17ee6d21704cf0b4d7">pad</a>;</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 5; ++index) {</div> <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; --len;</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; D = state.B[0][addMod5(index, 4)] ^</div> <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; leftRotate1_64(state.B[0][addMod5(index, 1)]);</div> <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="classKeccakCore.html#aaaa0355ccec0f469ac8eb577bdf853ed">update</a>(state.B, size);</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">for</span> (index2 = 0; index2 &lt; 5; ++index2)</div> <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;}</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; state.A[index2][index] ^= D;</div> <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div> <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="keywordtype">void</span> KeccakCore::keccakp()</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div> <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;{</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="comment">// Step mapping rho and pi combined into a single step.</span></div> <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint8_t addMod5Table[9] PROGMEM = {</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="comment">// Rotate all lanes by a specific offset and rearrange.</span></div> <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; 0, 1, 2, 3, 4, 0, 1, 2, 3</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; state.B[0][0] = state.A[0][0];</div> <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; };</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; state.B[1][0] = leftRotate28_64(state.A[0][3]);</div> <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="preprocessor"> #define addMod5(x, y) (pgm_read_byte(&amp;(addMod5Table[(x) + (y)])))</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; state.B[2][0] = leftRotate1_64 (state.A[0][1]);</div> <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="preprocessor"></span> uint64_t D;</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; state.B[3][0] = leftRotate27_64(state.A[0][4]);</div> <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; uint8_t index, index2;</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; state.B[4][0] = leftRotate62_64(state.A[0][2]);</div> <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">for</span> (uint8_t round = 0; round &lt; 24; ++round) {</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; state.B[0][1] = leftRotate44_64(state.A[1][1]);</div> <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="comment">// Step mapping theta. The specification mentions two temporary</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; state.B[1][1] = leftRotate20_64(state.A[1][4]);</div> <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="comment">// arrays of size 5 called C and D. To save a bit of memory,</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; state.B[2][1] = leftRotate6_64 (state.A[1][2]);</div> <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="comment">// we use the first row of B to store C and compute D on the fly.</span></div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; state.B[3][1] = leftRotate36_64(state.A[1][0]);</div> <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 5; ++index) {</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; state.B[4][1] = leftRotate55_64(state.A[1][3]);</div> <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; state.B[0][index] = state.A[0][index] ^ state.A[1][index] ^</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; state.B[0][2] = leftRotate43_64(state.A[2][2]);</div> <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; state.A[2][index] ^ state.A[3][index] ^</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; state.B[1][2] = leftRotate3_64 (state.A[2][0]);</div> <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; state.A[4][index];</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; state.B[2][2] = leftRotate25_64(state.A[2][3]);</div> <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; state.B[3][2] = leftRotate10_64(state.A[2][1]);</div> <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 5; ++index) {</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; state.B[4][2] = leftRotate39_64(state.A[2][4]);</div> <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; D = state.B[0][addMod5(index, 4)] ^</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; state.B[0][3] = leftRotate21_64(state.A[3][3]);</div> <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; leftRotate1_64(state.B[0][addMod5(index, 1)]);</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; state.B[1][3] = leftRotate45_64(state.A[3][1]);</div> <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">for</span> (index2 = 0; index2 &lt; 5; ++index2)</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; state.B[2][3] = leftRotate8_64 (state.A[3][4]);</div> <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; state.A[index2][index] ^= D;</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; state.B[3][3] = leftRotate15_64(state.A[3][2]);</div> <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; state.B[4][3] = leftRotate41_64(state.A[3][0]);</div> <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; state.B[0][4] = leftRotate14_64(state.A[4][4]);</div> <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="comment">// Step mapping rho and pi combined into a single step.</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; state.B[1][4] = leftRotate61_64(state.A[4][2]);</div> <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="comment">// Rotate all lanes by a specific offset and rearrange.</span></div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; state.B[2][4] = leftRotate18_64(state.A[4][0]);</div> <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; state.B[0][0] = state.A[0][0];</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; state.B[3][4] = leftRotate56_64(state.A[4][3]);</div> <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; state.B[1][0] = leftRotate28_64(state.A[0][3]);</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; state.B[4][4] = leftRotate2_64 (state.A[4][1]);</div> <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; state.B[2][0] = leftRotate1_64 (state.A[0][1]);</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div> <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; state.B[3][0] = leftRotate27_64(state.A[0][4]);</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="comment">// Step mapping chi. Combine each lane with two other lanes in its row.</span></div> <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; state.B[4][0] = leftRotate62_64(state.A[0][2]);</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 5; ++index) {</div> <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; state.B[0][1] = leftRotate44_64(state.A[1][1]);</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">for</span> (index2 = 0; index2 &lt; 5; ++index2) {</div> <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; state.B[1][1] = leftRotate20_64(state.A[1][4]);</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; state.A[index2][index] =</div> <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; state.B[2][1] = leftRotate6_64 (state.A[1][2]);</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; state.B[index2][index] ^</div> <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; state.B[3][1] = leftRotate36_64(state.A[1][0]);</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; ((~state.B[index2][addMod5(index, 1)]) &amp;</div> <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; state.B[4][1] = leftRotate55_64(state.A[1][3]);</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; state.B[index2][addMod5(index, 2)]);</div> <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; state.B[0][2] = leftRotate43_64(state.A[2][2]);</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div> <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; state.B[1][2] = leftRotate3_64 (state.A[2][0]);</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div> <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; state.B[2][2] = leftRotate25_64(state.A[2][3]);</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div> <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; state.B[3][2] = leftRotate10_64(state.A[2][1]);</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="comment">// Step mapping iota. XOR A[0][0] with the round constant.</span></div> <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; state.B[4][2] = leftRotate39_64(state.A[2][4]);</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keyword">static</span> uint64_t <span class="keyword">const</span> RC[24] PROGMEM = {</div> <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; state.B[0][3] = leftRotate21_64(state.A[3][3]);</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; 0x0000000000000001ULL, 0x0000000000008082ULL, 0x800000000000808AULL,</div> <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; state.B[1][3] = leftRotate45_64(state.A[3][1]);</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; 0x8000000080008000ULL, 0x000000000000808BULL, 0x0000000080000001ULL,</div> <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; state.B[2][3] = leftRotate8_64 (state.A[3][4]);</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; 0x8000000080008081ULL, 0x8000000000008009ULL, 0x000000000000008AULL,</div> <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; state.B[3][3] = leftRotate15_64(state.A[3][2]);</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; 0x0000000000000088ULL, 0x0000000080008009ULL, 0x000000008000000AULL,</div> <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; state.B[4][3] = leftRotate41_64(state.A[3][0]);</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; 0x000000008000808BULL, 0x800000000000008BULL, 0x8000000000008089ULL,</div> <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; state.B[0][4] = leftRotate14_64(state.A[4][4]);</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; 0x8000000000008003ULL, 0x8000000000008002ULL, 0x8000000000000080ULL,</div> <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; state.B[1][4] = leftRotate61_64(state.A[4][2]);</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; 0x000000000000800AULL, 0x800000008000000AULL, 0x8000000080008081ULL,</div> <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; state.B[2][4] = leftRotate18_64(state.A[4][0]);</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; 0x8000000000008080ULL, 0x0000000080000001ULL, 0x8000000080008008ULL</div> <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; state.B[3][4] = leftRotate56_64(state.A[4][3]);</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; };</div> <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; state.B[4][4] = leftRotate2_64 (state.A[4][1]);</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; state.A[0][0] ^= pgm_read_qword(RC + round);</div> <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</div> <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="comment">// Step mapping chi. Combine each lane with two other lanes in its row.</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;}</div> <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 5; ++index) {</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">for</span> (index2 = 0; index2 &lt; 5; ++index2) {</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; state.A[index2][index] =</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; state.B[index2][index] ^</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; ((~state.B[index2][addMod5(index, 1)]) &amp;</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; state.B[index2][addMod5(index, 2)]);</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="comment">// Step mapping iota. XOR A[0][0] with the round constant.</span></div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keyword">static</span> uint64_t <span class="keyword">const</span> RC[24] PROGMEM = {</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; 0x0000000000000001ULL, 0x0000000000008082ULL, 0x800000000000808AULL,</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; 0x8000000080008000ULL, 0x000000000000808BULL, 0x0000000080000001ULL,</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; 0x8000000080008081ULL, 0x8000000000008009ULL, 0x000000000000008AULL,</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; 0x0000000000000088ULL, 0x0000000080008009ULL, 0x000000008000000AULL,</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; 0x000000008000808BULL, 0x800000000000008BULL, 0x8000000000008089ULL,</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; 0x8000000000008003ULL, 0x8000000000008002ULL, 0x8000000000000080ULL,</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; 0x000000000000800AULL, 0x800000008000000AULL, 0x8000000080008081ULL,</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; 0x8000000000008080ULL, 0x0000000080000001ULL, 0x8000000080008008ULL</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; };</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; state.A[0][0] ^= pgm_read_qword(RC + round);</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;}</div>
<div class="ttc" id="classKeccakCore_html_a3742ed39151811b5d1c263c75ee5b20a"><div class="ttname"><a href="classKeccakCore.html#a3742ed39151811b5d1c263c75ee5b20a">KeccakCore::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Returns the input block size for the sponge function in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8h_source.html#l00038">KeccakCore.h:38</a></div></div>
<div class="ttc" id="classKeccakCore_html_aeff6b3357916bf426b60d3629db52628"><div class="ttname"><a href="classKeccakCore.html#aeff6b3357916bf426b60d3629db52628">KeccakCore::setHMACKey</a></div><div class="ttdeci">void setHMACKey(const void *key, size_t len, uint8_t pad, size_t hashSize)</div><div class="ttdoc">Sets a HMAC key for a Keccak-based hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00263">KeccakCore.cpp:263</a></div></div>
<div class="ttc" id="classKeccakCore_html_ab3c1905f2002e49aca085d6f0b5546f7"><div class="ttname"><a href="classKeccakCore.html#ab3c1905f2002e49aca085d6f0b5546f7">KeccakCore::setCapacity</a></div><div class="ttdeci">void setCapacity(size_t capacity)</div><div class="ttdoc">Sets the capacity of the Keccak sponge function in bits. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00089">KeccakCore.cpp:89</a></div></div> <div class="ttc" id="classKeccakCore_html_ab3c1905f2002e49aca085d6f0b5546f7"><div class="ttname"><a href="classKeccakCore.html#ab3c1905f2002e49aca085d6f0b5546f7">KeccakCore::setCapacity</a></div><div class="ttdeci">void setCapacity(size_t capacity)</div><div class="ttdoc">Sets the capacity of the Keccak sponge function in bits. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00089">KeccakCore.cpp:89</a></div></div>
<div class="ttc" id="classKeccakCore_html_a4579e3a9b24f1d615fa8d660c23e77a4"><div class="ttname"><a href="classKeccakCore.html#a4579e3a9b24f1d615fa8d660c23e77a4">KeccakCore::~KeccakCore</a></div><div class="ttdeci">~KeccakCore()</div><div class="ttdoc">Destroys this Keccak sponge function after clearing all sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00061">KeccakCore.cpp:61</a></div></div> <div class="ttc" id="classKeccakCore_html_a4579e3a9b24f1d615fa8d660c23e77a4"><div class="ttname"><a href="classKeccakCore.html#a4579e3a9b24f1d615fa8d660c23e77a4">KeccakCore::~KeccakCore</a></div><div class="ttdeci">~KeccakCore()</div><div class="ttdoc">Destroys this Keccak sponge function after clearing all sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00061">KeccakCore.cpp:61</a></div></div>
<div class="ttc" id="classKeccakCore_html_aad83ece853c0cc15fcab947fdcba924f"><div class="ttname"><a href="classKeccakCore.html#aad83ece853c0cc15fcab947fdcba924f">KeccakCore::extract</a></div><div class="ttdeci">void extract(void *data, size_t size)</div><div class="ttdoc">Extracts data from the Keccak sponge function. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00201">KeccakCore.cpp:201</a></div></div> <div class="ttc" id="classKeccakCore_html_aad83ece853c0cc15fcab947fdcba924f"><div class="ttname"><a href="classKeccakCore.html#aad83ece853c0cc15fcab947fdcba924f">KeccakCore::extract</a></div><div class="ttdeci">void extract(void *data, size_t size)</div><div class="ttdoc">Extracts data from the Keccak sponge function. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00201">KeccakCore.cpp:201</a></div></div>
@ -334,7 +358,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -136,20 +136,23 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div> <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classKeccakCore.html#aeff1df56e4a3103c99c1fe4307e60c66">clear</a>();</div> <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classKeccakCore.html#aeff1df56e4a3103c99c1fe4307e60c66">clear</a>();</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div> <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keyword">private</span>:</div> <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classKeccakCore.html#aeff6b3357916bf426b60d3629db52628">setHMACKey</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> len, uint8_t <a class="code" href="classKeccakCore.html#a97852ee4381ced17ee6d21704cf0b4d7">pad</a>, <span class="keywordtype">size_t</span> hashSize);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">struct </span>{</div> <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; uint64_t A[5][5];</div> <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; uint64_t B[5][5];</div> <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; uint8_t inputSize;</div> <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; uint64_t A[5][5];</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; uint8_t outputSize;</div> <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; uint64_t B[5][5];</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; } state;</div> <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; uint8_t inputSize;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; uint8_t _blockSize;</div> <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; uint8_t outputSize;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div> <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; } state;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">void</span> keccakp();</div> <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; uint8_t _blockSize;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;};</div> <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div> <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">void</span> keccakp();</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#endif</span></div> <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;};</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="classKeccakCore_html_a3742ed39151811b5d1c263c75ee5b20a"><div class="ttname"><a href="classKeccakCore.html#a3742ed39151811b5d1c263c75ee5b20a">KeccakCore::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Returns the input block size for the sponge function in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8h_source.html#l00038">KeccakCore.h:38</a></div></div> <div class="ttc" id="classKeccakCore_html_a3742ed39151811b5d1c263c75ee5b20a"><div class="ttname"><a href="classKeccakCore.html#a3742ed39151811b5d1c263c75ee5b20a">KeccakCore::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Returns the input block size for the sponge function in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8h_source.html#l00038">KeccakCore.h:38</a></div></div>
<div class="ttc" id="classKeccakCore_html_aeff6b3357916bf426b60d3629db52628"><div class="ttname"><a href="classKeccakCore.html#aeff6b3357916bf426b60d3629db52628">KeccakCore::setHMACKey</a></div><div class="ttdeci">void setHMACKey(const void *key, size_t len, uint8_t pad, size_t hashSize)</div><div class="ttdoc">Sets a HMAC key for a Keccak-based hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00263">KeccakCore.cpp:263</a></div></div>
<div class="ttc" id="classKeccakCore_html_ab3c1905f2002e49aca085d6f0b5546f7"><div class="ttname"><a href="classKeccakCore.html#ab3c1905f2002e49aca085d6f0b5546f7">KeccakCore::setCapacity</a></div><div class="ttdeci">void setCapacity(size_t capacity)</div><div class="ttdoc">Sets the capacity of the Keccak sponge function in bits. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00089">KeccakCore.cpp:89</a></div></div> <div class="ttc" id="classKeccakCore_html_ab3c1905f2002e49aca085d6f0b5546f7"><div class="ttname"><a href="classKeccakCore.html#ab3c1905f2002e49aca085d6f0b5546f7">KeccakCore::setCapacity</a></div><div class="ttdeci">void setCapacity(size_t capacity)</div><div class="ttdoc">Sets the capacity of the Keccak sponge function in bits. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00089">KeccakCore.cpp:89</a></div></div>
<div class="ttc" id="classKeccakCore_html_a4579e3a9b24f1d615fa8d660c23e77a4"><div class="ttname"><a href="classKeccakCore.html#a4579e3a9b24f1d615fa8d660c23e77a4">KeccakCore::~KeccakCore</a></div><div class="ttdeci">~KeccakCore()</div><div class="ttdoc">Destroys this Keccak sponge function after clearing all sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00061">KeccakCore.cpp:61</a></div></div> <div class="ttc" id="classKeccakCore_html_a4579e3a9b24f1d615fa8d660c23e77a4"><div class="ttname"><a href="classKeccakCore.html#a4579e3a9b24f1d615fa8d660c23e77a4">KeccakCore::~KeccakCore</a></div><div class="ttdeci">~KeccakCore()</div><div class="ttdoc">Destroys this Keccak sponge function after clearing all sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00061">KeccakCore.cpp:61</a></div></div>
<div class="ttc" id="classKeccakCore_html_aad83ece853c0cc15fcab947fdcba924f"><div class="ttname"><a href="classKeccakCore.html#aad83ece853c0cc15fcab947fdcba924f">KeccakCore::extract</a></div><div class="ttdeci">void extract(void *data, size_t size)</div><div class="ttdoc">Extracts data from the Keccak sponge function. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00201">KeccakCore.cpp:201</a></div></div> <div class="ttc" id="classKeccakCore_html_aad83ece853c0cc15fcab947fdcba924f"><div class="ttname"><a href="classKeccakCore.html#aad83ece853c0cc15fcab947fdcba924f">KeccakCore::extract</a></div><div class="ttdeci">void extract(void *data, size_t size)</div><div class="ttdoc">Extracts data from the Keccak sponge function. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00201">KeccakCore.cpp:201</a></div></div>
@ -163,7 +166,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -290,7 +290,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -201,7 +201,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -221,7 +221,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -215,7 +215,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -258,7 +258,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -246,7 +246,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -128,11 +128,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="ttc" id="classNoiseSource_html_a601479b7d8cc215f97f2f8a18d3ef4c2"><div class="ttname"><a href="classNoiseSource.html#a601479b7d8cc215f97f2f8a18d3ef4c2">NoiseSource::NoiseSource</a></div><div class="ttdeci">NoiseSource()</div><div class="ttdoc">Constructs a new random noise source. </div><div class="ttdef"><b>Definition:</b> <a href="NoiseSource_8cpp_source.html#l00036">NoiseSource.cpp:36</a></div></div> <div class="ttc" id="classNoiseSource_html_a601479b7d8cc215f97f2f8a18d3ef4c2"><div class="ttname"><a href="classNoiseSource.html#a601479b7d8cc215f97f2f8a18d3ef4c2">NoiseSource::NoiseSource</a></div><div class="ttdeci">NoiseSource()</div><div class="ttdoc">Constructs a new random noise source. </div><div class="ttdef"><b>Definition:</b> <a href="NoiseSource_8cpp_source.html#l00036">NoiseSource.cpp:36</a></div></div>
<div class="ttc" id="classNoiseSource_html_a1af7449a5ae4a8acd34ac218c9eec6c1"><div class="ttname"><a href="classNoiseSource.html#a1af7449a5ae4a8acd34ac218c9eec6c1">NoiseSource::output</a></div><div class="ttdeci">virtual void output(const uint8_t *data, size_t len, unsigned int credit)</div><div class="ttdoc">Called from subclasses to output noise to the global random number pool. </div><div class="ttdef"><b>Definition:</b> <a href="NoiseSource_8cpp_source.html#l00102">NoiseSource.cpp:102</a></div></div> <div class="ttc" id="classNoiseSource_html_a1af7449a5ae4a8acd34ac218c9eec6c1"><div class="ttname"><a href="classNoiseSource.html#a1af7449a5ae4a8acd34ac218c9eec6c1">NoiseSource::output</a></div><div class="ttdeci">virtual void output(const uint8_t *data, size_t len, unsigned int credit)</div><div class="ttdoc">Called from subclasses to output noise to the global random number pool. </div><div class="ttdef"><b>Definition:</b> <a href="NoiseSource_8cpp_source.html#l00102">NoiseSource.cpp:102</a></div></div>
<div class="ttc" id="classNoiseSource_html_a4eca1e894a5d719fb9bf4df34a791cdb"><div class="ttname"><a href="classNoiseSource.html#a4eca1e894a5d719fb9bf4df34a791cdb">NoiseSource::~NoiseSource</a></div><div class="ttdeci">virtual ~NoiseSource()</div><div class="ttdoc">Destroys this random noise source. </div><div class="ttdef"><b>Definition:</b> <a href="NoiseSource_8cpp_source.html#l00043">NoiseSource.cpp:43</a></div></div> <div class="ttc" id="classNoiseSource_html_a4eca1e894a5d719fb9bf4df34a791cdb"><div class="ttname"><a href="classNoiseSource.html#a4eca1e894a5d719fb9bf4df34a791cdb">NoiseSource::~NoiseSource</a></div><div class="ttdeci">virtual ~NoiseSource()</div><div class="ttdoc">Destroys this random noise source. </div><div class="ttdef"><b>Definition:</b> <a href="NoiseSource_8cpp_source.html#l00043">NoiseSource.cpp:43</a></div></div>
<div class="ttc" id="classRNGClass_html_ad99535ea23ae2fec55bdebb8c24def02"><div class="ttname"><a href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02">RNGClass::stir</a></div><div class="ttdeci">void stir(const uint8_t *data, size_t len, unsigned int credit=0)</div><div class="ttdoc">Stirs additional entropy data into the random pool. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00387">RNG.cpp:387</a></div></div> <div class="ttc" id="classRNGClass_html_ad99535ea23ae2fec55bdebb8c24def02"><div class="ttname"><a href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02">RNGClass::stir</a></div><div class="ttdeci">void stir(const uint8_t *data, size_t len, unsigned int credit=0)</div><div class="ttdoc">Stirs additional entropy data into the random pool. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00407">RNG.cpp:407</a></div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -139,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -206,7 +206,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -155,7 +155,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -158,7 +158,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -435,7 +435,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -158,214 +158,227 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; , firstSave(1)</div> <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; , firstSave(1)</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; , timer(0)</div> <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; , timer(0)</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; , timeout(3600000UL) <span class="comment">// 1 hour in milliseconds</span></div> <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; , timeout(3600000UL) <span class="comment">// 1 hour in milliseconds</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;{</div> <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; , count(0)</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;}</div> <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;{</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div> <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;}</div>
<div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classRNGClass.html#aef3ee2fb14a39caf650dc90a0226dd31"> 179</a></span>&#160;<a class="code" href="classRNGClass.html#aef3ee2fb14a39caf650dc90a0226dd31">RNGClass::~RNGClass</a>()</div> <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;{</div> <div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classRNGClass.html#aef3ee2fb14a39caf650dc90a0226dd31"> 180</a></span>&#160;<a class="code" href="classRNGClass.html#aef3ee2fb14a39caf650dc90a0226dd31">RNGClass::~RNGClass</a>()</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; clean(block);</div> <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;{</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; clean(stream);</div> <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; clean(block);</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;}</div> <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; clean(stream);</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div> <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;}</div>
<div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classRNGClass.html#a7f1aab3c324f8e8a424d683425e0fcf8"> 202</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a7f1aab3c324f8e8a424d683425e0fcf8">RNGClass::begin</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *tag, <span class="keywordtype">int</span> eepromAddress)</div> <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;{</div> <div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classRNGClass.html#a7f1aab3c324f8e8a424d683425e0fcf8"> 203</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a7f1aab3c324f8e8a424d683425e0fcf8">RNGClass::begin</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *tag, <span class="keywordtype">int</span> eepromAddress)</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="comment">// Save the EEPROM address for use by save().</span></div> <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;{</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; address = eepromAddress;</div> <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="comment">// Save the EEPROM address for use by save().</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div> <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; address = eepromAddress;</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="comment">// Initialize the ChaCha20 input block from the saved seed.</span></div> <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; memcpy_P(block, tagRNG, <span class="keyword">sizeof</span>(tagRNG));</div> <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="comment">// Initialize the ChaCha20 input block from the saved seed.</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; memcpy_P(block + 4, initRNG, <span class="keyword">sizeof</span>(initRNG));</div> <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; memcpy_P(block, tagRNG, <span class="keyword">sizeof</span>(tagRNG));</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (eeprom_read_byte((<span class="keyword">const</span> uint8_t *)address) == <span class="charliteral">&#39;S&#39;</span>) {</div> <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; memcpy_P(block + 4, initRNG, <span class="keyword">sizeof</span>(initRNG));</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// We have a saved seed: XOR it with the initialization block.</span></div> <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (eeprom_read_byte((<span class="keyword">const</span> uint8_t *)address) == <span class="charliteral">&#39;S&#39;</span>) {</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> posn = 0; posn &lt; 12; ++posn) {</div> <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="comment">// We have a saved seed: XOR it with the initialization block.</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; block[posn + 4] ^=</div> <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> posn = 0; posn &lt; 12; ++posn) {</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; eeprom_read_dword((<span class="keyword">const</span> uint32_t *)(address + posn * 4 + 1));</div> <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; block[posn + 4] ^=</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div> <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; eeprom_read_dword((<span class="keyword">const</span> uint32_t *)(address + posn * 4 + 1));</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div> <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div> <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="comment">// No entropy credits for the saved seed.</span></div> <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; credits = 0;</div> <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">// No entropy credits for the saved seed.</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div> <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; credits = 0;</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="comment">// Trigger an automatic save once the entropy credits max out.</span></div> <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; firstSave = 1;</div> <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="comment">// Trigger an automatic save once the entropy credits max out.</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div> <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; firstSave = 1;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="comment">// Rekey the random number generator immediately.</span></div> <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; rekey();</div> <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="comment">// Rekey the random number generator immediately.</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div> <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; rekey();</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="comment">// Stir in the supplied tag data but don&#39;t credit any entropy to it.</span></div> <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (tag)</div> <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="comment">// Stir in the supplied tag data but don&#39;t credit any entropy to it.</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02">stir</a>((<span class="keyword">const</span> uint8_t *)tag, strlen(tag));</div> <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">if</span> (tag)</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div> <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02">stir</a>((<span class="keyword">const</span> uint8_t *)tag, strlen(tag));</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="comment">// Re-save the seed to obliterate the previous value and to ensure</span></div> <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="comment">// that if the system is reset without a call to save() that we won&#39;t</span></div> <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="comment">// Re-save the seed to obliterate the previous value and to ensure</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="comment">// accidentally generate the same sequence of random data again.</span></div> <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="comment">// that if the system is reset without a call to save() that we won&#39;t</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="classRNGClass.html#a139584fb249148e2058d1d645d090db7">save</a>();</div> <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="comment">// accidentally generate the same sequence of random data again.</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;}</div> <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="classRNGClass.html#a139584fb249148e2058d1d645d090db7">save</a>();</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div> <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;}</div>
<div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classRNGClass.html#a5848e87a5f2f0302c88b0377f0e3366d"> 253</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a5848e87a5f2f0302c88b0377f0e3366d">RNGClass::setAutoSaveTime</a>(uint16_t minutes)</div> <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;{</div> <div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classRNGClass.html#aacf23b192b0e4cc8726d9abe05f5a9db"> 250</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#aacf23b192b0e4cc8726d9abe05f5a9db">RNGClass::addNoiseSource</a>(<a class="code" href="classNoiseSource.html">NoiseSource</a> &amp;source)</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">if</span> (!minutes)</div> <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;{</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; minutes = 1; <span class="comment">// Just in case.</span></div> <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="preprocessor"> #define MAX_NOISE_SOURCES (sizeof(noiseSources) / sizeof(noiseSources[0]))</span></div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; timeout = ((uint32_t)minutes) * 60000U;</div> <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span> (count &lt; MAX_NOISE_SOURCES)</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;}</div> <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; noiseSources[count++] = &amp;source;</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div> <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;}</div>
<div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classRNGClass.html#a418a833cf18198fd7e5d6dbd78c99c29"> 277</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a418a833cf18198fd7e5d6dbd78c99c29">RNGClass::rand</a>(uint8_t *data, <span class="keywordtype">size_t</span> len)</div> <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;{</div> <div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classRNGClass.html#a5848e87a5f2f0302c88b0377f0e3366d"> 273</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a5848e87a5f2f0302c88b0377f0e3366d">RNGClass::setAutoSaveTime</a>(uint16_t minutes)</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="comment">// Decrease the amount of entropy in the pool.</span></div> <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;{</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> (len &gt; (credits / 8))</div> <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">if</span> (!minutes)</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; credits = 0;</div> <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; minutes = 1; <span class="comment">// Just in case.</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">else</span></div> <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; timeout = ((uint32_t)minutes) * 60000U;</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; credits -= len * 8;</div> <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;}</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div> <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="comment">// Generate the random data.</span></div> <div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="classRNGClass.html#a418a833cf18198fd7e5d6dbd78c99c29"> 297</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a418a833cf18198fd7e5d6dbd78c99c29">RNGClass::rand</a>(uint8_t *data, <span class="keywordtype">size_t</span> len)</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; uint8_t count = 0;</div> <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;{</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">while</span> (len &gt; 0) {</div> <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="comment">// Decrease the amount of entropy in the pool.</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// Force a rekey if we have generated too many blocks in this request.</span></div> <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">if</span> (len &gt; (credits / 8))</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">if</span> (count &gt;= RNG_REKEY_BLOCKS) {</div> <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; credits = 0;</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; rekey();</div> <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; count = 1;</div> <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; credits -= len * 8;</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; } <span class="keywordflow">else</span> {</div> <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; ++count;</div> <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="comment">// Generate the random data.</span></div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div> <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; uint8_t count = 0;</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div> <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">while</span> (len &gt; 0) {</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="comment">// Increment the low counter word and generate a new keystream block.</span></div> <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="comment">// Force a rekey if we have generated too many blocks in this request.</span></div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; ++(block[12]);</div> <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">if</span> (count &gt;= RNG_REKEY_BLOCKS) {</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="classChaCha.html#a41ac3262e52ff49dcd916d0b3b2e2038">ChaCha::hashCore</a>(stream, block, RNG_ROUNDS);</div> <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; rekey();</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div> <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; count = 1;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="comment">// Copy the data to the return buffer.</span></div> <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">if</span> (len &lt; 64) {</div> <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; ++count;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; memcpy(data, stream, len);</div> <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; }</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">break</span>;</div> <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; } <span class="keywordflow">else</span> {</div> <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="comment">// Increment the low counter word and generate a new keystream block.</span></div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; memcpy(data, stream, 64);</div> <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; ++(block[12]);</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; data += 64;</div> <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="classChaCha.html#a41ac3262e52ff49dcd916d0b3b2e2038">ChaCha::hashCore</a>(stream, block, RNG_ROUNDS);</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; len -= 64;</div> <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div> <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="comment">// Copy the data to the return buffer.</span></div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div> <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">if</span> (len &lt; 64) {</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div> <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; memcpy(data, stream, len);</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="comment">// Force a rekey after every request.</span></div> <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; rekey();</div> <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;}</div> <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; memcpy(data, stream, 64);</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div> <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; data += 64;</div>
<div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classRNGClass.html#a49e3231ba65a5e4b045bc90976e0a659"> 354</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classRNGClass.html#a49e3231ba65a5e4b045bc90976e0a659">RNGClass::available</a>(<span class="keywordtype">size_t</span> len)<span class="keyword"> const</span></div> <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; len -= 64;</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="keyword"></span>{</div> <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">if</span> (len &gt;= (RNG_MAX_CREDITS / 8))</div> <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">return</span> credits &gt;= RNG_MAX_CREDITS;</div> <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">else</span></div> <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="comment">// Force a rekey after every request.</span></div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">return</span> len &lt;= (credits / 8);</div> <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; rekey();</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;}</div> <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;}</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div> <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div>
<div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02"> 387</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02">RNGClass::stir</a>(<span class="keyword">const</span> uint8_t *data, <span class="keywordtype">size_t</span> len, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> credit)</div> <div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="classRNGClass.html#a49e3231ba65a5e4b045bc90976e0a659"> 374</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classRNGClass.html#a49e3231ba65a5e4b045bc90976e0a659">RNGClass::available</a>(<span class="keywordtype">size_t</span> len)<span class="keyword"> const</span></div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;{</div> <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="comment">// Increase the entropy credit.</span></div> <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">if</span> (len &gt;= (RNG_MAX_CREDITS / 8))</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">if</span> ((credit / 8) &gt;= len)</div> <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> credits &gt;= RNG_MAX_CREDITS;</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; credit = len * 8;</div> <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">if</span> ((RNG_MAX_CREDITS - credits) &gt; credit)</div> <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">return</span> len &lt;= (credits / 8);</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; credits += credit;</div> <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;}</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">else</span></div> <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; credits = RNG_MAX_CREDITS;</div> <div class="line"><a name="l00407"></a><span class="lineno"><a class="line" href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02"> 407</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02">RNGClass::stir</a>(<span class="keyword">const</span> uint8_t *data, <span class="keywordtype">size_t</span> len, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> credit)</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div> <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;{</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="comment">// Process the supplied input data.</span></div> <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="comment">// Increase the entropy credit.</span></div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">if</span> (len &gt; 0) {</div> <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">if</span> ((credit / 8) &gt;= len)</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="comment">// XOR the data with the ChaCha input block in 48 byte</span></div> <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; credit = len * 8;</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="comment">// chunks and rekey the ChaCha cipher for each chunk to mix</span></div> <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">if</span> ((RNG_MAX_CREDITS - credits) &gt; credit)</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="comment">// the data in. This should scatter any &quot;true entropy&quot; in</span></div> <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; credits += credit;</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="comment">// the input across the entire block.</span></div> <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">while</span> (len &gt; 0) {</div> <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; credits = RNG_MAX_CREDITS;</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordtype">size_t</span> templen = len;</div> <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">if</span> (templen &gt; 48)</div> <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="comment">// Process the supplied input data.</span></div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; templen = 48;</div> <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">if</span> (len &gt; 0) {</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; uint8_t *output = ((uint8_t *)block) + 16;</div> <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="comment">// XOR the data with the ChaCha input block in 48 byte</span></div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; len -= templen;</div> <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="comment">// chunks and rekey the ChaCha cipher for each chunk to mix</span></div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">while</span> (templen &gt; 0) {</div> <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="comment">// the data in. This should scatter any &quot;true entropy&quot; in</span></div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; *output++ ^= *data++;</div> <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="comment">// the input across the entire block.</span></div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; --templen;</div> <div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">while</span> (len &gt; 0) {</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; }</div> <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordtype">size_t</span> templen = len;</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; rekey();</div> <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">if</span> (templen &gt; 48)</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; }</div> <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; templen = 48;</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; } <span class="keywordflow">else</span> {</div> <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; uint8_t *output = ((uint8_t *)block) + 16;</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="comment">// There was no input data, so just force a rekey so we</span></div> <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; len -= templen;</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="comment">// get some mixing of the state even without new data.</span></div> <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">while</span> (templen &gt; 0) {</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; rekey();</div> <div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; *output++ ^= *data++;</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div> <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; --templen;</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div> <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="comment">// Save if this is the first time we have reached max entropy.</span></div> <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; rekey();</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="comment">// This provides some protection if the system is powered off before</span></div> <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="comment">// the first auto-save timeout occurs.</span></div> <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">if</span> (firstSave &amp;&amp; credits &gt;= RNG_MAX_CREDITS) {</div> <div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="comment">// There was no input data, so just force a rekey so we</span></div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; firstSave = 0;</div> <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="comment">// get some mixing of the state even without new data.</span></div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="classRNGClass.html#a139584fb249148e2058d1d645d090db7">save</a>();</div> <div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; rekey();</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div> <div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;}</div> <div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div> <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="comment">// Save if this is the first time we have reached max entropy.</span></div>
<div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="classRNGClass.html#a541e4118e2ed10617480bb9949f9c516"> 437</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02">RNGClass::stir</a>(<a class="code" href="classNoiseSource.html">NoiseSource</a> &amp;source)</div> <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="comment">// This provides some protection if the system is powered off before</span></div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;{</div> <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="comment">// the first auto-save timeout occurs.</span></div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; source.<a class="code" href="classNoiseSource.html#a7ce647815524fe84f562aca5256e12f3">stir</a>();</div> <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">if</span> (firstSave &amp;&amp; credits &gt;= RNG_MAX_CREDITS) {</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;}</div> <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; firstSave = 0;</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div> <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="classRNGClass.html#a139584fb249148e2058d1d645d090db7">save</a>();</div>
<div class="line"><a name="l00468"></a><span class="lineno"><a class="line" href="classRNGClass.html#a139584fb249148e2058d1d645d090db7"> 468</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a139584fb249148e2058d1d645d090db7">RNGClass::save</a>()</div> <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;{</div> <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;}</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="comment">// Generate random data from the current state and save</span></div> <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="comment">// that as the seed. Then force a rekey.</span></div> <div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="classRNGClass.html#a541e4118e2ed10617480bb9949f9c516"> 457</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02">RNGClass::stir</a>(<a class="code" href="classNoiseSource.html">NoiseSource</a> &amp;source)</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; ++(block[12]);</div> <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;{</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <a class="code" href="classChaCha.html#a41ac3262e52ff49dcd916d0b3b2e2038">ChaCha::hashCore</a>(stream, block, RNG_ROUNDS);</div> <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; source.<a class="code" href="classNoiseSource.html#a7ce647815524fe84f562aca5256e12f3">stir</a>();</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; eeprom_write_block(stream, (<span class="keywordtype">void</span> *)(address + 1), 48);</div> <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;}</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; eeprom_update_byte((uint8_t *)address, <span class="charliteral">&#39;S&#39;</span>);</div> <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; rekey();</div> <div class="line"><a name="l00488"></a><span class="lineno"><a class="line" href="classRNGClass.html#a139584fb249148e2058d1d645d090db7"> 488</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a139584fb249148e2058d1d645d090db7">RNGClass::save</a>()</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; timer = millis();</div> <div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;{</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;}</div> <div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="comment">// Generate random data from the current state and save</span></div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div> <div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="comment">// that as the seed. Then force a rekey.</span></div>
<div class="line"><a name="l00486"></a><span class="lineno"><a class="line" href="classRNGClass.html#a8cb91e39f0c4591de5bf98b1e2880b13"> 486</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a8cb91e39f0c4591de5bf98b1e2880b13">RNGClass::loop</a>()</div> <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; ++(block[12]);</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;{</div> <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="classChaCha.html#a41ac3262e52ff49dcd916d0b3b2e2038">ChaCha::hashCore</a>(stream, block, RNG_ROUNDS);</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="comment">// Save the seed if the auto-save timer has expired.</span></div> <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; eeprom_write_block(stream, (<span class="keywordtype">void</span> *)(address + 1), 48);</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">if</span> ((millis() - timer) &gt;= timeout)</div> <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; eeprom_update_byte((uint8_t *)address, <span class="charliteral">&#39;S&#39;</span>);</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <a class="code" href="classRNGClass.html#a139584fb249148e2058d1d645d090db7">save</a>();</div> <div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; rekey();</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;}</div> <div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; timer = millis();</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div> <div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;}</div>
<div class="line"><a name="l00513"></a><span class="lineno"><a class="line" href="classRNGClass.html#a9901367d86f2303a59bbc12fe91cad00"> 513</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a9901367d86f2303a59bbc12fe91cad00">RNGClass::destroy</a>()</div> <div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;{</div> <div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="classRNGClass.html#a8cb91e39f0c4591de5bf98b1e2880b13"> 506</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a8cb91e39f0c4591de5bf98b1e2880b13">RNGClass::loop</a>()</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; clean(block);</div> <div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;{</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; clean(stream);</div> <div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="comment">// Stir in the entropy from all registered noise sources.</span></div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> posn = 0; posn &lt; <a class="code" href="classRNGClass.html#ae3a013bfc73795fd26ee36e70d89f4c2">SEED_SIZE</a>; ++posn)</div> <div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">for</span> (uint8_t posn = 0; posn &lt; count; ++posn)</div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; eeprom_write_byte((uint8_t *)(address + posn), 0xFF);</div> <div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; noiseSources[posn]-&gt;<a class="code" href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02">stir</a>();</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;}</div> <div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;</div> <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="comment">// Save the seed if the auto-save timer has expired.</span></div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="keywordtype">void</span> RNGClass::rekey()</div> <div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">if</span> ((millis() - timer) &gt;= timeout)</div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;{</div> <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <a class="code" href="classRNGClass.html#a139584fb249148e2058d1d645d090db7">save</a>();</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="comment">// Rekey the cipher for the next request by generating a new block.</span></div> <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;}</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="comment">// This is intended to make it difficult to wind the random number</span></div> <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;</div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="comment">// backwards if the state is captured later. The first 16 bytes of</span></div> <div class="line"><a name="l00537"></a><span class="lineno"><a class="line" href="classRNGClass.html#a9901367d86f2303a59bbc12fe91cad00"> 537</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a9901367d86f2303a59bbc12fe91cad00">RNGClass::destroy</a>()</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="comment">// &quot;block&quot; remain set to &quot;tagRNG&quot;.</span></div> <div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;{</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; ++(block[12]);</div> <div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; clean(block);</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <a class="code" href="classChaCha.html#a41ac3262e52ff49dcd916d0b3b2e2038">ChaCha::hashCore</a>(stream, block, RNG_ROUNDS);</div> <div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; clean(stream);</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; memcpy(block + 4, stream, 48);</div> <div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> posn = 0; posn &lt; <a class="code" href="classRNGClass.html#ae3a013bfc73795fd26ee36e70d89f4c2">SEED_SIZE</a>; ++posn)</div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;</div> <div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; eeprom_write_byte((uint8_t *)(address + posn), 0xFF);</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="comment">// Permute the high word of the counter using the system microsecond</span></div> <div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;}</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="comment">// counter to introduce a little bit of non-stir randomness for each</span></div> <div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="comment">// request. Note: If random data is requested on a predictable schedule</span></div> <div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="keywordtype">void</span> RNGClass::rekey()</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="comment">// then this may not help very much. It is still necessary to stir in</span></div> <div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;{</div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="comment">// high quality entropy data on a regular basis using stir().</span></div> <div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="comment">// Rekey the cipher for the next request by generating a new block.</span></div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; block[13] ^= micros();</div> <div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="comment">// This is intended to make it difficult to wind the random number</span></div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;}</div> <div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="comment">// backwards if the state is captured later. The first 16 bytes of</span></div>
<div class="ttc" id="classRNGClass_html_a139584fb249148e2058d1d645d090db7"><div class="ttname"><a href="classRNGClass.html#a139584fb249148e2058d1d645d090db7">RNGClass::save</a></div><div class="ttdeci">void save()</div><div class="ttdoc">Saves the random seed to EEPROM. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00468">RNG.cpp:468</a></div></div> <div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="comment">// &quot;block&quot; remain set to &quot;tagRNG&quot;.</span></div>
<div class="ttc" id="classRNGClass_html_a418a833cf18198fd7e5d6dbd78c99c29"><div class="ttname"><a href="classRNGClass.html#a418a833cf18198fd7e5d6dbd78c99c29">RNGClass::rand</a></div><div class="ttdeci">void rand(uint8_t *data, size_t len)</div><div class="ttdoc">Generates random bytes into a caller-supplied buffer. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00277">RNG.cpp:277</a></div></div> <div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; ++(block[12]);</div>
<div class="ttc" id="classRNGClass_html_a7f1aab3c324f8e8a424d683425e0fcf8"><div class="ttname"><a href="classRNGClass.html#a7f1aab3c324f8e8a424d683425e0fcf8">RNGClass::begin</a></div><div class="ttdeci">void begin(const char *tag, int eepromAddress)</div><div class="ttdoc">Initializes the random number generator. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00202">RNG.cpp:202</a></div></div> <div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <a class="code" href="classChaCha.html#a41ac3262e52ff49dcd916d0b3b2e2038">ChaCha::hashCore</a>(stream, block, RNG_ROUNDS);</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; memcpy(block + 4, stream, 48);</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="comment">// Permute the high word of the counter using the system microsecond</span></div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="comment">// counter to introduce a little bit of non-stir randomness for each</span></div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="comment">// request. Note: If random data is requested on a predictable schedule</span></div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="comment">// then this may not help very much. It is still necessary to stir in</span></div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="comment">// high quality entropy data on a regular basis using stir().</span></div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; block[13] ^= micros();</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;}</div>
<div class="ttc" id="classRNGClass_html_a139584fb249148e2058d1d645d090db7"><div class="ttname"><a href="classRNGClass.html#a139584fb249148e2058d1d645d090db7">RNGClass::save</a></div><div class="ttdeci">void save()</div><div class="ttdoc">Saves the random seed to EEPROM. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00488">RNG.cpp:488</a></div></div>
<div class="ttc" id="classRNGClass_html_a418a833cf18198fd7e5d6dbd78c99c29"><div class="ttname"><a href="classRNGClass.html#a418a833cf18198fd7e5d6dbd78c99c29">RNGClass::rand</a></div><div class="ttdeci">void rand(uint8_t *data, size_t len)</div><div class="ttdoc">Generates random bytes into a caller-supplied buffer. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00297">RNG.cpp:297</a></div></div>
<div class="ttc" id="classRNGClass_html_a7f1aab3c324f8e8a424d683425e0fcf8"><div class="ttname"><a href="classRNGClass.html#a7f1aab3c324f8e8a424d683425e0fcf8">RNGClass::begin</a></div><div class="ttdeci">void begin(const char *tag, int eepromAddress)</div><div class="ttdoc">Initializes the random number generator. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00203">RNG.cpp:203</a></div></div>
<div class="ttc" id="classNoiseSource_html_a7ce647815524fe84f562aca5256e12f3"><div class="ttname"><a href="classNoiseSource.html#a7ce647815524fe84f562aca5256e12f3">NoiseSource::stir</a></div><div class="ttdeci">virtual void stir()=0</div><div class="ttdoc">Stirs entropy from this noise source into the global random number pool. </div></div> <div class="ttc" id="classNoiseSource_html_a7ce647815524fe84f562aca5256e12f3"><div class="ttname"><a href="classNoiseSource.html#a7ce647815524fe84f562aca5256e12f3">NoiseSource::stir</a></div><div class="ttdeci">virtual void stir()=0</div><div class="ttdoc">Stirs entropy from this noise source into the global random number pool. </div></div>
<div class="ttc" id="classNoiseSource_html"><div class="ttname"><a href="classNoiseSource.html">NoiseSource</a></div><div class="ttdoc">Abstract base class for random noise sources. </div><div class="ttdef"><b>Definition:</b> <a href="NoiseSource_8h_source.html#l00029">NoiseSource.h:29</a></div></div> <div class="ttc" id="classNoiseSource_html"><div class="ttname"><a href="classNoiseSource.html">NoiseSource</a></div><div class="ttdoc">Abstract base class for random noise sources. </div><div class="ttdef"><b>Definition:</b> <a href="NoiseSource_8h_source.html#l00029">NoiseSource.h:29</a></div></div>
<div class="ttc" id="classRNGClass_html_aef3ee2fb14a39caf650dc90a0226dd31"><div class="ttname"><a href="classRNGClass.html#aef3ee2fb14a39caf650dc90a0226dd31">RNGClass::~RNGClass</a></div><div class="ttdeci">~RNGClass()</div><div class="ttdoc">Destroys this random number generator instance. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00179">RNG.cpp:179</a></div></div> <div class="ttc" id="classRNGClass_html_aef3ee2fb14a39caf650dc90a0226dd31"><div class="ttname"><a href="classRNGClass.html#aef3ee2fb14a39caf650dc90a0226dd31">RNGClass::~RNGClass</a></div><div class="ttdeci">~RNGClass()</div><div class="ttdoc">Destroys this random number generator instance. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00180">RNG.cpp:180</a></div></div>
<div class="ttc" id="classRNGClass_html_aacf23b192b0e4cc8726d9abe05f5a9db"><div class="ttname"><a href="classRNGClass.html#aacf23b192b0e4cc8726d9abe05f5a9db">RNGClass::addNoiseSource</a></div><div class="ttdeci">void addNoiseSource(NoiseSource &amp;source)</div><div class="ttdoc">Adds a noise source to the random number generator. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00250">RNG.cpp:250</a></div></div>
<div class="ttc" id="classRNGClass_html_acbcf327242f51ae2d9209aeaa45e30e9"><div class="ttname"><a href="classRNGClass.html#acbcf327242f51ae2d9209aeaa45e30e9">RNGClass::RNGClass</a></div><div class="ttdeci">RNGClass()</div><div class="ttdoc">Constructs a new random number generator instance. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00167">RNG.cpp:167</a></div></div> <div class="ttc" id="classRNGClass_html_acbcf327242f51ae2d9209aeaa45e30e9"><div class="ttname"><a href="classRNGClass.html#acbcf327242f51ae2d9209aeaa45e30e9">RNGClass::RNGClass</a></div><div class="ttdeci">RNGClass()</div><div class="ttdoc">Constructs a new random number generator instance. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00167">RNG.cpp:167</a></div></div>
<div class="ttc" id="classRNGClass_html_a9901367d86f2303a59bbc12fe91cad00"><div class="ttname"><a href="classRNGClass.html#a9901367d86f2303a59bbc12fe91cad00">RNGClass::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Destroys the data in the random number pool and the saved seed in EEPROM. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00513">RNG.cpp:513</a></div></div> <div class="ttc" id="classRNGClass_html_a9901367d86f2303a59bbc12fe91cad00"><div class="ttname"><a href="classRNGClass.html#a9901367d86f2303a59bbc12fe91cad00">RNGClass::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Destroys the data in the random number pool and the saved seed in EEPROM. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00537">RNG.cpp:537</a></div></div>
<div class="ttc" id="classRNGClass_html_a49e3231ba65a5e4b045bc90976e0a659"><div class="ttname"><a href="classRNGClass.html#a49e3231ba65a5e4b045bc90976e0a659">RNGClass::available</a></div><div class="ttdeci">bool available(size_t len) const </div><div class="ttdoc">Determine if there is sufficient entropy available for a specific request size. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00354">RNG.cpp:354</a></div></div> <div class="ttc" id="classRNGClass_html_a49e3231ba65a5e4b045bc90976e0a659"><div class="ttname"><a href="classRNGClass.html#a49e3231ba65a5e4b045bc90976e0a659">RNGClass::available</a></div><div class="ttdeci">bool available(size_t len) const </div><div class="ttdoc">Determine if there is sufficient entropy available for a specific request size. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00374">RNG.cpp:374</a></div></div>
<div class="ttc" id="classRNGClass_html_a8cb91e39f0c4591de5bf98b1e2880b13"><div class="ttname"><a href="classRNGClass.html#a8cb91e39f0c4591de5bf98b1e2880b13">RNGClass::loop</a></div><div class="ttdeci">void loop()</div><div class="ttdoc">Run periodic housekeeping tasks on the random number generator. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00486">RNG.cpp:486</a></div></div> <div class="ttc" id="classRNGClass_html_a8cb91e39f0c4591de5bf98b1e2880b13"><div class="ttname"><a href="classRNGClass.html#a8cb91e39f0c4591de5bf98b1e2880b13">RNGClass::loop</a></div><div class="ttdeci">void loop()</div><div class="ttdoc">Run periodic housekeeping tasks on the random number generator. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00506">RNG.cpp:506</a></div></div>
<div class="ttc" id="classRNGClass_html"><div class="ttname"><a href="classRNGClass.html">RNGClass</a></div><div class="ttdoc">Pseudo random number generator suitable for cryptography. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8h_source.html#l00031">RNG.h:31</a></div></div> <div class="ttc" id="classRNGClass_html"><div class="ttname"><a href="classRNGClass.html">RNGClass</a></div><div class="ttdoc">Pseudo random number generator suitable for cryptography. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8h_source.html#l00031">RNG.h:31</a></div></div>
<div class="ttc" id="classRNGClass_html_ae3a013bfc73795fd26ee36e70d89f4c2"><div class="ttname"><a href="classRNGClass.html#ae3a013bfc73795fd26ee36e70d89f4c2">RNGClass::SEED_SIZE</a></div><div class="ttdeci">static const int SEED_SIZE</div><div class="ttdoc">Size of a saved random number seed in EEPROM space. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8h_source.html#l00053">RNG.h:53</a></div></div> <div class="ttc" id="classRNGClass_html_ae3a013bfc73795fd26ee36e70d89f4c2"><div class="ttname"><a href="classRNGClass.html#ae3a013bfc73795fd26ee36e70d89f4c2">RNGClass::SEED_SIZE</a></div><div class="ttdeci">static const int SEED_SIZE</div><div class="ttdoc">Size of a saved random number seed in EEPROM space. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8h_source.html#l00054">RNG.h:54</a></div></div>
<div class="ttc" id="classChaCha_html_a41ac3262e52ff49dcd916d0b3b2e2038"><div class="ttname"><a href="classChaCha.html#a41ac3262e52ff49dcd916d0b3b2e2038">ChaCha::hashCore</a></div><div class="ttdeci">static void hashCore(uint32_t *output, const uint32_t *input, uint8_t rounds)</div><div class="ttdoc">Executes the ChaCha hash core on an input memory block. </div><div class="ttdef"><b>Definition:</b> <a href="ChaCha_8cpp_source.html#l00230">ChaCha.cpp:230</a></div></div> <div class="ttc" id="classChaCha_html_a41ac3262e52ff49dcd916d0b3b2e2038"><div class="ttname"><a href="classChaCha.html#a41ac3262e52ff49dcd916d0b3b2e2038">ChaCha::hashCore</a></div><div class="ttdeci">static void hashCore(uint32_t *output, const uint32_t *input, uint8_t rounds)</div><div class="ttdoc">Executes the ChaCha hash core on an input memory block. </div><div class="ttdef"><b>Definition:</b> <a href="ChaCha_8cpp_source.html#l00230">ChaCha.cpp:230</a></div></div>
<div class="ttc" id="classRNGClass_html_ad99535ea23ae2fec55bdebb8c24def02"><div class="ttname"><a href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02">RNGClass::stir</a></div><div class="ttdeci">void stir(const uint8_t *data, size_t len, unsigned int credit=0)</div><div class="ttdoc">Stirs additional entropy data into the random pool. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00387">RNG.cpp:387</a></div></div> <div class="ttc" id="classRNGClass_html_ad99535ea23ae2fec55bdebb8c24def02"><div class="ttname"><a href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02">RNGClass::stir</a></div><div class="ttdeci">void stir(const uint8_t *data, size_t len, unsigned int credit=0)</div><div class="ttdoc">Stirs additional entropy data into the random pool. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00407">RNG.cpp:407</a></div></div>
<div class="ttc" id="classRNGClass_html_a5848e87a5f2f0302c88b0377f0e3366d"><div class="ttname"><a href="classRNGClass.html#a5848e87a5f2f0302c88b0377f0e3366d">RNGClass::setAutoSaveTime</a></div><div class="ttdeci">void setAutoSaveTime(uint16_t minutes)</div><div class="ttdoc">Sets the amount of time between automatic seed saves. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00253">RNG.cpp:253</a></div></div> <div class="ttc" id="classRNGClass_html_a5848e87a5f2f0302c88b0377f0e3366d"><div class="ttname"><a href="classRNGClass.html#a5848e87a5f2f0302c88b0377f0e3366d">RNGClass::setAutoSaveTime</a></div><div class="ttdeci">void setAutoSaveTime(uint16_t minutes)</div><div class="ttdoc">Sets the amount of time between automatic seed saves. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00273">RNG.cpp:273</a></div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -125,55 +125,59 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="classRNGClass.html#aef3ee2fb14a39caf650dc90a0226dd31">~RNGClass</a>();</div> <div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="classRNGClass.html#aef3ee2fb14a39caf650dc90a0226dd31">~RNGClass</a>();</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div> <div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a7f1aab3c324f8e8a424d683425e0fcf8">begin</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *tag, <span class="keywordtype">int</span> eepromAddress);</div> <div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a7f1aab3c324f8e8a424d683425e0fcf8">begin</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *tag, <span class="keywordtype">int</span> eepromAddress);</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div> <div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#aacf23b192b0e4cc8726d9abe05f5a9db">addNoiseSource</a>(<a class="code" href="classNoiseSource.html">NoiseSource</a> &amp;source);</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a5848e87a5f2f0302c88b0377f0e3366d">setAutoSaveTime</a>(uint16_t minutes);</div> <div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div> <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a5848e87a5f2f0302c88b0377f0e3366d">setAutoSaveTime</a>(uint16_t minutes);</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a418a833cf18198fd7e5d6dbd78c99c29">rand</a>(uint8_t *data, <span class="keywordtype">size_t</span> len);</div> <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classRNGClass.html#a49e3231ba65a5e4b045bc90976e0a659">available</a>(<span class="keywordtype">size_t</span> len) <span class="keyword">const</span>;</div> <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a418a833cf18198fd7e5d6dbd78c99c29">rand</a>(uint8_t *data, <span class="keywordtype">size_t</span> len);</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div> <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classRNGClass.html#a49e3231ba65a5e4b045bc90976e0a659">available</a>(<span class="keywordtype">size_t</span> len) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02">stir</a>(<span class="keyword">const</span> uint8_t *data, <span class="keywordtype">size_t</span> len, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> credit = 0);</div> <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02">stir</a>(<a class="code" href="classNoiseSource.html">NoiseSource</a> &amp;source);</div> <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02">stir</a>(<span class="keyword">const</span> uint8_t *data, <span class="keywordtype">size_t</span> len, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> credit = 0);</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div> <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02">stir</a>(<a class="code" href="classNoiseSource.html">NoiseSource</a> &amp;source);</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a139584fb249148e2058d1d645d090db7">save</a>();</div> <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div> <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a139584fb249148e2058d1d645d090db7">save</a>();</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a8cb91e39f0c4591de5bf98b1e2880b13">loop</a>();</div> <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div> <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a8cb91e39f0c4591de5bf98b1e2880b13">loop</a>();</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a9901367d86f2303a59bbc12fe91cad00">destroy</a>();</div> <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div> <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classRNGClass.html#a9901367d86f2303a59bbc12fe91cad00">destroy</a>();</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classRNGClass.html#ae3a013bfc73795fd26ee36e70d89f4c2"> 53</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classRNGClass.html#ae3a013bfc73795fd26ee36e70d89f4c2">SEED_SIZE</a> = 49;</div> <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div> <div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classRNGClass.html#ae3a013bfc73795fd26ee36e70d89f4c2"> 54</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classRNGClass.html#ae3a013bfc73795fd26ee36e70d89f4c2">SEED_SIZE</a> = 49;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="keyword">private</span>:</div> <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; uint32_t block[16];</div> <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; uint32_t stream[16];</div> <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; uint32_t block[16];</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">int</span> address;</div> <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; uint32_t stream[16];</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; uint16_t credits : 15;</div> <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">int</span> address;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; uint16_t firstSave : 1;</div> <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; uint16_t credits : 15;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> timer;</div> <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; uint16_t firstSave : 1;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> timeout;</div> <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> timer;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div> <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> timeout;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">void</span> rekey();</div> <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="classNoiseSource.html">NoiseSource</a> *noiseSources[4];</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;};</div> <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; uint8_t count;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div> <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="keyword">extern</span> <a class="code" href="classRNGClass.html">RNGClass</a> RNG;</div> <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">void</span> rekey();</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div> <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;};</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#endif</span></div> <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
<div class="ttc" id="classRNGClass_html_a139584fb249148e2058d1d645d090db7"><div class="ttname"><a href="classRNGClass.html#a139584fb249148e2058d1d645d090db7">RNGClass::save</a></div><div class="ttdeci">void save()</div><div class="ttdoc">Saves the random seed to EEPROM. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00468">RNG.cpp:468</a></div></div> <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="keyword">extern</span> <a class="code" href="classRNGClass.html">RNGClass</a> RNG;</div>
<div class="ttc" id="classRNGClass_html_a418a833cf18198fd7e5d6dbd78c99c29"><div class="ttname"><a href="classRNGClass.html#a418a833cf18198fd7e5d6dbd78c99c29">RNGClass::rand</a></div><div class="ttdeci">void rand(uint8_t *data, size_t len)</div><div class="ttdoc">Generates random bytes into a caller-supplied buffer. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00277">RNG.cpp:277</a></div></div> <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div>
<div class="ttc" id="classRNGClass_html_a7f1aab3c324f8e8a424d683425e0fcf8"><div class="ttname"><a href="classRNGClass.html#a7f1aab3c324f8e8a424d683425e0fcf8">RNGClass::begin</a></div><div class="ttdeci">void begin(const char *tag, int eepromAddress)</div><div class="ttdoc">Initializes the random number generator. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00202">RNG.cpp:202</a></div></div> <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="classRNGClass_html_a139584fb249148e2058d1d645d090db7"><div class="ttname"><a href="classRNGClass.html#a139584fb249148e2058d1d645d090db7">RNGClass::save</a></div><div class="ttdeci">void save()</div><div class="ttdoc">Saves the random seed to EEPROM. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00488">RNG.cpp:488</a></div></div>
<div class="ttc" id="classRNGClass_html_a418a833cf18198fd7e5d6dbd78c99c29"><div class="ttname"><a href="classRNGClass.html#a418a833cf18198fd7e5d6dbd78c99c29">RNGClass::rand</a></div><div class="ttdeci">void rand(uint8_t *data, size_t len)</div><div class="ttdoc">Generates random bytes into a caller-supplied buffer. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00297">RNG.cpp:297</a></div></div>
<div class="ttc" id="classRNGClass_html_a7f1aab3c324f8e8a424d683425e0fcf8"><div class="ttname"><a href="classRNGClass.html#a7f1aab3c324f8e8a424d683425e0fcf8">RNGClass::begin</a></div><div class="ttdeci">void begin(const char *tag, int eepromAddress)</div><div class="ttdoc">Initializes the random number generator. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00203">RNG.cpp:203</a></div></div>
<div class="ttc" id="classNoiseSource_html"><div class="ttname"><a href="classNoiseSource.html">NoiseSource</a></div><div class="ttdoc">Abstract base class for random noise sources. </div><div class="ttdef"><b>Definition:</b> <a href="NoiseSource_8h_source.html#l00029">NoiseSource.h:29</a></div></div> <div class="ttc" id="classNoiseSource_html"><div class="ttname"><a href="classNoiseSource.html">NoiseSource</a></div><div class="ttdoc">Abstract base class for random noise sources. </div><div class="ttdef"><b>Definition:</b> <a href="NoiseSource_8h_source.html#l00029">NoiseSource.h:29</a></div></div>
<div class="ttc" id="classRNGClass_html_aef3ee2fb14a39caf650dc90a0226dd31"><div class="ttname"><a href="classRNGClass.html#aef3ee2fb14a39caf650dc90a0226dd31">RNGClass::~RNGClass</a></div><div class="ttdeci">~RNGClass()</div><div class="ttdoc">Destroys this random number generator instance. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00179">RNG.cpp:179</a></div></div> <div class="ttc" id="classRNGClass_html_aef3ee2fb14a39caf650dc90a0226dd31"><div class="ttname"><a href="classRNGClass.html#aef3ee2fb14a39caf650dc90a0226dd31">RNGClass::~RNGClass</a></div><div class="ttdeci">~RNGClass()</div><div class="ttdoc">Destroys this random number generator instance. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00180">RNG.cpp:180</a></div></div>
<div class="ttc" id="classRNGClass_html_aacf23b192b0e4cc8726d9abe05f5a9db"><div class="ttname"><a href="classRNGClass.html#aacf23b192b0e4cc8726d9abe05f5a9db">RNGClass::addNoiseSource</a></div><div class="ttdeci">void addNoiseSource(NoiseSource &amp;source)</div><div class="ttdoc">Adds a noise source to the random number generator. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00250">RNG.cpp:250</a></div></div>
<div class="ttc" id="classRNGClass_html_acbcf327242f51ae2d9209aeaa45e30e9"><div class="ttname"><a href="classRNGClass.html#acbcf327242f51ae2d9209aeaa45e30e9">RNGClass::RNGClass</a></div><div class="ttdeci">RNGClass()</div><div class="ttdoc">Constructs a new random number generator instance. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00167">RNG.cpp:167</a></div></div> <div class="ttc" id="classRNGClass_html_acbcf327242f51ae2d9209aeaa45e30e9"><div class="ttname"><a href="classRNGClass.html#acbcf327242f51ae2d9209aeaa45e30e9">RNGClass::RNGClass</a></div><div class="ttdeci">RNGClass()</div><div class="ttdoc">Constructs a new random number generator instance. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00167">RNG.cpp:167</a></div></div>
<div class="ttc" id="classRNGClass_html_a9901367d86f2303a59bbc12fe91cad00"><div class="ttname"><a href="classRNGClass.html#a9901367d86f2303a59bbc12fe91cad00">RNGClass::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Destroys the data in the random number pool and the saved seed in EEPROM. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00513">RNG.cpp:513</a></div></div> <div class="ttc" id="classRNGClass_html_a9901367d86f2303a59bbc12fe91cad00"><div class="ttname"><a href="classRNGClass.html#a9901367d86f2303a59bbc12fe91cad00">RNGClass::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Destroys the data in the random number pool and the saved seed in EEPROM. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00537">RNG.cpp:537</a></div></div>
<div class="ttc" id="classRNGClass_html_a49e3231ba65a5e4b045bc90976e0a659"><div class="ttname"><a href="classRNGClass.html#a49e3231ba65a5e4b045bc90976e0a659">RNGClass::available</a></div><div class="ttdeci">bool available(size_t len) const </div><div class="ttdoc">Determine if there is sufficient entropy available for a specific request size. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00354">RNG.cpp:354</a></div></div> <div class="ttc" id="classRNGClass_html_a49e3231ba65a5e4b045bc90976e0a659"><div class="ttname"><a href="classRNGClass.html#a49e3231ba65a5e4b045bc90976e0a659">RNGClass::available</a></div><div class="ttdeci">bool available(size_t len) const </div><div class="ttdoc">Determine if there is sufficient entropy available for a specific request size. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00374">RNG.cpp:374</a></div></div>
<div class="ttc" id="classRNGClass_html_a8cb91e39f0c4591de5bf98b1e2880b13"><div class="ttname"><a href="classRNGClass.html#a8cb91e39f0c4591de5bf98b1e2880b13">RNGClass::loop</a></div><div class="ttdeci">void loop()</div><div class="ttdoc">Run periodic housekeeping tasks on the random number generator. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00486">RNG.cpp:486</a></div></div> <div class="ttc" id="classRNGClass_html_a8cb91e39f0c4591de5bf98b1e2880b13"><div class="ttname"><a href="classRNGClass.html#a8cb91e39f0c4591de5bf98b1e2880b13">RNGClass::loop</a></div><div class="ttdeci">void loop()</div><div class="ttdoc">Run periodic housekeeping tasks on the random number generator. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00506">RNG.cpp:506</a></div></div>
<div class="ttc" id="classRNGClass_html"><div class="ttname"><a href="classRNGClass.html">RNGClass</a></div><div class="ttdoc">Pseudo random number generator suitable for cryptography. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8h_source.html#l00031">RNG.h:31</a></div></div> <div class="ttc" id="classRNGClass_html"><div class="ttname"><a href="classRNGClass.html">RNGClass</a></div><div class="ttdoc">Pseudo random number generator suitable for cryptography. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8h_source.html#l00031">RNG.h:31</a></div></div>
<div class="ttc" id="classRNGClass_html_ae3a013bfc73795fd26ee36e70d89f4c2"><div class="ttname"><a href="classRNGClass.html#ae3a013bfc73795fd26ee36e70d89f4c2">RNGClass::SEED_SIZE</a></div><div class="ttdeci">static const int SEED_SIZE</div><div class="ttdoc">Size of a saved random number seed in EEPROM space. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8h_source.html#l00053">RNG.h:53</a></div></div> <div class="ttc" id="classRNGClass_html_ae3a013bfc73795fd26ee36e70d89f4c2"><div class="ttname"><a href="classRNGClass.html#ae3a013bfc73795fd26ee36e70d89f4c2">RNGClass::SEED_SIZE</a></div><div class="ttdeci">static const int SEED_SIZE</div><div class="ttdoc">Size of a saved random number seed in EEPROM space. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8h_source.html#l00054">RNG.h:54</a></div></div>
<div class="ttc" id="classRNGClass_html_ad99535ea23ae2fec55bdebb8c24def02"><div class="ttname"><a href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02">RNGClass::stir</a></div><div class="ttdeci">void stir(const uint8_t *data, size_t len, unsigned int credit=0)</div><div class="ttdoc">Stirs additional entropy data into the random pool. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00387">RNG.cpp:387</a></div></div> <div class="ttc" id="classRNGClass_html_ad99535ea23ae2fec55bdebb8c24def02"><div class="ttname"><a href="classRNGClass.html#ad99535ea23ae2fec55bdebb8c24def02">RNGClass::stir</a></div><div class="ttdeci">void stir(const uint8_t *data, size_t len, unsigned int credit=0)</div><div class="ttdoc">Stirs additional entropy data into the random pool. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00407">RNG.cpp:407</a></div></div>
<div class="ttc" id="classRNGClass_html_a5848e87a5f2f0302c88b0377f0e3366d"><div class="ttname"><a href="classRNGClass.html#a5848e87a5f2f0302c88b0377f0e3366d">RNGClass::setAutoSaveTime</a></div><div class="ttdeci">void setAutoSaveTime(uint16_t minutes)</div><div class="ttdoc">Sets the amount of time between automatic seed saves. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00253">RNG.cpp:253</a></div></div> <div class="ttc" id="classRNGClass_html_a5848e87a5f2f0302c88b0377f0e3366d"><div class="ttname"><a href="classRNGClass.html#a5848e87a5f2f0302c88b0377f0e3366d">RNGClass::setAutoSaveTime</a></div><div class="ttdeci">void setAutoSaveTime(uint16_t minutes)</div><div class="ttdoc">Sets the amount of time between automatic seed saves. </div><div class="ttdef"><b>Definition:</b> <a href="RNG_8cpp_source.html#l00273">RNG.cpp:273</a></div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -380,7 +380,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -231,7 +231,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -285,7 +285,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -206,102 +206,124 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="classSHA1.html#ab71aaf39ed956320054861a2fbfa454f">reset</a>();</div> <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="classSHA1.html#ab71aaf39ed956320054861a2fbfa454f">reset</a>();</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;}</div> <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;}</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div> <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="keywordtype">void</span> SHA1::processChunk()</div> <div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSHA1.html#ad0a09a5100d59ff90c04ed5d4071b606"> 134</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA1.html#ad0a09a5100d59ff90c04ed5d4071b606">SHA1::resetHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen)</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;{</div> <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;{</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; uint8_t index;</div> <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">formatHMACKey</a>(state.w, key, keyLen, 0x36);</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div> <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; state.length += 64 * 8;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">// Convert the first 16 words from big endian to host byte order.</span></div> <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; processChunk();</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 16; ++index)</div> <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;}</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; state.w[index] = be32toh(state.w[index]);</div> <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div> <div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classSHA1.html#a791db53fe9d6cc0e383b25f1da0a97b8"> 141</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA1.html#a791db53fe9d6cc0e383b25f1da0a97b8">SHA1::finalizeHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen, <span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> hashLen)</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// Initialize the hash value for this chunk.</span></div> <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;{</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; uint32_t a = state.h[0];</div> <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; uint8_t temp[20];</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; uint32_t b = state.h[1];</div> <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classSHA1.html#a5a6a8a6169aa48e0bccadb22a149ab7c">finalize</a>(temp, <span class="keyword">sizeof</span>(temp));</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; uint32_t c = state.h[2];</div> <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">formatHMACKey</a>(state.w, key, keyLen, 0x5C);</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; uint32_t d = state.h[3];</div> <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; state.length += 64 * 8;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; uint32_t e = state.h[4];</div> <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; processChunk();</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div> <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="classSHA1.html#aec77fbc5015f82bbf7055e535085656a">update</a>(temp, <span class="keyword">sizeof</span>(temp));</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// Perform the first 16 rounds of the compression function main loop.</span></div> <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="classSHA1.html#a5a6a8a6169aa48e0bccadb22a149ab7c">finalize</a>(hash, hashLen);</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; uint32_t temp;</div> <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; clean(temp);</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 16; ++index) {</div> <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;}</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; temp = leftRotate5(a) + ((b &amp; c) | ((~b) &amp; d)) + e + 0x5A827999 + state.w[index];</div> <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; e = d;</div> <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="keywordtype">void</span> SHA1::processChunk()</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; d = c;</div> <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;{</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; c = leftRotate30(b);</div> <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; uint8_t index;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; b = a;</div> <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; a = temp;</div> <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="comment">// Convert the first 16 words from big endian to host byte order.</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div> <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 16; ++index)</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div> <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; state.w[index] = be32toh(state.w[index]);</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="comment">// Perform the 64 remaining rounds. We expand the first 16 words to</span></div> <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="comment">// 80 in-place in the &quot;w&quot; array. This saves 256 bytes of memory</span></div> <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="comment">// Initialize the hash value for this chunk.</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="comment">// that would have otherwise need to be allocated to the &quot;w&quot; array.</span></div> <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; uint32_t a = state.h[0];</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">for</span> (; index &lt; 20; ++index) {</div> <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; uint32_t b = state.h[1];</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; temp = state.w[index &amp; 0x0F] = leftRotate1</div> <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; uint32_t c = state.h[2];</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; (state.w[(index - 3) &amp; 0x0F] ^ state.w[(index - 8) &amp; 0x0F] ^</div> <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; uint32_t d = state.h[3];</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; state.w[(index - 14) &amp; 0x0F] ^ state.w[(index - 16) &amp; 0x0F]);</div> <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; uint32_t e = state.h[4];</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; temp = leftRotate5(a) + ((b &amp; c) | ((~b) &amp; d)) + e + 0x5A827999 + temp;</div> <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; e = d;</div> <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="comment">// Perform the first 16 rounds of the compression function main loop.</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; d = c;</div> <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; uint32_t temp;</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; c = leftRotate30(b);</div> <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 16; ++index) {</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; b = a;</div> <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; temp = leftRotate5(a) + ((b &amp; c) | ((~b) &amp; d)) + e + 0x5A827999 + state.w[index];</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; a = temp;</div> <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; e = d;</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div> <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; d = c;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">for</span> (; index &lt; 40; ++index) {</div> <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; c = leftRotate30(b);</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; temp = state.w[index &amp; 0x0F] = leftRotate1</div> <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; b = a;</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; (state.w[(index - 3) &amp; 0x0F] ^ state.w[(index - 8) &amp; 0x0F] ^</div> <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; a = temp;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; state.w[(index - 14) &amp; 0x0F] ^ state.w[(index - 16) &amp; 0x0F]);</div> <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; temp = leftRotate5(a) + (b ^ c ^ d) + e + 0x6ED9EBA1 + temp;</div> <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; e = d;</div> <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="comment">// Perform the 64 remaining rounds. We expand the first 16 words to</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; d = c;</div> <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">// 80 in-place in the &quot;w&quot; array. This saves 256 bytes of memory</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; c = leftRotate30(b);</div> <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="comment">// that would have otherwise need to be allocated to the &quot;w&quot; array.</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; b = a;</div> <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">for</span> (; index &lt; 20; ++index) {</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; a = temp;</div> <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; temp = state.w[index &amp; 0x0F] = leftRotate1</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div> <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; (state.w[(index - 3) &amp; 0x0F] ^ state.w[(index - 8) &amp; 0x0F] ^</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">for</span> (; index &lt; 60; ++index) {</div> <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; state.w[(index - 14) &amp; 0x0F] ^ state.w[(index - 16) &amp; 0x0F]);</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; temp = state.w[index &amp; 0x0F] = leftRotate1</div> <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; temp = leftRotate5(a) + ((b &amp; c) | ((~b) &amp; d)) + e + 0x5A827999 + temp;</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; (state.w[(index - 3) &amp; 0x0F] ^ state.w[(index - 8) &amp; 0x0F] ^</div> <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; e = d;</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; state.w[(index - 14) &amp; 0x0F] ^ state.w[(index - 16) &amp; 0x0F]);</div> <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; d = c;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; temp = leftRotate5(a) + ((b &amp; c) | (b &amp; d) | (c &amp; d)) + e + 0x8F1BBCDC + temp;</div> <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; c = leftRotate30(b);</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; e = d;</div> <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; b = a;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; d = c;</div> <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; a = temp;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; c = leftRotate30(b);</div> <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; b = a;</div> <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">for</span> (; index &lt; 40; ++index) {</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; a = temp;</div> <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; temp = state.w[index &amp; 0x0F] = leftRotate1</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div> <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; (state.w[(index - 3) &amp; 0x0F] ^ state.w[(index - 8) &amp; 0x0F] ^</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">for</span> (; index &lt; 80; ++index) {</div> <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; state.w[(index - 14) &amp; 0x0F] ^ state.w[(index - 16) &amp; 0x0F]);</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; temp = state.w[index &amp; 0x0F] = leftRotate1</div> <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; temp = leftRotate5(a) + (b ^ c ^ d) + e + 0x6ED9EBA1 + temp;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; (state.w[(index - 3) &amp; 0x0F] ^ state.w[(index - 8) &amp; 0x0F] ^</div> <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; e = d;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; state.w[(index - 14) &amp; 0x0F] ^ state.w[(index - 16) &amp; 0x0F]);</div> <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; d = c;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; temp = leftRotate5(a) + (b ^ c ^ d) + e + 0xCA62C1D6 + temp;</div> <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; c = leftRotate30(b);</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; e = d;</div> <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; b = a;</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; d = c;</div> <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; a = temp;</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; c = leftRotate30(b);</div> <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; b = a;</div> <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">for</span> (; index &lt; 60; ++index) {</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; a = temp;</div> <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; temp = state.w[index &amp; 0x0F] = leftRotate1</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div> <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; (state.w[(index - 3) &amp; 0x0F] ^ state.w[(index - 8) &amp; 0x0F] ^</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div> <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; state.w[(index - 14) &amp; 0x0F] ^ state.w[(index - 16) &amp; 0x0F]);</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">// Add this chunk&#39;s hash to the result so far.</span></div> <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; temp = leftRotate5(a) + ((b &amp; c) | (b &amp; d) | (c &amp; d)) + e + 0x8F1BBCDC + temp;</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; state.h[0] += a;</div> <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; e = d;</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; state.h[1] += b;</div> <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; d = c;</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; state.h[2] += c;</div> <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; c = leftRotate30(b);</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; state.h[3] += d;</div> <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; b = a;</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; state.h[4] += e;</div> <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; a = temp;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div> <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="comment">// Attempt to clean up the stack.</span></div> <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">for</span> (; index &lt; 80; ++index) {</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; a = b = c = d = e = temp = 0;</div> <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; temp = state.w[index &amp; 0x0F] = leftRotate1</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;}</div> <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; (state.w[(index - 3) &amp; 0x0F] ^ state.w[(index - 8) &amp; 0x0F] ^</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; state.w[(index - 14) &amp; 0x0F] ^ state.w[(index - 16) &amp; 0x0F]);</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; temp = leftRotate5(a) + (b ^ c ^ d) + e + 0xCA62C1D6 + temp;</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; e = d;</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; d = c;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; c = leftRotate30(b);</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; b = a;</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; a = temp;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="comment">// Add this chunk&#39;s hash to the result so far.</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; state.h[0] += a;</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; state.h[1] += b;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; state.h[2] += c;</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; state.h[3] += d;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; state.h[4] += e;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">// Attempt to clean up the stack.</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; a = b = c = d = e = temp = 0;</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;}</div>
<div class="ttc" id="classSHA1_html_ad0a09a5100d59ff90c04ed5d4071b606"><div class="ttname"><a href="classSHA1.html#ad0a09a5100d59ff90c04ed5d4071b606">SHA1::resetHMAC</a></div><div class="ttdeci">void resetHMAC(const void *key, size_t keyLen)</div><div class="ttdoc">Resets the hash ready for a new HMAC hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00134">SHA1.cpp:134</a></div></div>
<div class="ttc" id="classSHA1_html_a8485d7c14fa29286cd3c7acfe438606d"><div class="ttname"><a href="classSHA1.html#a8485d7c14fa29286cd3c7acfe438606d">SHA1::~SHA1</a></div><div class="ttdeci">virtual ~SHA1()</div><div class="ttdoc">Destroys this SHA-1 hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00049">SHA1.cpp:49</a></div></div> <div class="ttc" id="classSHA1_html_a8485d7c14fa29286cd3c7acfe438606d"><div class="ttname"><a href="classSHA1.html#a8485d7c14fa29286cd3c7acfe438606d">SHA1::~SHA1</a></div><div class="ttdeci">virtual ~SHA1()</div><div class="ttdoc">Destroys this SHA-1 hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00049">SHA1.cpp:49</a></div></div>
<div class="ttc" id="classSHA1_html_ab71aaf39ed956320054861a2fbfa454f"><div class="ttname"><a href="classSHA1.html#ab71aaf39ed956320054861a2fbfa454f">SHA1::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00064">SHA1.cpp:64</a></div></div> <div class="ttc" id="classSHA1_html_ab71aaf39ed956320054861a2fbfa454f"><div class="ttname"><a href="classSHA1.html#ab71aaf39ed956320054861a2fbfa454f">SHA1::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00064">SHA1.cpp:64</a></div></div>
<div class="ttc" id="classSHA1_html_aec77fbc5015f82bbf7055e535085656a"><div class="ttname"><a href="classSHA1.html#aec77fbc5015f82bbf7055e535085656a">SHA1::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00075">SHA1.cpp:75</a></div></div> <div class="ttc" id="classSHA1_html_aec77fbc5015f82bbf7055e535085656a"><div class="ttname"><a href="classSHA1.html#aec77fbc5015f82bbf7055e535085656a">SHA1::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00075">SHA1.cpp:75</a></div></div>
<div class="ttc" id="classSHA1_html_a41a159d6565b04d3f620dcd720faaf3f"><div class="ttname"><a href="classSHA1.html#a41a159d6565b04d3f620dcd720faaf3f">SHA1::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00128">SHA1.cpp:128</a></div></div> <div class="ttc" id="classSHA1_html_a41a159d6565b04d3f620dcd720faaf3f"><div class="ttname"><a href="classSHA1.html#a41a159d6565b04d3f620dcd720faaf3f">SHA1::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00128">SHA1.cpp:128</a></div></div>
<div class="ttc" id="classSHA1_html_a816e3fd1a02cf1ecc67866cd8c7c309a"><div class="ttname"><a href="classSHA1.html#a816e3fd1a02cf1ecc67866cd8c7c309a">SHA1::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00059">SHA1.cpp:59</a></div></div> <div class="ttc" id="classSHA1_html_a816e3fd1a02cf1ecc67866cd8c7c309a"><div class="ttname"><a href="classSHA1.html#a816e3fd1a02cf1ecc67866cd8c7c309a">SHA1::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00059">SHA1.cpp:59</a></div></div>
<div class="ttc" id="classSHA1_html_a5a6a8a6169aa48e0bccadb22a149ab7c"><div class="ttname"><a href="classSHA1.html#a5a6a8a6169aa48e0bccadb22a149ab7c">SHA1::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00097">SHA1.cpp:97</a></div></div> <div class="ttc" id="classSHA1_html_a5a6a8a6169aa48e0bccadb22a149ab7c"><div class="ttname"><a href="classSHA1.html#a5a6a8a6169aa48e0bccadb22a149ab7c">SHA1::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00097">SHA1.cpp:97</a></div></div>
<div class="ttc" id="classSHA1_html_a791db53fe9d6cc0e383b25f1da0a97b8"><div class="ttname"><a href="classSHA1.html#a791db53fe9d6cc0e383b25f1da0a97b8">SHA1::finalizeHMAC</a></div><div class="ttdeci">void finalizeHMAC(const void *key, size_t keyLen, void *hash, size_t hashLen)</div><div class="ttdoc">Finalizes the HMAC hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00141">SHA1.cpp:141</a></div></div>
<div class="ttc" id="classSHA1_html_ab8cdb7233a8b81be07877049960ddfdd"><div class="ttname"><a href="classSHA1.html#ab8cdb7233a8b81be07877049960ddfdd">SHA1::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00054">SHA1.cpp:54</a></div></div> <div class="ttc" id="classSHA1_html_ab8cdb7233a8b81be07877049960ddfdd"><div class="ttname"><a href="classSHA1.html#ab8cdb7233a8b81be07877049960ddfdd">SHA1::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00054">SHA1.cpp:54</a></div></div>
<div class="ttc" id="classSHA1_html_ad49a5108ffd6996b1133bf41224ff726"><div class="ttname"><a href="classSHA1.html#ad49a5108ffd6996b1133bf41224ff726">SHA1::SHA1</a></div><div class="ttdeci">SHA1()</div><div class="ttdoc">Constructs a SHA-1 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00041">SHA1.cpp:41</a></div></div> <div class="ttc" id="classSHA1_html_ad49a5108ffd6996b1133bf41224ff726"><div class="ttname"><a href="classSHA1.html#ad49a5108ffd6996b1133bf41224ff726">SHA1::SHA1</a></div><div class="ttdeci">SHA1()</div><div class="ttdoc">Constructs a SHA-1 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00041">SHA1.cpp:41</a></div></div>
<div class="ttc" id="classHash_html_ab6f40c9af91dc3d738d9fcce59af63cc"><div class="ttname"><a href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">Hash::formatHMACKey</a></div><div class="ttdeci">void formatHMACKey(void *block, const void *key, size_t len, uint8_t pad)</div><div class="ttdoc">Formats a HMAC key into a block. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8cpp_source.html#l00162">Hash.cpp:162</a></div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -130,18 +130,22 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div> <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA1.html#a41a159d6565b04d3f620dcd720faaf3f">clear</a>();</div> <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA1.html#a41a159d6565b04d3f620dcd720faaf3f">clear</a>();</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div> <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">private</span>:</div> <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA1.html#ad0a09a5100d59ff90c04ed5d4071b606">resetHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">struct </span>{</div> <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA1.html#a791db53fe9d6cc0e383b25f1da0a97b8">finalizeHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen, <span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> hashLen);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; uint32_t h[5];</div> <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; uint32_t w[16];</div> <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; uint64_t length;</div> <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; uint8_t chunkSize;</div> <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; uint32_t h[5];</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; } state;</div> <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; uint32_t w[16];</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div> <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; uint64_t length;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">void</span> processChunk();</div> <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; uint8_t chunkSize;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;};</div> <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; } state;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div> <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#endif</span></div> <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">void</span> processChunk();</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;};</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="classSHA1_html_ad0a09a5100d59ff90c04ed5d4071b606"><div class="ttname"><a href="classSHA1.html#ad0a09a5100d59ff90c04ed5d4071b606">SHA1::resetHMAC</a></div><div class="ttdeci">void resetHMAC(const void *key, size_t keyLen)</div><div class="ttdoc">Resets the hash ready for a new HMAC hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00134">SHA1.cpp:134</a></div></div>
<div class="ttc" id="classSHA1_html_a8485d7c14fa29286cd3c7acfe438606d"><div class="ttname"><a href="classSHA1.html#a8485d7c14fa29286cd3c7acfe438606d">SHA1::~SHA1</a></div><div class="ttdeci">virtual ~SHA1()</div><div class="ttdoc">Destroys this SHA-1 hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00049">SHA1.cpp:49</a></div></div> <div class="ttc" id="classSHA1_html_a8485d7c14fa29286cd3c7acfe438606d"><div class="ttname"><a href="classSHA1.html#a8485d7c14fa29286cd3c7acfe438606d">SHA1::~SHA1</a></div><div class="ttdeci">virtual ~SHA1()</div><div class="ttdoc">Destroys this SHA-1 hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00049">SHA1.cpp:49</a></div></div>
<div class="ttc" id="classSHA1_html_ab71aaf39ed956320054861a2fbfa454f"><div class="ttname"><a href="classSHA1.html#ab71aaf39ed956320054861a2fbfa454f">SHA1::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00064">SHA1.cpp:64</a></div></div> <div class="ttc" id="classSHA1_html_ab71aaf39ed956320054861a2fbfa454f"><div class="ttname"><a href="classSHA1.html#ab71aaf39ed956320054861a2fbfa454f">SHA1::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00064">SHA1.cpp:64</a></div></div>
<div class="ttc" id="classHash_html"><div class="ttname"><a href="classHash.html">Hash</a></div><div class="ttdoc">Abstract base class for cryptographic hash algorithms. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8h_source.html#l00029">Hash.h:29</a></div></div> <div class="ttc" id="classHash_html"><div class="ttname"><a href="classHash.html">Hash</a></div><div class="ttdoc">Abstract base class for cryptographic hash algorithms. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8h_source.html#l00029">Hash.h:29</a></div></div>
@ -150,12 +154,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="ttc" id="classSHA1_html_a816e3fd1a02cf1ecc67866cd8c7c309a"><div class="ttname"><a href="classSHA1.html#a816e3fd1a02cf1ecc67866cd8c7c309a">SHA1::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00059">SHA1.cpp:59</a></div></div> <div class="ttc" id="classSHA1_html_a816e3fd1a02cf1ecc67866cd8c7c309a"><div class="ttname"><a href="classSHA1.html#a816e3fd1a02cf1ecc67866cd8c7c309a">SHA1::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00059">SHA1.cpp:59</a></div></div>
<div class="ttc" id="classSHA1_html"><div class="ttname"><a href="classSHA1.html">SHA1</a></div><div class="ttdoc">SHA-1 hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8h_source.html#l00028">SHA1.h:28</a></div></div> <div class="ttc" id="classSHA1_html"><div class="ttname"><a href="classSHA1.html">SHA1</a></div><div class="ttdoc">SHA-1 hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8h_source.html#l00028">SHA1.h:28</a></div></div>
<div class="ttc" id="classSHA1_html_a5a6a8a6169aa48e0bccadb22a149ab7c"><div class="ttname"><a href="classSHA1.html#a5a6a8a6169aa48e0bccadb22a149ab7c">SHA1::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00097">SHA1.cpp:97</a></div></div> <div class="ttc" id="classSHA1_html_a5a6a8a6169aa48e0bccadb22a149ab7c"><div class="ttname"><a href="classSHA1.html#a5a6a8a6169aa48e0bccadb22a149ab7c">SHA1::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00097">SHA1.cpp:97</a></div></div>
<div class="ttc" id="classSHA1_html_a791db53fe9d6cc0e383b25f1da0a97b8"><div class="ttname"><a href="classSHA1.html#a791db53fe9d6cc0e383b25f1da0a97b8">SHA1::finalizeHMAC</a></div><div class="ttdeci">void finalizeHMAC(const void *key, size_t keyLen, void *hash, size_t hashLen)</div><div class="ttdoc">Finalizes the HMAC hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00141">SHA1.cpp:141</a></div></div>
<div class="ttc" id="classSHA1_html_ab8cdb7233a8b81be07877049960ddfdd"><div class="ttname"><a href="classSHA1.html#ab8cdb7233a8b81be07877049960ddfdd">SHA1::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00054">SHA1.cpp:54</a></div></div> <div class="ttc" id="classSHA1_html_ab8cdb7233a8b81be07877049960ddfdd"><div class="ttname"><a href="classSHA1.html#ab8cdb7233a8b81be07877049960ddfdd">SHA1::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00054">SHA1.cpp:54</a></div></div>
<div class="ttc" id="classSHA1_html_ad49a5108ffd6996b1133bf41224ff726"><div class="ttname"><a href="classSHA1.html#ad49a5108ffd6996b1133bf41224ff726">SHA1::SHA1</a></div><div class="ttdeci">SHA1()</div><div class="ttdoc">Constructs a SHA-1 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00041">SHA1.cpp:41</a></div></div> <div class="ttc" id="classSHA1_html_ad49a5108ffd6996b1133bf41224ff726"><div class="ttname"><a href="classSHA1.html#ad49a5108ffd6996b1133bf41224ff726">SHA1::SHA1</a></div><div class="ttdeci">SHA1()</div><div class="ttdoc">Constructs a SHA-1 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA1_8cpp_source.html#l00041">SHA1.cpp:41</a></div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -210,114 +210,136 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classSHA256.html#ad9d80d8fdccffb15497bd36285afce65">reset</a>();</div> <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classSHA256.html#ad9d80d8fdccffb15497bd36285afce65">reset</a>();</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;}</div> <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;}</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div> <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="keywordtype">void</span> SHA256::processChunk()</div> <div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classSHA256.html#a2271683d6f1c7c103272f1dec55a6871"> 139</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA256.html#a2271683d6f1c7c103272f1dec55a6871">SHA256::resetHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen)</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;{</div> <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;{</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">// Round constants for SHA-256.</span></div> <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">formatHMACKey</a>(state.w, key, keyLen, 0x36);</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keyword">static</span> uint32_t <span class="keyword">const</span> k[64] PROGMEM = {</div> <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; state.length += 64 * 8;</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,</div> <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; processChunk();</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,</div> <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;}</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,</div> <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,</div> <div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="classSHA256.html#a28bc2510c5bdaf210a012f9f21a753cd"> 146</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA256.html#a28bc2510c5bdaf210a012f9f21a753cd">SHA256::finalizeHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen, <span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> hashLen)</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,</div> <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;{</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,</div> <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; uint8_t temp[32];</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,</div> <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="classSHA256.html#a695157bcdf5495ba892ebac309f3abd6">finalize</a>(temp, <span class="keyword">sizeof</span>(temp));</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,</div> <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">formatHMACKey</a>(state.w, key, keyLen, 0x5C);</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,</div> <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; state.length += 64 * 8;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,</div> <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; processChunk();</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,</div> <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classSHA256.html#a555bf8efb17afd4842d2e55a1f39f27b">update</a>(temp, <span class="keyword">sizeof</span>(temp));</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,</div> <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="classSHA256.html#a695157bcdf5495ba892ebac309f3abd6">finalize</a>(hash, hashLen);</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,</div> <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; clean(temp);</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,</div> <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,</div> <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2</div> <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="keywordtype">void</span> SHA256::processChunk()</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; };</div> <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;{</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div> <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="comment">// Round constants for SHA-256.</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="comment">// Convert the first 16 words from big endian to host byte order.</span></div> <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">static</span> uint32_t <span class="keyword">const</span> k[64] PROGMEM = {</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; uint8_t index;</div> <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 16; ++index)</div> <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; state.w[index] = be32toh(state.w[index]);</div> <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div> <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="comment">// Initialise working variables to the current hash value.</span></div> <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; uint32_t a = state.h[0];</div> <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; uint32_t b = state.h[1];</div> <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; uint32_t c = state.h[2];</div> <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; uint32_t d = state.h[3];</div> <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; uint32_t e = state.h[4];</div> <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; uint32_t f = state.h[5];</div> <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; uint32_t g = state.h[6];</div> <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; uint32_t h = state.h[7];</div> <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div> <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="comment">// Perform the first 16 rounds of the compression function main loop.</span></div> <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; uint32_t temp1, temp2;</div> <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 16; ++index) {</div> <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; };</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; temp1 = h + pgm_read_dword(k + index) + state.w[index] +</div> <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; (rightRotate6(e) ^ rightRotate11(e) ^ rightRotate25(e)) +</div> <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">// Convert the first 16 words from big endian to host byte order.</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; ((e &amp; f) ^ ((~e) &amp; g));</div> <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; uint8_t index;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; temp2 = (rightRotate2(a) ^ rightRotate13(a) ^ rightRotate22(a)) +</div> <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 16; ++index)</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; ((a &amp; b) ^ (a &amp; c) ^ (b &amp; c));</div> <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; state.w[index] = be32toh(state.w[index]);</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; h = g;</div> <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; g = f;</div> <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="comment">// Initialise working variables to the current hash value.</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; f = e;</div> <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; uint32_t a = state.h[0];</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; e = d + temp1;</div> <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; uint32_t b = state.h[1];</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; d = c;</div> <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; uint32_t c = state.h[2];</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; c = b;</div> <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; uint32_t d = state.h[3];</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; b = a;</div> <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; uint32_t e = state.h[4];</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; a = temp1 + temp2;</div> <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; uint32_t f = state.h[5];</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div> <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; uint32_t g = state.h[6];</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div> <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; uint32_t h = state.h[7];</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="comment">// Perform the 48 remaining rounds. We expand the first 16 words to</span></div> <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="comment">// 64 in-place in the &quot;w&quot; array. This saves 192 bytes of memory</span></div> <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="comment">// Perform the first 16 rounds of the compression function main loop.</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="comment">// that would have otherwise need to be allocated to the &quot;w&quot; array.</span></div> <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; uint32_t temp1, temp2;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">for</span> (; index &lt; 64; ++index) {</div> <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 16; ++index) {</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="comment">// Expand the next word.</span></div> <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; temp1 = h + pgm_read_dword(k + index) + state.w[index] +</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; temp1 = state.w[(index - 15) &amp; 0x0F];</div> <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; (rightRotate6(e) ^ rightRotate11(e) ^ rightRotate25(e)) +</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; temp2 = state.w[(index - 2) &amp; 0x0F];</div> <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; ((e &amp; f) ^ ((~e) &amp; g));</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; temp1 = state.w[index &amp; 0x0F] =</div> <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; temp2 = (rightRotate2(a) ^ rightRotate13(a) ^ rightRotate22(a)) +</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; state.w[(index - 16) &amp; 0x0F] + state.w[(index - 7) &amp; 0x0F] +</div> <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; ((a &amp; b) ^ (a &amp; c) ^ (b &amp; c));</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; (rightRotate7(temp1) ^ rightRotate18(temp1) ^ (temp1 &gt;&gt; 3)) +</div> <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; h = g;</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; (rightRotate17(temp2) ^ rightRotate19(temp2) ^ (temp2 &gt;&gt; 10));</div> <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; g = f;</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div> <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; f = e;</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// Perform the round.</span></div> <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; e = d + temp1;</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; temp1 = h + pgm_read_dword(k + index) + temp1 +</div> <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; d = c;</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; (rightRotate6(e) ^ rightRotate11(e) ^ rightRotate25(e)) +</div> <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; c = b;</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; ((e &amp; f) ^ ((~e) &amp; g));</div> <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; b = a;</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; temp2 = (rightRotate2(a) ^ rightRotate13(a) ^ rightRotate22(a)) +</div> <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; a = temp1 + temp2;</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; ((a &amp; b) ^ (a &amp; c) ^ (b &amp; c));</div> <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; h = g;</div> <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; g = f;</div> <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="comment">// Perform the 48 remaining rounds. We expand the first 16 words to</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; f = e;</div> <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">// 64 in-place in the &quot;w&quot; array. This saves 192 bytes of memory</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; e = d + temp1;</div> <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="comment">// that would have otherwise need to be allocated to the &quot;w&quot; array.</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; d = c;</div> <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">for</span> (; index &lt; 64; ++index) {</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; c = b;</div> <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="comment">// Expand the next word.</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; b = a;</div> <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; temp1 = state.w[(index - 15) &amp; 0x0F];</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; a = temp1 + temp2;</div> <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; temp2 = state.w[(index - 2) &amp; 0x0F];</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div> <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; temp1 = state.w[index &amp; 0x0F] =</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div> <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; state.w[(index - 16) &amp; 0x0F] + state.w[(index - 7) &amp; 0x0F] +</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="comment">// Add the compressed chunk to the current hash value.</span></div> <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; (rightRotate7(temp1) ^ rightRotate18(temp1) ^ (temp1 &gt;&gt; 3)) +</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; state.h[0] += a;</div> <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; (rightRotate17(temp2) ^ rightRotate19(temp2) ^ (temp2 &gt;&gt; 10));</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; state.h[1] += b;</div> <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; state.h[2] += c;</div> <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="comment">// Perform the round.</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; state.h[3] += d;</div> <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; temp1 = h + pgm_read_dword(k + index) + temp1 +</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; state.h[4] += e;</div> <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; (rightRotate6(e) ^ rightRotate11(e) ^ rightRotate25(e)) +</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; state.h[5] += f;</div> <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; ((e &amp; f) ^ ((~e) &amp; g));</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; state.h[6] += g;</div> <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; temp2 = (rightRotate2(a) ^ rightRotate13(a) ^ rightRotate22(a)) +</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; state.h[7] += h;</div> <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; ((a &amp; b) ^ (a &amp; c) ^ (b &amp; c));</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div> <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; h = g;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment">// Attempt to clean up the stack.</span></div> <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; g = f;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; a = b = c = d = e = f = g = h = temp1 = temp2 = 0;</div> <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; f = e;</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;}</div> <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; e = d + temp1;</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; d = c;</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; c = b;</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; b = a;</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; a = temp1 + temp2;</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="comment">// Add the compressed chunk to the current hash value.</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; state.h[0] += a;</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; state.h[1] += b;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; state.h[2] += c;</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; state.h[3] += d;</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; state.h[4] += e;</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; state.h[5] += f;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; state.h[6] += g;</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; state.h[7] += h;</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="comment">// Attempt to clean up the stack.</span></div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; a = b = c = d = e = f = g = h = temp1 = temp2 = 0;</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;}</div>
<div class="ttc" id="classSHA256_html_ad9d80d8fdccffb15497bd36285afce65"><div class="ttname"><a href="classSHA256.html#ad9d80d8fdccffb15497bd36285afce65">SHA256::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00066">SHA256.cpp:66</a></div></div> <div class="ttc" id="classSHA256_html_ad9d80d8fdccffb15497bd36285afce65"><div class="ttname"><a href="classSHA256.html#ad9d80d8fdccffb15497bd36285afce65">SHA256::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00066">SHA256.cpp:66</a></div></div>
<div class="ttc" id="classSHA256_html_ab672831c542df07ff03ded25760feec2"><div class="ttname"><a href="classSHA256.html#ab672831c542df07ff03ded25760feec2">SHA256::SHA256</a></div><div class="ttdeci">SHA256()</div><div class="ttdoc">Constructs a SHA-256 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00042">SHA256.cpp:42</a></div></div> <div class="ttc" id="classSHA256_html_ab672831c542df07ff03ded25760feec2"><div class="ttname"><a href="classSHA256.html#ab672831c542df07ff03ded25760feec2">SHA256::SHA256</a></div><div class="ttdeci">SHA256()</div><div class="ttdoc">Constructs a SHA-256 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00042">SHA256.cpp:42</a></div></div>
<div class="ttc" id="classSHA256_html_a695157bcdf5495ba892ebac309f3abd6"><div class="ttname"><a href="classSHA256.html#a695157bcdf5495ba892ebac309f3abd6">SHA256::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00102">SHA256.cpp:102</a></div></div> <div class="ttc" id="classSHA256_html_a695157bcdf5495ba892ebac309f3abd6"><div class="ttname"><a href="classSHA256.html#a695157bcdf5495ba892ebac309f3abd6">SHA256::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00102">SHA256.cpp:102</a></div></div>
<div class="ttc" id="classSHA256_html_ad82f2925b612de315b289017e023a73b"><div class="ttname"><a href="classSHA256.html#ad82f2925b612de315b289017e023a73b">SHA256::~SHA256</a></div><div class="ttdeci">virtual ~SHA256()</div><div class="ttdoc">Destroys this SHA-256 hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00051">SHA256.cpp:51</a></div></div> <div class="ttc" id="classSHA256_html_ad82f2925b612de315b289017e023a73b"><div class="ttname"><a href="classSHA256.html#ad82f2925b612de315b289017e023a73b">SHA256::~SHA256</a></div><div class="ttdeci">virtual ~SHA256()</div><div class="ttdoc">Destroys this SHA-256 hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00051">SHA256.cpp:51</a></div></div>
<div class="ttc" id="classSHA256_html_a71bbd9064f9d6191d0647f867953a858"><div class="ttname"><a href="classSHA256.html#a71bbd9064f9d6191d0647f867953a858">SHA256::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00061">SHA256.cpp:61</a></div></div> <div class="ttc" id="classSHA256_html_a71bbd9064f9d6191d0647f867953a858"><div class="ttname"><a href="classSHA256.html#a71bbd9064f9d6191d0647f867953a858">SHA256::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00061">SHA256.cpp:61</a></div></div>
<div class="ttc" id="classSHA256_html_a28bc2510c5bdaf210a012f9f21a753cd"><div class="ttname"><a href="classSHA256.html#a28bc2510c5bdaf210a012f9f21a753cd">SHA256::finalizeHMAC</a></div><div class="ttdeci">void finalizeHMAC(const void *key, size_t keyLen, void *hash, size_t hashLen)</div><div class="ttdoc">Finalizes the HMAC hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00146">SHA256.cpp:146</a></div></div>
<div class="ttc" id="classSHA256_html_a555bf8efb17afd4842d2e55a1f39f27b"><div class="ttname"><a href="classSHA256.html#a555bf8efb17afd4842d2e55a1f39f27b">SHA256::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00080">SHA256.cpp:80</a></div></div> <div class="ttc" id="classSHA256_html_a555bf8efb17afd4842d2e55a1f39f27b"><div class="ttname"><a href="classSHA256.html#a555bf8efb17afd4842d2e55a1f39f27b">SHA256::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00080">SHA256.cpp:80</a></div></div>
<div class="ttc" id="classSHA256_html_a103d5bc5ced792464a82cb1d7986de94"><div class="ttname"><a href="classSHA256.html#a103d5bc5ced792464a82cb1d7986de94">SHA256::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00056">SHA256.cpp:56</a></div></div> <div class="ttc" id="classSHA256_html_a103d5bc5ced792464a82cb1d7986de94"><div class="ttname"><a href="classSHA256.html#a103d5bc5ced792464a82cb1d7986de94">SHA256::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00056">SHA256.cpp:56</a></div></div>
<div class="ttc" id="classSHA256_html_add0d1649d533b27005ccd8508398c689"><div class="ttname"><a href="classSHA256.html#add0d1649d533b27005ccd8508398c689">SHA256::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00133">SHA256.cpp:133</a></div></div> <div class="ttc" id="classSHA256_html_add0d1649d533b27005ccd8508398c689"><div class="ttname"><a href="classSHA256.html#add0d1649d533b27005ccd8508398c689">SHA256::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00133">SHA256.cpp:133</a></div></div>
<div class="ttc" id="classHash_html_ab6f40c9af91dc3d738d9fcce59af63cc"><div class="ttname"><a href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">Hash::formatHMACKey</a></div><div class="ttdeci">void formatHMACKey(void *block, const void *key, size_t len, uint8_t pad)</div><div class="ttdoc">Formats a HMAC key into a block. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8cpp_source.html#l00162">Hash.cpp:162</a></div></div>
<div class="ttc" id="classSHA256_html_a2271683d6f1c7c103272f1dec55a6871"><div class="ttname"><a href="classSHA256.html#a2271683d6f1c7c103272f1dec55a6871">SHA256::resetHMAC</a></div><div class="ttdeci">void resetHMAC(const void *key, size_t keyLen)</div><div class="ttdoc">Resets the hash ready for a new HMAC hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00139">SHA256.cpp:139</a></div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -130,18 +130,21 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div> <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA256.html#add0d1649d533b27005ccd8508398c689">clear</a>();</div> <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA256.html#add0d1649d533b27005ccd8508398c689">clear</a>();</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div> <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">private</span>:</div> <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA256.html#a2271683d6f1c7c103272f1dec55a6871">resetHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">struct </span>{</div> <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA256.html#a28bc2510c5bdaf210a012f9f21a753cd">finalizeHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen, <span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> hashLen);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; uint32_t h[8];</div> <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; uint32_t w[16];</div> <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; uint64_t length;</div> <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; uint8_t chunkSize;</div> <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; uint32_t h[8];</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; } state;</div> <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; uint32_t w[16];</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div> <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; uint64_t length;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">void</span> processChunk();</div> <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; uint8_t chunkSize;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;};</div> <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; } state;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div> <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#endif</span></div> <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">void</span> processChunk();</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;};</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="classSHA256_html_ad9d80d8fdccffb15497bd36285afce65"><div class="ttname"><a href="classSHA256.html#ad9d80d8fdccffb15497bd36285afce65">SHA256::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00066">SHA256.cpp:66</a></div></div> <div class="ttc" id="classSHA256_html_ad9d80d8fdccffb15497bd36285afce65"><div class="ttname"><a href="classSHA256.html#ad9d80d8fdccffb15497bd36285afce65">SHA256::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00066">SHA256.cpp:66</a></div></div>
<div class="ttc" id="classSHA256_html_ab672831c542df07ff03ded25760feec2"><div class="ttname"><a href="classSHA256.html#ab672831c542df07ff03ded25760feec2">SHA256::SHA256</a></div><div class="ttdeci">SHA256()</div><div class="ttdoc">Constructs a SHA-256 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00042">SHA256.cpp:42</a></div></div> <div class="ttc" id="classSHA256_html_ab672831c542df07ff03ded25760feec2"><div class="ttname"><a href="classSHA256.html#ab672831c542df07ff03ded25760feec2">SHA256::SHA256</a></div><div class="ttdeci">SHA256()</div><div class="ttdoc">Constructs a SHA-256 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00042">SHA256.cpp:42</a></div></div>
<div class="ttc" id="classHash_html"><div class="ttname"><a href="classHash.html">Hash</a></div><div class="ttdoc">Abstract base class for cryptographic hash algorithms. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8h_source.html#l00029">Hash.h:29</a></div></div> <div class="ttc" id="classHash_html"><div class="ttname"><a href="classHash.html">Hash</a></div><div class="ttdoc">Abstract base class for cryptographic hash algorithms. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8h_source.html#l00029">Hash.h:29</a></div></div>
@ -149,13 +152,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="ttc" id="classSHA256_html_ad82f2925b612de315b289017e023a73b"><div class="ttname"><a href="classSHA256.html#ad82f2925b612de315b289017e023a73b">SHA256::~SHA256</a></div><div class="ttdeci">virtual ~SHA256()</div><div class="ttdoc">Destroys this SHA-256 hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00051">SHA256.cpp:51</a></div></div> <div class="ttc" id="classSHA256_html_ad82f2925b612de315b289017e023a73b"><div class="ttname"><a href="classSHA256.html#ad82f2925b612de315b289017e023a73b">SHA256::~SHA256</a></div><div class="ttdeci">virtual ~SHA256()</div><div class="ttdoc">Destroys this SHA-256 hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00051">SHA256.cpp:51</a></div></div>
<div class="ttc" id="classSHA256_html"><div class="ttname"><a href="classSHA256.html">SHA256</a></div><div class="ttdoc">SHA-256 hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8h_source.html#l00028">SHA256.h:28</a></div></div> <div class="ttc" id="classSHA256_html"><div class="ttname"><a href="classSHA256.html">SHA256</a></div><div class="ttdoc">SHA-256 hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8h_source.html#l00028">SHA256.h:28</a></div></div>
<div class="ttc" id="classSHA256_html_a71bbd9064f9d6191d0647f867953a858"><div class="ttname"><a href="classSHA256.html#a71bbd9064f9d6191d0647f867953a858">SHA256::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00061">SHA256.cpp:61</a></div></div> <div class="ttc" id="classSHA256_html_a71bbd9064f9d6191d0647f867953a858"><div class="ttname"><a href="classSHA256.html#a71bbd9064f9d6191d0647f867953a858">SHA256::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00061">SHA256.cpp:61</a></div></div>
<div class="ttc" id="classSHA256_html_a28bc2510c5bdaf210a012f9f21a753cd"><div class="ttname"><a href="classSHA256.html#a28bc2510c5bdaf210a012f9f21a753cd">SHA256::finalizeHMAC</a></div><div class="ttdeci">void finalizeHMAC(const void *key, size_t keyLen, void *hash, size_t hashLen)</div><div class="ttdoc">Finalizes the HMAC hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00146">SHA256.cpp:146</a></div></div>
<div class="ttc" id="classSHA256_html_a555bf8efb17afd4842d2e55a1f39f27b"><div class="ttname"><a href="classSHA256.html#a555bf8efb17afd4842d2e55a1f39f27b">SHA256::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00080">SHA256.cpp:80</a></div></div> <div class="ttc" id="classSHA256_html_a555bf8efb17afd4842d2e55a1f39f27b"><div class="ttname"><a href="classSHA256.html#a555bf8efb17afd4842d2e55a1f39f27b">SHA256::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00080">SHA256.cpp:80</a></div></div>
<div class="ttc" id="classSHA256_html_a103d5bc5ced792464a82cb1d7986de94"><div class="ttname"><a href="classSHA256.html#a103d5bc5ced792464a82cb1d7986de94">SHA256::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00056">SHA256.cpp:56</a></div></div> <div class="ttc" id="classSHA256_html_a103d5bc5ced792464a82cb1d7986de94"><div class="ttname"><a href="classSHA256.html#a103d5bc5ced792464a82cb1d7986de94">SHA256::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00056">SHA256.cpp:56</a></div></div>
<div class="ttc" id="classSHA256_html_add0d1649d533b27005ccd8508398c689"><div class="ttname"><a href="classSHA256.html#add0d1649d533b27005ccd8508398c689">SHA256::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00133">SHA256.cpp:133</a></div></div> <div class="ttc" id="classSHA256_html_add0d1649d533b27005ccd8508398c689"><div class="ttname"><a href="classSHA256.html#add0d1649d533b27005ccd8508398c689">SHA256::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00133">SHA256.cpp:133</a></div></div>
<div class="ttc" id="classSHA256_html_a2271683d6f1c7c103272f1dec55a6871"><div class="ttname"><a href="classSHA256.html#a2271683d6f1c7c103272f1dec55a6871">SHA256::resetHMAC</a></div><div class="ttdeci">void resetHMAC(const void *key, size_t keyLen)</div><div class="ttdoc">Resets the hash ready for a new HMAC hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA256_8cpp_source.html#l00139">SHA256.cpp:139</a></div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -111,117 +111,153 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> */</span></div> <div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div> <div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;SHA3.h&quot;</span></div> <div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;SHA3.h&quot;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div> <div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;Crypto.h&quot;</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classSHA3__256.html#ac091b276c6d80a981fa64a9e8c68ca87"> 37</a></span>&#160;<a class="code" href="classSHA3__256.html#ac091b276c6d80a981fa64a9e8c68ca87">SHA3_256::SHA3_256</a>()</div> <div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div> <div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classSHA3__256.html#ac091b276c6d80a981fa64a9e8c68ca87"> 38</a></span>&#160;<a class="code" href="classSHA3__256.html#ac091b276c6d80a981fa64a9e8c68ca87">SHA3_256::SHA3_256</a>()</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; core.<a class="code" href="classKeccakCore.html#ab3c1905f2002e49aca085d6f0b5546f7">setCapacity</a>(512);</div> <div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;{</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;}</div> <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; core.<a class="code" href="classKeccakCore.html#ab3c1905f2002e49aca085d6f0b5546f7">setCapacity</a>(512);</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div> <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;}</div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSHA3__256.html#a835d09eb88d477cd162330c493cbdf64"> 45</a></span>&#160;<a class="code" href="classSHA3__256.html#a835d09eb88d477cd162330c493cbdf64">SHA3_256::~SHA3_256</a>()</div> <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div> <div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSHA3__256.html#a835d09eb88d477cd162330c493cbdf64"> 46</a></span>&#160;<a class="code" href="classSHA3__256.html#a835d09eb88d477cd162330c493cbdf64">SHA3_256::~SHA3_256</a>()</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">// The destructor for the KeccakCore object will do most of the work.</span></div> <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div> <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">// The destructor for the KeccakCore object will do most of the work.</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div> <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div>
<div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSHA3__256.html#a2c5c08119d5ad853021f929a763784f3"> 50</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classSHA3__256.html#a2c5c08119d5ad853021f929a763784f3">SHA3_256::hashSize</a>()<span class="keyword"> const</span></div> <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword"></span>{</div> <div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSHA3__256.html#a2c5c08119d5ad853021f929a763784f3"> 51</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classSHA3__256.html#a2c5c08119d5ad853021f929a763784f3">SHA3_256::hashSize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> 32;</div> <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div> <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> 32;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div> <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSHA3__256.html#a88a50ab6c2d4ad105cda2dd504d96e7c"> 55</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classSHA3__256.html#a88a50ab6c2d4ad105cda2dd504d96e7c">SHA3_256::blockSize</a>()<span class="keyword"> const</span></div> <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword"></span>{</div> <div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSHA3__256.html#a88a50ab6c2d4ad105cda2dd504d96e7c"> 56</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classSHA3__256.html#a88a50ab6c2d4ad105cda2dd504d96e7c">SHA3_256::blockSize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> core.<a class="code" href="classKeccakCore.html#a3742ed39151811b5d1c263c75ee5b20a">blockSize</a>();</div> <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div> <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> core.<a class="code" href="classKeccakCore.html#a3742ed39151811b5d1c263c75ee5b20a">blockSize</a>();</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div> <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSHA3__256.html#a57b5f29347a733e04fe47d60621f3202"> 60</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__256.html#a57b5f29347a733e04fe47d60621f3202">SHA3_256::reset</a>()</div> <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;{</div> <div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSHA3__256.html#a57b5f29347a733e04fe47d60621f3202"> 61</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__256.html#a57b5f29347a733e04fe47d60621f3202">SHA3_256::reset</a>()</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; core.<a class="code" href="classKeccakCore.html#a5a322eb7e3b5c1eaad127c9c6e6a529b">reset</a>();</div> <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;{</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div> <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; core.<a class="code" href="classKeccakCore.html#a5a322eb7e3b5c1eaad127c9c6e6a529b">reset</a>();</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div> <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSHA3__256.html#a8356957ea403c5da326fc6899b91ea71"> 65</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__256.html#a8356957ea403c5da326fc6899b91ea71">SHA3_256::update</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> len)</div> <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;{</div> <div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSHA3__256.html#a8356957ea403c5da326fc6899b91ea71"> 66</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__256.html#a8356957ea403c5da326fc6899b91ea71">SHA3_256::update</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> len)</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; core.<a class="code" href="classKeccakCore.html#aaaa0355ccec0f469ac8eb577bdf853ed">update</a>(data, len);</div> <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;{</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;}</div> <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; core.<a class="code" href="classKeccakCore.html#aaaa0355ccec0f469ac8eb577bdf853ed">update</a>(data, len);</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div> <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div>
<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSHA3__256.html#a8fe7cad1f83bd1bae1a0d521324247a1"> 70</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__256.html#a8fe7cad1f83bd1bae1a0d521324247a1">SHA3_256::finalize</a>(<span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> len)</div> <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;{</div> <div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSHA3__256.html#a8fe7cad1f83bd1bae1a0d521324247a1"> 71</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__256.html#a8fe7cad1f83bd1bae1a0d521324247a1">SHA3_256::finalize</a>(<span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> len)</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">// Pad the final block and then extract the hash value.</span></div> <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;{</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; core.<a class="code" href="classKeccakCore.html#a97852ee4381ced17ee6d21704cf0b4d7">pad</a>(0x06);</div> <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">// Pad the final block and then extract the hash value.</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; core.<a class="code" href="classKeccakCore.html#aad83ece853c0cc15fcab947fdcba924f">extract</a>(hash, len);</div> <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; core.<a class="code" href="classKeccakCore.html#a97852ee4381ced17ee6d21704cf0b4d7">pad</a>(0x06);</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;}</div> <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; core.<a class="code" href="classKeccakCore.html#aad83ece853c0cc15fcab947fdcba924f">extract</a>(hash, len);</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div> <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;}</div>
<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSHA3__256.html#a531467f995ef6fc901ad8c2b5776a8d1"> 77</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__256.html#a531467f995ef6fc901ad8c2b5776a8d1">SHA3_256::clear</a>()</div> <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;{</div> <div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSHA3__256.html#a531467f995ef6fc901ad8c2b5776a8d1"> 78</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__256.html#a531467f995ef6fc901ad8c2b5776a8d1">SHA3_256::clear</a>()</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; core.<a class="code" href="classKeccakCore.html#aeff1df56e4a3103c99c1fe4307e60c66">clear</a>();</div> <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;{</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;}</div> <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; core.<a class="code" href="classKeccakCore.html#aeff1df56e4a3103c99c1fe4307e60c66">clear</a>();</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div> <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;}</div>
<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSHA3__512.html#a5f8bc4180e9d19597f499468098a82a4"> 94</a></span>&#160;<a class="code" href="classSHA3__512.html#a5f8bc4180e9d19597f499468098a82a4">SHA3_512::SHA3_512</a>()</div> <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;{</div> <div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSHA3__256.html#a324fe4d268bbf23d7b492033fe3bc632"> 83</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__256.html#a324fe4d268bbf23d7b492033fe3bc632">SHA3_256::resetHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen)</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; core.<a class="code" href="classKeccakCore.html#ab3c1905f2002e49aca085d6f0b5546f7">setCapacity</a>(1024);</div> <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;{</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;}</div> <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; core.<a class="code" href="classKeccakCore.html#aeff6b3357916bf426b60d3629db52628">setHMACKey</a>(key, keyLen, 0x36, 32);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div> <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;}</div>
<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSHA3__512.html#a327005ebc8c0768118ec7d334c583f85"> 102</a></span>&#160;<a class="code" href="classSHA3__512.html#a327005ebc8c0768118ec7d334c583f85">SHA3_512::~SHA3_512</a>()</div> <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;{</div> <div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSHA3__256.html#a001215fa1b7d2c30717b4b5b1618d68c"> 88</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__256.html#a001215fa1b7d2c30717b4b5b1618d68c">SHA3_256::finalizeHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen, <span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> hashLen)</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="comment">// The destructor for the KeccakCore object will do most of the work.</span></div> <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;{</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;}</div> <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; uint8_t temp[32];</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div> <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="classSHA3__256.html#a8fe7cad1f83bd1bae1a0d521324247a1">finalize</a>(temp, <span class="keyword">sizeof</span>(temp));</div>
<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSHA3__512.html#a9f13e4d2b99dd204e96b11142e9c1803"> 107</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classSHA3__512.html#a9f13e4d2b99dd204e96b11142e9c1803">SHA3_512::hashSize</a>()<span class="keyword"> const</span></div> <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; core.<a class="code" href="classKeccakCore.html#aeff6b3357916bf426b60d3629db52628">setHMACKey</a>(key, keyLen, 0x5C, 32);</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keyword"></span>{</div> <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; core.<a class="code" href="classKeccakCore.html#aaaa0355ccec0f469ac8eb577bdf853ed">update</a>(temp, <span class="keyword">sizeof</span>(temp));</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> 64;</div> <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classSHA3__256.html#a8fe7cad1f83bd1bae1a0d521324247a1">finalize</a>(hash, hashLen);</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div> <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; clean(temp);</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div> <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;}</div>
<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSHA3__512.html#a4493a717bad8fa5cd35fe3aa36f25ab3"> 112</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classSHA3__512.html#a4493a717bad8fa5cd35fe3aa36f25ab3">SHA3_512::blockSize</a>()<span class="keyword"> const</span></div> <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="keyword"></span>{</div> <div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSHA3__512.html#a5f8bc4180e9d19597f499468098a82a4"> 110</a></span>&#160;<a class="code" href="classSHA3__512.html#a5f8bc4180e9d19597f499468098a82a4">SHA3_512::SHA3_512</a>()</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> core.<a class="code" href="classKeccakCore.html#a3742ed39151811b5d1c263c75ee5b20a">blockSize</a>();</div> <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;{</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;}</div> <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; core.<a class="code" href="classKeccakCore.html#ab3c1905f2002e49aca085d6f0b5546f7">setCapacity</a>(1024);</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div> <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;}</div>
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classSHA3__512.html#a435746d5a8b012f7c65050337cc4a23f"> 117</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#a435746d5a8b012f7c65050337cc4a23f">SHA3_512::reset</a>()</div> <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;{</div> <div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSHA3__512.html#a327005ebc8c0768118ec7d334c583f85"> 118</a></span>&#160;<a class="code" href="classSHA3__512.html#a327005ebc8c0768118ec7d334c583f85">SHA3_512::~SHA3_512</a>()</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; core.<a class="code" href="classKeccakCore.html#a5a322eb7e3b5c1eaad127c9c6e6a529b">reset</a>();</div> <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;{</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;}</div> <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">// The destructor for the KeccakCore object will do most of the work.</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div> <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;}</div>
<div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classSHA3__512.html#a0563e4c87150e6019671b4fe92fd63a4"> 122</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#a0563e4c87150e6019671b4fe92fd63a4">SHA3_512::update</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> len)</div> <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;{</div> <div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSHA3__512.html#a9f13e4d2b99dd204e96b11142e9c1803"> 123</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classSHA3__512.html#a9f13e4d2b99dd204e96b11142e9c1803">SHA3_512::hashSize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; core.<a class="code" href="classKeccakCore.html#aaaa0355ccec0f469ac8eb577bdf853ed">update</a>(data, len);</div> <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;}</div> <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> 64;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div> <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;}</div>
<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSHA3__512.html#ac0227aafb5f047bb50f0bd84df0b4b5b"> 127</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#ac0227aafb5f047bb50f0bd84df0b4b5b">SHA3_512::finalize</a>(<span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> len)</div> <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;{</div> <div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSHA3__512.html#a4493a717bad8fa5cd35fe3aa36f25ab3"> 128</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="classSHA3__512.html#a4493a717bad8fa5cd35fe3aa36f25ab3">SHA3_512::blockSize</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">// Pad the final block and then extract the hash value.</span></div> <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; core.<a class="code" href="classKeccakCore.html#a97852ee4381ced17ee6d21704cf0b4d7">pad</a>(0x06);</div> <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> core.<a class="code" href="classKeccakCore.html#a3742ed39151811b5d1c263c75ee5b20a">blockSize</a>();</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; core.<a class="code" href="classKeccakCore.html#aad83ece853c0cc15fcab947fdcba924f">extract</a>(hash, len);</div> <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;}</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;}</div> <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div> <div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSHA3__512.html#a435746d5a8b012f7c65050337cc4a23f"> 133</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#a435746d5a8b012f7c65050337cc4a23f">SHA3_512::reset</a>()</div>
<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSHA3__512.html#acfbc5e9b4d394f011d5132a2b156d260"> 134</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#acfbc5e9b4d394f011d5132a2b156d260">SHA3_512::clear</a>()</div> <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;{</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;{</div> <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; core.<a class="code" href="classKeccakCore.html#a5a322eb7e3b5c1eaad127c9c6e6a529b">reset</a>();</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; core.<a class="code" href="classKeccakCore.html#aeff1df56e4a3103c99c1fe4307e60c66">clear</a>();</div> <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;}</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;}</div> <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div>
<div class="ttc" id="classSHA3__512_html_a5f8bc4180e9d19597f499468098a82a4"><div class="ttname"><a href="classSHA3__512.html#a5f8bc4180e9d19597f499468098a82a4">SHA3_512::SHA3_512</a></div><div class="ttdeci">SHA3_512()</div><div class="ttdoc">Constructs a new SHA3-512 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00094">SHA3.cpp:94</a></div></div> <div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSHA3__512.html#a0563e4c87150e6019671b4fe92fd63a4"> 138</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#a0563e4c87150e6019671b4fe92fd63a4">SHA3_512::update</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> len)</div>
<div class="ttc" id="classSHA3__256_html_a57b5f29347a733e04fe47d60621f3202"><div class="ttname"><a href="classSHA3__256.html#a57b5f29347a733e04fe47d60621f3202">SHA3_256::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00060">SHA3.cpp:60</a></div></div> <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;{</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; core.<a class="code" href="classKeccakCore.html#aaaa0355ccec0f469ac8eb577bdf853ed">update</a>(data, len);</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;}</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div>
<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSHA3__512.html#ac0227aafb5f047bb50f0bd84df0b4b5b"> 143</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#ac0227aafb5f047bb50f0bd84df0b4b5b">SHA3_512::finalize</a>(<span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> len)</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;{</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// Pad the final block and then extract the hash value.</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; core.<a class="code" href="classKeccakCore.html#a97852ee4381ced17ee6d21704cf0b4d7">pad</a>(0x06);</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; core.<a class="code" href="classKeccakCore.html#aad83ece853c0cc15fcab947fdcba924f">extract</a>(hash, len);</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;}</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div>
<div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classSHA3__512.html#acfbc5e9b4d394f011d5132a2b156d260"> 150</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#acfbc5e9b4d394f011d5132a2b156d260">SHA3_512::clear</a>()</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;{</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; core.<a class="code" href="classKeccakCore.html#aeff1df56e4a3103c99c1fe4307e60c66">clear</a>();</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div>
<div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classSHA3__512.html#aac7133f420f2be0288965c2e863f389b"> 155</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#aac7133f420f2be0288965c2e863f389b">SHA3_512::resetHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen)</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;{</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; core.<a class="code" href="classKeccakCore.html#aeff6b3357916bf426b60d3629db52628">setHMACKey</a>(key, keyLen, 0x36, 64);</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;}</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
<div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classSHA3__512.html#a25c9d2da26d01d46ba6b72c8a7905ea0"> 160</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#a25c9d2da26d01d46ba6b72c8a7905ea0">SHA3_512::finalizeHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen, <span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> hashLen)</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;{</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; uint8_t temp[64];</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="classSHA3__512.html#ac0227aafb5f047bb50f0bd84df0b4b5b">finalize</a>(temp, <span class="keyword">sizeof</span>(temp));</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; core.<a class="code" href="classKeccakCore.html#aeff6b3357916bf426b60d3629db52628">setHMACKey</a>(key, keyLen, 0x5C, 64);</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; core.<a class="code" href="classKeccakCore.html#aaaa0355ccec0f469ac8eb577bdf853ed">update</a>(temp, <span class="keyword">sizeof</span>(temp));</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="classSHA3__512.html#ac0227aafb5f047bb50f0bd84df0b4b5b">finalize</a>(hash, hashLen);</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; clean(temp);</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;}</div>
<div class="ttc" id="classSHA3__512_html_a5f8bc4180e9d19597f499468098a82a4"><div class="ttname"><a href="classSHA3__512.html#a5f8bc4180e9d19597f499468098a82a4">SHA3_512::SHA3_512</a></div><div class="ttdeci">SHA3_512()</div><div class="ttdoc">Constructs a new SHA3-512 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00110">SHA3.cpp:110</a></div></div>
<div class="ttc" id="classSHA3__256_html_a57b5f29347a733e04fe47d60621f3202"><div class="ttname"><a href="classSHA3__256.html#a57b5f29347a733e04fe47d60621f3202">SHA3_256::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00061">SHA3.cpp:61</a></div></div>
<div class="ttc" id="classKeccakCore_html_a3742ed39151811b5d1c263c75ee5b20a"><div class="ttname"><a href="classKeccakCore.html#a3742ed39151811b5d1c263c75ee5b20a">KeccakCore::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Returns the input block size for the sponge function in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8h_source.html#l00038">KeccakCore.h:38</a></div></div> <div class="ttc" id="classKeccakCore_html_a3742ed39151811b5d1c263c75ee5b20a"><div class="ttname"><a href="classKeccakCore.html#a3742ed39151811b5d1c263c75ee5b20a">KeccakCore::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Returns the input block size for the sponge function in bytes. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8h_source.html#l00038">KeccakCore.h:38</a></div></div>
<div class="ttc" id="classSHA3__256_html_a835d09eb88d477cd162330c493cbdf64"><div class="ttname"><a href="classSHA3__256.html#a835d09eb88d477cd162330c493cbdf64">SHA3_256::~SHA3_256</a></div><div class="ttdeci">virtual ~SHA3_256()</div><div class="ttdoc">Destroys this hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00045">SHA3.cpp:45</a></div></div> <div class="ttc" id="classSHA3__256_html_a835d09eb88d477cd162330c493cbdf64"><div class="ttname"><a href="classSHA3__256.html#a835d09eb88d477cd162330c493cbdf64">SHA3_256::~SHA3_256</a></div><div class="ttdeci">virtual ~SHA3_256()</div><div class="ttdoc">Destroys this hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00046">SHA3.cpp:46</a></div></div>
<div class="ttc" id="classSHA3__512_html_a9f13e4d2b99dd204e96b11142e9c1803"><div class="ttname"><a href="classSHA3__512.html#a9f13e4d2b99dd204e96b11142e9c1803">SHA3_512::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00107">SHA3.cpp:107</a></div></div> <div class="ttc" id="classSHA3__256_html_a324fe4d268bbf23d7b492033fe3bc632"><div class="ttname"><a href="classSHA3__256.html#a324fe4d268bbf23d7b492033fe3bc632">SHA3_256::resetHMAC</a></div><div class="ttdeci">void resetHMAC(const void *key, size_t keyLen)</div><div class="ttdoc">Resets the hash ready for a new HMAC hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00083">SHA3.cpp:83</a></div></div>
<div class="ttc" id="classSHA3__256_html_ac091b276c6d80a981fa64a9e8c68ca87"><div class="ttname"><a href="classSHA3__256.html#ac091b276c6d80a981fa64a9e8c68ca87">SHA3_256::SHA3_256</a></div><div class="ttdeci">SHA3_256()</div><div class="ttdoc">Constructs a new SHA3-256 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00037">SHA3.cpp:37</a></div></div> <div class="ttc" id="classSHA3__512_html_a9f13e4d2b99dd204e96b11142e9c1803"><div class="ttname"><a href="classSHA3__512.html#a9f13e4d2b99dd204e96b11142e9c1803">SHA3_512::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00123">SHA3.cpp:123</a></div></div>
<div class="ttc" id="classSHA3__512_html_a327005ebc8c0768118ec7d334c583f85"><div class="ttname"><a href="classSHA3__512.html#a327005ebc8c0768118ec7d334c583f85">SHA3_512::~SHA3_512</a></div><div class="ttdeci">virtual ~SHA3_512()</div><div class="ttdoc">Destroys this hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00102">SHA3.cpp:102</a></div></div> <div class="ttc" id="classKeccakCore_html_aeff6b3357916bf426b60d3629db52628"><div class="ttname"><a href="classKeccakCore.html#aeff6b3357916bf426b60d3629db52628">KeccakCore::setHMACKey</a></div><div class="ttdeci">void setHMACKey(const void *key, size_t len, uint8_t pad, size_t hashSize)</div><div class="ttdoc">Sets a HMAC key for a Keccak-based hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00263">KeccakCore.cpp:263</a></div></div>
<div class="ttc" id="classSHA3__256_html_a2c5c08119d5ad853021f929a763784f3"><div class="ttname"><a href="classSHA3__256.html#a2c5c08119d5ad853021f929a763784f3">SHA3_256::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00050">SHA3.cpp:50</a></div></div> <div class="ttc" id="classSHA3__256_html_ac091b276c6d80a981fa64a9e8c68ca87"><div class="ttname"><a href="classSHA3__256.html#ac091b276c6d80a981fa64a9e8c68ca87">SHA3_256::SHA3_256</a></div><div class="ttdeci">SHA3_256()</div><div class="ttdoc">Constructs a new SHA3-256 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00038">SHA3.cpp:38</a></div></div>
<div class="ttc" id="classSHA3__512_html_ac0227aafb5f047bb50f0bd84df0b4b5b"><div class="ttname"><a href="classSHA3__512.html#ac0227aafb5f047bb50f0bd84df0b4b5b">SHA3_512::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00127">SHA3.cpp:127</a></div></div> <div class="ttc" id="classSHA3__256_html_a001215fa1b7d2c30717b4b5b1618d68c"><div class="ttname"><a href="classSHA3__256.html#a001215fa1b7d2c30717b4b5b1618d68c">SHA3_256::finalizeHMAC</a></div><div class="ttdeci">void finalizeHMAC(const void *key, size_t keyLen, void *hash, size_t hashLen)</div><div class="ttdoc">Finalizes the HMAC hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00088">SHA3.cpp:88</a></div></div>
<div class="ttc" id="classSHA3__512_html_a435746d5a8b012f7c65050337cc4a23f"><div class="ttname"><a href="classSHA3__512.html#a435746d5a8b012f7c65050337cc4a23f">SHA3_512::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00117">SHA3.cpp:117</a></div></div> <div class="ttc" id="classSHA3__512_html_a327005ebc8c0768118ec7d334c583f85"><div class="ttname"><a href="classSHA3__512.html#a327005ebc8c0768118ec7d334c583f85">SHA3_512::~SHA3_512</a></div><div class="ttdeci">virtual ~SHA3_512()</div><div class="ttdoc">Destroys this hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00118">SHA3.cpp:118</a></div></div>
<div class="ttc" id="classSHA3__256_html_a2c5c08119d5ad853021f929a763784f3"><div class="ttname"><a href="classSHA3__256.html#a2c5c08119d5ad853021f929a763784f3">SHA3_256::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00051">SHA3.cpp:51</a></div></div>
<div class="ttc" id="classSHA3__512_html_ac0227aafb5f047bb50f0bd84df0b4b5b"><div class="ttname"><a href="classSHA3__512.html#ac0227aafb5f047bb50f0bd84df0b4b5b">SHA3_512::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00143">SHA3.cpp:143</a></div></div>
<div class="ttc" id="classSHA3__512_html_a435746d5a8b012f7c65050337cc4a23f"><div class="ttname"><a href="classSHA3__512.html#a435746d5a8b012f7c65050337cc4a23f">SHA3_512::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00133">SHA3.cpp:133</a></div></div>
<div class="ttc" id="classKeccakCore_html_ab3c1905f2002e49aca085d6f0b5546f7"><div class="ttname"><a href="classKeccakCore.html#ab3c1905f2002e49aca085d6f0b5546f7">KeccakCore::setCapacity</a></div><div class="ttdeci">void setCapacity(size_t capacity)</div><div class="ttdoc">Sets the capacity of the Keccak sponge function in bits. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00089">KeccakCore.cpp:89</a></div></div> <div class="ttc" id="classKeccakCore_html_ab3c1905f2002e49aca085d6f0b5546f7"><div class="ttname"><a href="classKeccakCore.html#ab3c1905f2002e49aca085d6f0b5546f7">KeccakCore::setCapacity</a></div><div class="ttdeci">void setCapacity(size_t capacity)</div><div class="ttdoc">Sets the capacity of the Keccak sponge function in bits. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00089">KeccakCore.cpp:89</a></div></div>
<div class="ttc" id="classSHA3__256_html_a88a50ab6c2d4ad105cda2dd504d96e7c"><div class="ttname"><a href="classSHA3__256.html#a88a50ab6c2d4ad105cda2dd504d96e7c">SHA3_256::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00055">SHA3.cpp:55</a></div></div> <div class="ttc" id="classSHA3__512_html_a25c9d2da26d01d46ba6b72c8a7905ea0"><div class="ttname"><a href="classSHA3__512.html#a25c9d2da26d01d46ba6b72c8a7905ea0">SHA3_512::finalizeHMAC</a></div><div class="ttdeci">void finalizeHMAC(const void *key, size_t keyLen, void *hash, size_t hashLen)</div><div class="ttdoc">Finalizes the HMAC hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00160">SHA3.cpp:160</a></div></div>
<div class="ttc" id="classSHA3__256_html_a88a50ab6c2d4ad105cda2dd504d96e7c"><div class="ttname"><a href="classSHA3__256.html#a88a50ab6c2d4ad105cda2dd504d96e7c">SHA3_256::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00056">SHA3.cpp:56</a></div></div>
<div class="ttc" id="classKeccakCore_html_aad83ece853c0cc15fcab947fdcba924f"><div class="ttname"><a href="classKeccakCore.html#aad83ece853c0cc15fcab947fdcba924f">KeccakCore::extract</a></div><div class="ttdeci">void extract(void *data, size_t size)</div><div class="ttdoc">Extracts data from the Keccak sponge function. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00201">KeccakCore.cpp:201</a></div></div> <div class="ttc" id="classKeccakCore_html_aad83ece853c0cc15fcab947fdcba924f"><div class="ttname"><a href="classKeccakCore.html#aad83ece853c0cc15fcab947fdcba924f">KeccakCore::extract</a></div><div class="ttdeci">void extract(void *data, size_t size)</div><div class="ttdoc">Extracts data from the Keccak sponge function. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00201">KeccakCore.cpp:201</a></div></div>
<div class="ttc" id="classSHA3__512_html_acfbc5e9b4d394f011d5132a2b156d260"><div class="ttname"><a href="classSHA3__512.html#acfbc5e9b4d394f011d5132a2b156d260">SHA3_512::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00134">SHA3.cpp:134</a></div></div> <div class="ttc" id="classSHA3__512_html_aac7133f420f2be0288965c2e863f389b"><div class="ttname"><a href="classSHA3__512.html#aac7133f420f2be0288965c2e863f389b">SHA3_512::resetHMAC</a></div><div class="ttdeci">void resetHMAC(const void *key, size_t keyLen)</div><div class="ttdoc">Resets the hash ready for a new HMAC hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00155">SHA3.cpp:155</a></div></div>
<div class="ttc" id="classSHA3__512_html_acfbc5e9b4d394f011d5132a2b156d260"><div class="ttname"><a href="classSHA3__512.html#acfbc5e9b4d394f011d5132a2b156d260">SHA3_512::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00150">SHA3.cpp:150</a></div></div>
<div class="ttc" id="classKeccakCore_html_a97852ee4381ced17ee6d21704cf0b4d7"><div class="ttname"><a href="classKeccakCore.html#a97852ee4381ced17ee6d21704cf0b4d7">KeccakCore::pad</a></div><div class="ttdeci">void pad(uint8_t tag)</div><div class="ttdoc">Pads the last block of input data to blockSize(). </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00174">KeccakCore.cpp:174</a></div></div> <div class="ttc" id="classKeccakCore_html_a97852ee4381ced17ee6d21704cf0b4d7"><div class="ttname"><a href="classKeccakCore.html#a97852ee4381ced17ee6d21704cf0b4d7">KeccakCore::pad</a></div><div class="ttdeci">void pad(uint8_t tag)</div><div class="ttdoc">Pads the last block of input data to blockSize(). </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00174">KeccakCore.cpp:174</a></div></div>
<div class="ttc" id="classSHA3__512_html_a4493a717bad8fa5cd35fe3aa36f25ab3"><div class="ttname"><a href="classSHA3__512.html#a4493a717bad8fa5cd35fe3aa36f25ab3">SHA3_512::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00112">SHA3.cpp:112</a></div></div> <div class="ttc" id="classSHA3__512_html_a4493a717bad8fa5cd35fe3aa36f25ab3"><div class="ttname"><a href="classSHA3__512.html#a4493a717bad8fa5cd35fe3aa36f25ab3">SHA3_512::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00128">SHA3.cpp:128</a></div></div>
<div class="ttc" id="classSHA3__512_html_a0563e4c87150e6019671b4fe92fd63a4"><div class="ttname"><a href="classSHA3__512.html#a0563e4c87150e6019671b4fe92fd63a4">SHA3_512::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00122">SHA3.cpp:122</a></div></div> <div class="ttc" id="classSHA3__512_html_a0563e4c87150e6019671b4fe92fd63a4"><div class="ttname"><a href="classSHA3__512.html#a0563e4c87150e6019671b4fe92fd63a4">SHA3_512::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00138">SHA3.cpp:138</a></div></div>
<div class="ttc" id="classKeccakCore_html_aaaa0355ccec0f469ac8eb577bdf853ed"><div class="ttname"><a href="classKeccakCore.html#aaaa0355ccec0f469ac8eb577bdf853ed">KeccakCore::update</a></div><div class="ttdeci">void update(const void *data, size_t size)</div><div class="ttdoc">Updates the Keccak sponge function with more input data. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00128">KeccakCore.cpp:128</a></div></div> <div class="ttc" id="classKeccakCore_html_aaaa0355ccec0f469ac8eb577bdf853ed"><div class="ttname"><a href="classKeccakCore.html#aaaa0355ccec0f469ac8eb577bdf853ed">KeccakCore::update</a></div><div class="ttdeci">void update(const void *data, size_t size)</div><div class="ttdoc">Updates the Keccak sponge function with more input data. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00128">KeccakCore.cpp:128</a></div></div>
<div class="ttc" id="classKeccakCore_html_aeff1df56e4a3103c99c1fe4307e60c66"><div class="ttname"><a href="classKeccakCore.html#aeff1df56e4a3103c99c1fe4307e60c66">KeccakCore::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all sensitive data from this object. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00245">KeccakCore.cpp:245</a></div></div> <div class="ttc" id="classKeccakCore_html_aeff1df56e4a3103c99c1fe4307e60c66"><div class="ttname"><a href="classKeccakCore.html#aeff1df56e4a3103c99c1fe4307e60c66">KeccakCore::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears all sensitive data from this object. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00245">KeccakCore.cpp:245</a></div></div>
<div class="ttc" id="classSHA3__256_html_a8fe7cad1f83bd1bae1a0d521324247a1"><div class="ttname"><a href="classSHA3__256.html#a8fe7cad1f83bd1bae1a0d521324247a1">SHA3_256::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00070">SHA3.cpp:70</a></div></div> <div class="ttc" id="classSHA3__256_html_a8fe7cad1f83bd1bae1a0d521324247a1"><div class="ttname"><a href="classSHA3__256.html#a8fe7cad1f83bd1bae1a0d521324247a1">SHA3_256::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00071">SHA3.cpp:71</a></div></div>
<div class="ttc" id="classKeccakCore_html_a5a322eb7e3b5c1eaad127c9c6e6a529b"><div class="ttname"><a href="classKeccakCore.html#a5a322eb7e3b5c1eaad127c9c6e6a529b">KeccakCore::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the Keccak sponge function ready for a new session. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00109">KeccakCore.cpp:109</a></div></div> <div class="ttc" id="classKeccakCore_html_a5a322eb7e3b5c1eaad127c9c6e6a529b"><div class="ttname"><a href="classKeccakCore.html#a5a322eb7e3b5c1eaad127c9c6e6a529b">KeccakCore::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the Keccak sponge function ready for a new session. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8cpp_source.html#l00109">KeccakCore.cpp:109</a></div></div>
<div class="ttc" id="classSHA3__256_html_a8356957ea403c5da326fc6899b91ea71"><div class="ttname"><a href="classSHA3__256.html#a8356957ea403c5da326fc6899b91ea71">SHA3_256::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00065">SHA3.cpp:65</a></div></div> <div class="ttc" id="classSHA3__256_html_a8356957ea403c5da326fc6899b91ea71"><div class="ttname"><a href="classSHA3__256.html#a8356957ea403c5da326fc6899b91ea71">SHA3_256::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00066">SHA3.cpp:66</a></div></div>
<div class="ttc" id="classSHA3__256_html_a531467f995ef6fc901ad8c2b5776a8d1"><div class="ttname"><a href="classSHA3__256.html#a531467f995ef6fc901ad8c2b5776a8d1">SHA3_256::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00077">SHA3.cpp:77</a></div></div> <div class="ttc" id="classSHA3__256_html_a531467f995ef6fc901ad8c2b5776a8d1"><div class="ttname"><a href="classSHA3__256.html#a531467f995ef6fc901ad8c2b5776a8d1">SHA3_256::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00078">SHA3.cpp:78</a></div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -131,54 +131,64 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div> <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA3__256.html#a531467f995ef6fc901ad8c2b5776a8d1">clear</a>();</div> <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA3__256.html#a531467f995ef6fc901ad8c2b5776a8d1">clear</a>();</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div> <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">private</span>:</div> <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA3__256.html#a324fe4d268bbf23d7b492033fe3bc632">resetHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classKeccakCore.html">KeccakCore</a> core;</div> <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA3__256.html#a001215fa1b7d2c30717b4b5b1618d68c">finalizeHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen, <span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> hashLen);</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;};</div> <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div> <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSHA3__512.html"> 48</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSHA3__512.html">SHA3_512</a> : <span class="keyword">public</span> <a class="code" href="classHash.html">Hash</a></div> <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="classKeccakCore.html">KeccakCore</a> core;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;{</div> <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;};</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">public</span>:</div> <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="classSHA3__512.html#a5f8bc4180e9d19597f499468098a82a4">SHA3_512</a>();</div> <div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSHA3__512.html"> 51</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSHA3__512.html">SHA3_512</a> : <span class="keyword">public</span> <a class="code" href="classHash.html">Hash</a></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSHA3__512.html#a327005ebc8c0768118ec7d334c583f85">~SHA3_512</a>();</div> <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div> <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classSHA3__512.html#a9f13e4d2b99dd204e96b11142e9c1803">hashSize</a>() <span class="keyword">const</span>;</div> <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="classSHA3__512.html#a5f8bc4180e9d19597f499468098a82a4">SHA3_512</a>();</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classSHA3__512.html#a4493a717bad8fa5cd35fe3aa36f25ab3">blockSize</a>() <span class="keyword">const</span>;</div> <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSHA3__512.html#a327005ebc8c0768118ec7d334c583f85">~SHA3_512</a>();</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div> <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#a435746d5a8b012f7c65050337cc4a23f">reset</a>();</div> <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classSHA3__512.html#a9f13e4d2b99dd204e96b11142e9c1803">hashSize</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#a0563e4c87150e6019671b4fe92fd63a4">update</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> len);</div> <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classSHA3__512.html#a4493a717bad8fa5cd35fe3aa36f25ab3">blockSize</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#ac0227aafb5f047bb50f0bd84df0b4b5b">finalize</a>(<span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> len);</div> <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div> <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#a435746d5a8b012f7c65050337cc4a23f">reset</a>();</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#acfbc5e9b4d394f011d5132a2b156d260">clear</a>();</div> <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#a0563e4c87150e6019671b4fe92fd63a4">update</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> len);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div> <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#ac0227aafb5f047bb50f0bd84df0b4b5b">finalize</a>(<span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> len);</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keyword">private</span>:</div> <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="classKeccakCore.html">KeccakCore</a> core;</div> <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#acfbc5e9b4d394f011d5132a2b156d260">clear</a>();</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;};</div> <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div> <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#aac7133f420f2be0288965c2e863f389b">resetHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen);</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#endif</span></div> <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA3__512.html#a25c9d2da26d01d46ba6b72c8a7905ea0">finalizeHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen, <span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> hashLen);</div>
<div class="ttc" id="classSHA3__512_html_a5f8bc4180e9d19597f499468098a82a4"><div class="ttname"><a href="classSHA3__512.html#a5f8bc4180e9d19597f499468098a82a4">SHA3_512::SHA3_512</a></div><div class="ttdeci">SHA3_512()</div><div class="ttdoc">Constructs a new SHA3-512 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00094">SHA3.cpp:94</a></div></div> <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
<div class="ttc" id="classSHA3__256_html_a57b5f29347a733e04fe47d60621f3202"><div class="ttname"><a href="classSHA3__256.html#a57b5f29347a733e04fe47d60621f3202">SHA3_256::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00060">SHA3.cpp:60</a></div></div> <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keyword">private</span>:</div>
<div class="ttc" id="classSHA3__256_html_a835d09eb88d477cd162330c493cbdf64"><div class="ttname"><a href="classSHA3__256.html#a835d09eb88d477cd162330c493cbdf64">SHA3_256::~SHA3_256</a></div><div class="ttdeci">virtual ~SHA3_256()</div><div class="ttdoc">Destroys this hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00045">SHA3.cpp:45</a></div></div> <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="classKeccakCore.html">KeccakCore</a> core;</div>
<div class="ttc" id="classSHA3__512_html_a9f13e4d2b99dd204e96b11142e9c1803"><div class="ttname"><a href="classSHA3__512.html#a9f13e4d2b99dd204e96b11142e9c1803">SHA3_512::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00107">SHA3.cpp:107</a></div></div> <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;};</div>
<div class="ttc" id="classSHA3__256_html_ac091b276c6d80a981fa64a9e8c68ca87"><div class="ttname"><a href="classSHA3__256.html#ac091b276c6d80a981fa64a9e8c68ca87">SHA3_256::SHA3_256</a></div><div class="ttdeci">SHA3_256()</div><div class="ttdoc">Constructs a new SHA3-256 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00037">SHA3.cpp:37</a></div></div> <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div>
<div class="ttc" id="classSHA3__512_html_a327005ebc8c0768118ec7d334c583f85"><div class="ttname"><a href="classSHA3__512.html#a327005ebc8c0768118ec7d334c583f85">SHA3_512::~SHA3_512</a></div><div class="ttdeci">virtual ~SHA3_512()</div><div class="ttdoc">Destroys this hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00102">SHA3.cpp:102</a></div></div> <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="classSHA3__512_html_a5f8bc4180e9d19597f499468098a82a4"><div class="ttname"><a href="classSHA3__512.html#a5f8bc4180e9d19597f499468098a82a4">SHA3_512::SHA3_512</a></div><div class="ttdeci">SHA3_512()</div><div class="ttdoc">Constructs a new SHA3-512 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00110">SHA3.cpp:110</a></div></div>
<div class="ttc" id="classSHA3__256_html_a57b5f29347a733e04fe47d60621f3202"><div class="ttname"><a href="classSHA3__256.html#a57b5f29347a733e04fe47d60621f3202">SHA3_256::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00061">SHA3.cpp:61</a></div></div>
<div class="ttc" id="classSHA3__256_html_a835d09eb88d477cd162330c493cbdf64"><div class="ttname"><a href="classSHA3__256.html#a835d09eb88d477cd162330c493cbdf64">SHA3_256::~SHA3_256</a></div><div class="ttdeci">virtual ~SHA3_256()</div><div class="ttdoc">Destroys this hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00046">SHA3.cpp:46</a></div></div>
<div class="ttc" id="classSHA3__256_html_a324fe4d268bbf23d7b492033fe3bc632"><div class="ttname"><a href="classSHA3__256.html#a324fe4d268bbf23d7b492033fe3bc632">SHA3_256::resetHMAC</a></div><div class="ttdeci">void resetHMAC(const void *key, size_t keyLen)</div><div class="ttdoc">Resets the hash ready for a new HMAC hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00083">SHA3.cpp:83</a></div></div>
<div class="ttc" id="classSHA3__512_html_a9f13e4d2b99dd204e96b11142e9c1803"><div class="ttname"><a href="classSHA3__512.html#a9f13e4d2b99dd204e96b11142e9c1803">SHA3_512::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00123">SHA3.cpp:123</a></div></div>
<div class="ttc" id="classSHA3__256_html_ac091b276c6d80a981fa64a9e8c68ca87"><div class="ttname"><a href="classSHA3__256.html#ac091b276c6d80a981fa64a9e8c68ca87">SHA3_256::SHA3_256</a></div><div class="ttdeci">SHA3_256()</div><div class="ttdoc">Constructs a new SHA3-256 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00038">SHA3.cpp:38</a></div></div>
<div class="ttc" id="classSHA3__256_html_a001215fa1b7d2c30717b4b5b1618d68c"><div class="ttname"><a href="classSHA3__256.html#a001215fa1b7d2c30717b4b5b1618d68c">SHA3_256::finalizeHMAC</a></div><div class="ttdeci">void finalizeHMAC(const void *key, size_t keyLen, void *hash, size_t hashLen)</div><div class="ttdoc">Finalizes the HMAC hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00088">SHA3.cpp:88</a></div></div>
<div class="ttc" id="classSHA3__512_html_a327005ebc8c0768118ec7d334c583f85"><div class="ttname"><a href="classSHA3__512.html#a327005ebc8c0768118ec7d334c583f85">SHA3_512::~SHA3_512</a></div><div class="ttdeci">virtual ~SHA3_512()</div><div class="ttdoc">Destroys this hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00118">SHA3.cpp:118</a></div></div>
<div class="ttc" id="classHash_html"><div class="ttname"><a href="classHash.html">Hash</a></div><div class="ttdoc">Abstract base class for cryptographic hash algorithms. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8h_source.html#l00029">Hash.h:29</a></div></div> <div class="ttc" id="classHash_html"><div class="ttname"><a href="classHash.html">Hash</a></div><div class="ttdoc">Abstract base class for cryptographic hash algorithms. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8h_source.html#l00029">Hash.h:29</a></div></div>
<div class="ttc" id="classSHA3__256_html_a2c5c08119d5ad853021f929a763784f3"><div class="ttname"><a href="classSHA3__256.html#a2c5c08119d5ad853021f929a763784f3">SHA3_256::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00050">SHA3.cpp:50</a></div></div> <div class="ttc" id="classSHA3__256_html_a2c5c08119d5ad853021f929a763784f3"><div class="ttname"><a href="classSHA3__256.html#a2c5c08119d5ad853021f929a763784f3">SHA3_256::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00051">SHA3.cpp:51</a></div></div>
<div class="ttc" id="classSHA3__512_html_ac0227aafb5f047bb50f0bd84df0b4b5b"><div class="ttname"><a href="classSHA3__512.html#ac0227aafb5f047bb50f0bd84df0b4b5b">SHA3_512::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00127">SHA3.cpp:127</a></div></div> <div class="ttc" id="classSHA3__512_html_ac0227aafb5f047bb50f0bd84df0b4b5b"><div class="ttname"><a href="classSHA3__512.html#ac0227aafb5f047bb50f0bd84df0b4b5b">SHA3_512::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00143">SHA3.cpp:143</a></div></div>
<div class="ttc" id="classSHA3__512_html_a435746d5a8b012f7c65050337cc4a23f"><div class="ttname"><a href="classSHA3__512.html#a435746d5a8b012f7c65050337cc4a23f">SHA3_512::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00117">SHA3.cpp:117</a></div></div> <div class="ttc" id="classSHA3__512_html_a435746d5a8b012f7c65050337cc4a23f"><div class="ttname"><a href="classSHA3__512.html#a435746d5a8b012f7c65050337cc4a23f">SHA3_512::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00133">SHA3.cpp:133</a></div></div>
<div class="ttc" id="classSHA3__256_html_a88a50ab6c2d4ad105cda2dd504d96e7c"><div class="ttname"><a href="classSHA3__256.html#a88a50ab6c2d4ad105cda2dd504d96e7c">SHA3_256::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00055">SHA3.cpp:55</a></div></div> <div class="ttc" id="classSHA3__512_html_a25c9d2da26d01d46ba6b72c8a7905ea0"><div class="ttname"><a href="classSHA3__512.html#a25c9d2da26d01d46ba6b72c8a7905ea0">SHA3_512::finalizeHMAC</a></div><div class="ttdeci">void finalizeHMAC(const void *key, size_t keyLen, void *hash, size_t hashLen)</div><div class="ttdoc">Finalizes the HMAC hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00160">SHA3.cpp:160</a></div></div>
<div class="ttc" id="classSHA3__512_html_acfbc5e9b4d394f011d5132a2b156d260"><div class="ttname"><a href="classSHA3__512.html#acfbc5e9b4d394f011d5132a2b156d260">SHA3_512::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00134">SHA3.cpp:134</a></div></div> <div class="ttc" id="classSHA3__256_html_a88a50ab6c2d4ad105cda2dd504d96e7c"><div class="ttname"><a href="classSHA3__256.html#a88a50ab6c2d4ad105cda2dd504d96e7c">SHA3_256::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00056">SHA3.cpp:56</a></div></div>
<div class="ttc" id="classSHA3__512_html_a4493a717bad8fa5cd35fe3aa36f25ab3"><div class="ttname"><a href="classSHA3__512.html#a4493a717bad8fa5cd35fe3aa36f25ab3">SHA3_512::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00112">SHA3.cpp:112</a></div></div> <div class="ttc" id="classSHA3__512_html_aac7133f420f2be0288965c2e863f389b"><div class="ttname"><a href="classSHA3__512.html#aac7133f420f2be0288965c2e863f389b">SHA3_512::resetHMAC</a></div><div class="ttdeci">void resetHMAC(const void *key, size_t keyLen)</div><div class="ttdoc">Resets the hash ready for a new HMAC hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00155">SHA3.cpp:155</a></div></div>
<div class="ttc" id="classSHA3__512_html_a0563e4c87150e6019671b4fe92fd63a4"><div class="ttname"><a href="classSHA3__512.html#a0563e4c87150e6019671b4fe92fd63a4">SHA3_512::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00122">SHA3.cpp:122</a></div></div> <div class="ttc" id="classSHA3__512_html_acfbc5e9b4d394f011d5132a2b156d260"><div class="ttname"><a href="classSHA3__512.html#acfbc5e9b4d394f011d5132a2b156d260">SHA3_512::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00150">SHA3.cpp:150</a></div></div>
<div class="ttc" id="classSHA3__256_html_a8fe7cad1f83bd1bae1a0d521324247a1"><div class="ttname"><a href="classSHA3__256.html#a8fe7cad1f83bd1bae1a0d521324247a1">SHA3_256::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00070">SHA3.cpp:70</a></div></div> <div class="ttc" id="classSHA3__512_html_a4493a717bad8fa5cd35fe3aa36f25ab3"><div class="ttname"><a href="classSHA3__512.html#a4493a717bad8fa5cd35fe3aa36f25ab3">SHA3_512::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00128">SHA3.cpp:128</a></div></div>
<div class="ttc" id="classSHA3__512_html_a0563e4c87150e6019671b4fe92fd63a4"><div class="ttname"><a href="classSHA3__512.html#a0563e4c87150e6019671b4fe92fd63a4">SHA3_512::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00138">SHA3.cpp:138</a></div></div>
<div class="ttc" id="classSHA3__256_html_a8fe7cad1f83bd1bae1a0d521324247a1"><div class="ttname"><a href="classSHA3__256.html#a8fe7cad1f83bd1bae1a0d521324247a1">SHA3_256::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00071">SHA3.cpp:71</a></div></div>
<div class="ttc" id="classKeccakCore_html"><div class="ttname"><a href="classKeccakCore.html">KeccakCore</a></div><div class="ttdoc">Keccak core sponge function. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8h_source.html#l00029">KeccakCore.h:29</a></div></div> <div class="ttc" id="classKeccakCore_html"><div class="ttname"><a href="classKeccakCore.html">KeccakCore</a></div><div class="ttdoc">Keccak core sponge function. </div><div class="ttdef"><b>Definition:</b> <a href="KeccakCore_8h_source.html#l00029">KeccakCore.h:29</a></div></div>
<div class="ttc" id="classSHA3__256_html"><div class="ttname"><a href="classSHA3__256.html">SHA3_256</a></div><div class="ttdoc">SHA3-256 hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8h_source.html#l00029">SHA3.h:29</a></div></div> <div class="ttc" id="classSHA3__256_html"><div class="ttname"><a href="classSHA3__256.html">SHA3_256</a></div><div class="ttdoc">SHA3-256 hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8h_source.html#l00029">SHA3.h:29</a></div></div>
<div class="ttc" id="classSHA3__512_html"><div class="ttname"><a href="classSHA3__512.html">SHA3_512</a></div><div class="ttdoc">SHA3-512 hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8h_source.html#l00048">SHA3.h:48</a></div></div> <div class="ttc" id="classSHA3__512_html"><div class="ttname"><a href="classSHA3__512.html">SHA3_512</a></div><div class="ttdoc">SHA3-512 hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8h_source.html#l00051">SHA3.h:51</a></div></div>
<div class="ttc" id="classSHA3__256_html_a8356957ea403c5da326fc6899b91ea71"><div class="ttname"><a href="classSHA3__256.html#a8356957ea403c5da326fc6899b91ea71">SHA3_256::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00065">SHA3.cpp:65</a></div></div> <div class="ttc" id="classSHA3__256_html_a8356957ea403c5da326fc6899b91ea71"><div class="ttname"><a href="classSHA3__256.html#a8356957ea403c5da326fc6899b91ea71">SHA3_256::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00066">SHA3.cpp:66</a></div></div>
<div class="ttc" id="classSHA3__256_html_a531467f995ef6fc901ad8c2b5776a8d1"><div class="ttname"><a href="classSHA3__256.html#a531467f995ef6fc901ad8c2b5776a8d1">SHA3_256::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00077">SHA3.cpp:77</a></div></div> <div class="ttc" id="classSHA3__256_html_a531467f995ef6fc901ad8c2b5776a8d1"><div class="ttname"><a href="classSHA3__256.html#a531467f995ef6fc901ad8c2b5776a8d1">SHA3_256::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...</div><div class="ttdef"><b>Definition:</b> <a href="SHA3_8cpp_source.html#l00078">SHA3.cpp:78</a></div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -213,115 +213,134 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classSHA512.html#a0d009e8d9157c3f14323e68631c33e97">reset</a>();</div> <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classSHA512.html#a0d009e8d9157c3f14323e68631c33e97">reset</a>();</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;}</div> <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;}</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div> <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="keywordtype">void</span> SHA512::processChunk()</div> <div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classSHA512.html#a2427ad8bf8b6958df91bd5806986167c"> 142</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA512.html#a2427ad8bf8b6958df91bd5806986167c">SHA512::resetHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen)</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;{</div> <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// Round constants for SHA-512.</span></div> <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">formatHMACKey</a>(state.w, key, keyLen, 0x36);</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">static</span> uint64_t <span class="keyword">const</span> k[80] PROGMEM = {</div> <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; state.lengthLow += 128 * 8;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; 0x428A2F98D728AE22ULL, 0x7137449123EF65CDULL, 0xB5C0FBCFEC4D3B2FULL,</div> <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; processChunk();</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; 0xE9B5DBA58189DBBCULL, 0x3956C25BF348B538ULL, 0x59F111F1B605D019ULL,</div> <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; 0x923F82A4AF194F9BULL, 0xAB1C5ED5DA6D8118ULL, 0xD807AA98A3030242ULL,</div> <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; 0x12835B0145706FBEULL, 0x243185BE4EE4B28CULL, 0x550C7DC3D5FFB4E2ULL,</div> <div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSHA512.html#a1fe9533f0d3dfdb426eb3dc4bdc31904"> 149</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSHA512.html#a1fe9533f0d3dfdb426eb3dc4bdc31904">SHA512::finalizeHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen, <span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> hashLen)</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; 0x72BE5D74F27B896FULL, 0x80DEB1FE3B1696B1ULL, 0x9BDC06A725C71235ULL,</div> <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;{</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; 0xC19BF174CF692694ULL, 0xE49B69C19EF14AD2ULL, 0xEFBE4786384F25E3ULL,</div> <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; uint8_t temp[64];</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; 0x0FC19DC68B8CD5B5ULL, 0x240CA1CC77AC9C65ULL, 0x2DE92C6F592B0275ULL,</div> <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classSHA512.html#afc136ad0e77de527b031db3fb8b32464">finalize</a>(temp, <span class="keyword">sizeof</span>(temp));</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; 0x4A7484AA6EA6E483ULL, 0x5CB0A9DCBD41FBD4ULL, 0x76F988DA831153B5ULL,</div> <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">formatHMACKey</a>(state.w, key, keyLen, 0x5C);</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; 0x983E5152EE66DFABULL, 0xA831C66D2DB43210ULL, 0xB00327C898FB213FULL,</div> <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; state.lengthLow += 128 * 8;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; 0xBF597FC7BEEF0EE4ULL, 0xC6E00BF33DA88FC2ULL, 0xD5A79147930AA725ULL,</div> <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; processChunk();</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; 0x06CA6351E003826FULL, 0x142929670A0E6E70ULL, 0x27B70A8546D22FFCULL,</div> <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classSHA512.html#a7d37a20d7ab431ab15d094f768b6a695">update</a>(temp, <span class="keyword">sizeof</span>(temp));</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; 0x2E1B21385C26C926ULL, 0x4D2C6DFC5AC42AEDULL, 0x53380D139D95B3DFULL,</div> <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classSHA512.html#afc136ad0e77de527b031db3fb8b32464">finalize</a>(hash, hashLen);</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; 0x650A73548BAF63DEULL, 0x766A0ABB3C77B2A8ULL, 0x81C2C92E47EDAEE6ULL,</div> <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; clean(temp);</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; 0x92722C851482353BULL, 0xA2BFE8A14CF10364ULL, 0xA81A664BBC423001ULL,</div> <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;}</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; 0xC24B8B70D0F89791ULL, 0xC76C51A30654BE30ULL, 0xD192E819D6EF5218ULL,</div> <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; 0xD69906245565A910ULL, 0xF40E35855771202AULL, 0x106AA07032BBD1B8ULL,</div> <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="keywordtype">void</span> SHA512::processChunk()</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; 0x19A4C116B8D2D0C8ULL, 0x1E376C085141AB53ULL, 0x2748774CDF8EEB99ULL,</div> <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;{</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; 0x34B0BCB5E19B48A8ULL, 0x391C0CB3C5C95A63ULL, 0x4ED8AA4AE3418ACBULL,</div> <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="comment">// Round constants for SHA-512.</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; 0x5B9CCA4F7763E373ULL, 0x682E6FF3D6B2B8A3ULL, 0x748F82EE5DEFB2FCULL,</div> <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">static</span> uint64_t <span class="keyword">const</span> k[80] PROGMEM = {</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; 0x78A5636F43172F60ULL, 0x84C87814A1F0AB72ULL, 0x8CC702081A6439ECULL,</div> <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; 0x428A2F98D728AE22ULL, 0x7137449123EF65CDULL, 0xB5C0FBCFEC4D3B2FULL,</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; 0x90BEFFFA23631E28ULL, 0xA4506CEBDE82BDE9ULL, 0xBEF9A3F7B2C67915ULL,</div> <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; 0xE9B5DBA58189DBBCULL, 0x3956C25BF348B538ULL, 0x59F111F1B605D019ULL,</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; 0xC67178F2E372532BULL, 0xCA273ECEEA26619CULL, 0xD186B8C721C0C207ULL,</div> <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; 0x923F82A4AF194F9BULL, 0xAB1C5ED5DA6D8118ULL, 0xD807AA98A3030242ULL,</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; 0xEADA7DD6CDE0EB1EULL, 0xF57D4F7FEE6ED178ULL, 0x06F067AA72176FBAULL,</div> <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; 0x12835B0145706FBEULL, 0x243185BE4EE4B28CULL, 0x550C7DC3D5FFB4E2ULL,</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; 0x0A637DC5A2C898A6ULL, 0x113F9804BEF90DAEULL, 0x1B710B35131C471BULL,</div> <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; 0x72BE5D74F27B896FULL, 0x80DEB1FE3B1696B1ULL, 0x9BDC06A725C71235ULL,</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; 0x28DB77F523047D84ULL, 0x32CAAB7B40C72493ULL, 0x3C9EBE0A15C9BEBCULL,</div> <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; 0xC19BF174CF692694ULL, 0xE49B69C19EF14AD2ULL, 0xEFBE4786384F25E3ULL,</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; 0x431D67C49C100D4CULL, 0x4CC5D4BECB3E42B6ULL, 0x597F299CFC657E2AULL,</div> <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; 0x0FC19DC68B8CD5B5ULL, 0x240CA1CC77AC9C65ULL, 0x2DE92C6F592B0275ULL,</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; 0x5FCB6FAB3AD6FAECULL, 0x6C44198C4A475817ULL</div> <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; 0x4A7484AA6EA6E483ULL, 0x5CB0A9DCBD41FBD4ULL, 0x76F988DA831153B5ULL,</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; };</div> <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; 0x983E5152EE66DFABULL, 0xA831C66D2DB43210ULL, 0xB00327C898FB213FULL,</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div> <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; 0xBF597FC7BEEF0EE4ULL, 0xC6E00BF33DA88FC2ULL, 0xD5A79147930AA725ULL,</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="comment">// Convert the first 16 words from big endian to host byte order.</span></div> <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; 0x06CA6351E003826FULL, 0x142929670A0E6E70ULL, 0x27B70A8546D22FFCULL,</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; uint8_t index;</div> <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; 0x2E1B21385C26C926ULL, 0x4D2C6DFC5AC42AEDULL, 0x53380D139D95B3DFULL,</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 16; ++index)</div> <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; 0x650A73548BAF63DEULL, 0x766A0ABB3C77B2A8ULL, 0x81C2C92E47EDAEE6ULL,</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; state.w[index] = be64toh(state.w[index]);</div> <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; 0x92722C851482353BULL, 0xA2BFE8A14CF10364ULL, 0xA81A664BBC423001ULL,</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div> <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; 0xC24B8B70D0F89791ULL, 0xC76C51A30654BE30ULL, 0xD192E819D6EF5218ULL,</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">// Initialise working variables to the current hash value.</span></div> <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; 0xD69906245565A910ULL, 0xF40E35855771202AULL, 0x106AA07032BBD1B8ULL,</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; uint64_t a = state.h[0];</div> <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; 0x19A4C116B8D2D0C8ULL, 0x1E376C085141AB53ULL, 0x2748774CDF8EEB99ULL,</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; uint64_t b = state.h[1];</div> <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; 0x34B0BCB5E19B48A8ULL, 0x391C0CB3C5C95A63ULL, 0x4ED8AA4AE3418ACBULL,</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; uint64_t c = state.h[2];</div> <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; 0x5B9CCA4F7763E373ULL, 0x682E6FF3D6B2B8A3ULL, 0x748F82EE5DEFB2FCULL,</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; uint64_t d = state.h[3];</div> <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; 0x78A5636F43172F60ULL, 0x84C87814A1F0AB72ULL, 0x8CC702081A6439ECULL,</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; uint64_t e = state.h[4];</div> <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; 0x90BEFFFA23631E28ULL, 0xA4506CEBDE82BDE9ULL, 0xBEF9A3F7B2C67915ULL,</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; uint64_t f = state.h[5];</div> <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; 0xC67178F2E372532BULL, 0xCA273ECEEA26619CULL, 0xD186B8C721C0C207ULL,</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; uint64_t g = state.h[6];</div> <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; 0xEADA7DD6CDE0EB1EULL, 0xF57D4F7FEE6ED178ULL, 0x06F067AA72176FBAULL,</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; uint64_t h = state.h[7];</div> <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; 0x0A637DC5A2C898A6ULL, 0x113F9804BEF90DAEULL, 0x1B710B35131C471BULL,</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div> <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; 0x28DB77F523047D84ULL, 0x32CAAB7B40C72493ULL, 0x3C9EBE0A15C9BEBCULL,</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">// Perform the first 16 rounds of the compression function main loop.</span></div> <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; 0x431D67C49C100D4CULL, 0x4CC5D4BECB3E42B6ULL, 0x597F299CFC657E2AULL,</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; uint64_t temp1, temp2;</div> <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; 0x5FCB6FAB3AD6FAECULL, 0x6C44198C4A475817ULL</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 16; ++index) {</div> <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; };</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; temp1 = h + pgm_read_qword(k + index) + state.w[index] +</div> <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; (rightRotate14_64(e) ^ rightRotate18_64(e) ^</div> <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="comment">// Convert the first 16 words from big endian to host byte order.</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; rightRotate41_64(e)) + ((e &amp; f) ^ ((~e) &amp; g));</div> <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; uint8_t index;</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; temp2 = (rightRotate28_64(a) ^ rightRotate34_64(a) ^</div> <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 16; ++index)</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; rightRotate39_64(a)) + ((a &amp; b) ^ (a &amp; c) ^ (b &amp; c));</div> <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; state.w[index] = be64toh(state.w[index]);</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; h = g;</div> <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; g = f;</div> <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="comment">// Initialise working variables to the current hash value.</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; f = e;</div> <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; uint64_t a = state.h[0];</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; e = d + temp1;</div> <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; uint64_t b = state.h[1];</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; d = c;</div> <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; uint64_t c = state.h[2];</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; c = b;</div> <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; uint64_t d = state.h[3];</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; b = a;</div> <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; uint64_t e = state.h[4];</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; a = temp1 + temp2;</div> <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; uint64_t f = state.h[5];</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div> <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; uint64_t g = state.h[6];</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div> <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; uint64_t h = state.h[7];</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">// Perform the 64 remaining rounds. We expand the first 16 words to</span></div> <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// 80 in-place in the &quot;w&quot; array. This saves 512 bytes of memory</span></div> <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// Perform the first 16 rounds of the compression function main loop.</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="comment">// that would have otherwise need to be allocated to the &quot;w&quot; array.</span></div> <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; uint64_t temp1, temp2;</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">for</span> (; index &lt; 80; ++index) {</div> <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">for</span> (index = 0; index &lt; 16; ++index) {</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="comment">// Expand the next word.</span></div> <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; temp1 = h + pgm_read_qword(k + index) + state.w[index] +</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; temp1 = state.w[(index - 15) &amp; 0x0F];</div> <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; (rightRotate14_64(e) ^ rightRotate18_64(e) ^</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; temp2 = state.w[(index - 2) &amp; 0x0F];</div> <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; rightRotate41_64(e)) + ((e &amp; f) ^ ((~e) &amp; g));</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; temp1 = state.w[index &amp; 0x0F] =</div> <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; temp2 = (rightRotate28_64(a) ^ rightRotate34_64(a) ^</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; state.w[(index - 16) &amp; 0x0F] + state.w[(index - 7) &amp; 0x0F] +</div> <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; rightRotate39_64(a)) + ((a &amp; b) ^ (a &amp; c) ^ (b &amp; c));</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; (rightRotate1_64(temp1) ^ rightRotate8_64(temp1) ^</div> <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; h = g;</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; (temp1 &gt;&gt; 7)) +</div> <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; g = f;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; (rightRotate19_64(temp2) ^ rightRotate61_64(temp2) ^</div> <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; f = e;</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; (temp2 &gt;&gt; 6));</div> <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; e = d + temp1;</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div> <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; d = c;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="comment">// Perform the round.</span></div> <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; c = b;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; temp1 = h + pgm_read_qword(k + index) + temp1 +</div> <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; b = a;</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; (rightRotate14_64(e) ^ rightRotate18_64(e) ^</div> <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; a = temp1 + temp2;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; rightRotate41_64(e)) + ((e &amp; f) ^ ((~e) &amp; g));</div> <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; temp2 = (rightRotate28_64(a) ^ rightRotate34_64(a) ^</div> <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; rightRotate39_64(a)) + ((a &amp; b) ^ (a &amp; c) ^ (b &amp; c));</div> <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="comment">// Perform the 64 remaining rounds. We expand the first 16 words to</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; h = g;</div> <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="comment">// 80 in-place in the &quot;w&quot; array. This saves 512 bytes of memory</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; g = f;</div> <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="comment">// that would have otherwise need to be allocated to the &quot;w&quot; array.</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; f = e;</div> <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">for</span> (; index &lt; 80; ++index) {</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; e = d + temp1;</div> <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="comment">// Expand the next word.</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; d = c;</div> <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; temp1 = state.w[(index - 15) &amp; 0x0F];</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; c = b;</div> <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; temp2 = state.w[(index - 2) &amp; 0x0F];</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; b = a;</div> <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; temp1 = state.w[index &amp; 0x0F] =</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; a = temp1 + temp2;</div> <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; state.w[(index - 16) &amp; 0x0F] + state.w[(index - 7) &amp; 0x0F] +</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div> <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; (rightRotate1_64(temp1) ^ rightRotate8_64(temp1) ^</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div> <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; (temp1 &gt;&gt; 7)) +</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="comment">// Add the compressed chunk to the current hash value.</span></div> <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; (rightRotate19_64(temp2) ^ rightRotate61_64(temp2) ^</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; state.h[0] += a;</div> <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; (temp2 &gt;&gt; 6));</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; state.h[1] += b;</div> <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; state.h[2] += c;</div> <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="comment">// Perform the round.</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; state.h[3] += d;</div> <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; temp1 = h + pgm_read_qword(k + index) + temp1 +</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; state.h[4] += e;</div> <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; (rightRotate14_64(e) ^ rightRotate18_64(e) ^</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; state.h[5] += f;</div> <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; rightRotate41_64(e)) + ((e &amp; f) ^ ((~e) &amp; g));</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; state.h[6] += g;</div> <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; temp2 = (rightRotate28_64(a) ^ rightRotate34_64(a) ^</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; state.h[7] += h;</div> <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; rightRotate39_64(a)) + ((a &amp; b) ^ (a &amp; c) ^ (b &amp; c));</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div> <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; h = g;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="comment">// Attempt to clean up the stack.</span></div> <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; g = f;</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; a = b = c = d = e = f = g = h = temp1 = temp2 = 0;</div> <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; f = e;</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;}</div> <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; e = d + temp1;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; d = c;</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; c = b;</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; b = a;</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; a = temp1 + temp2;</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="comment">// Add the compressed chunk to the current hash value.</span></div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; state.h[0] += a;</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; state.h[1] += b;</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; state.h[2] += c;</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; state.h[3] += d;</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; state.h[4] += e;</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; state.h[5] += f;</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; state.h[6] += g;</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; state.h[7] += h;</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="comment">// Attempt to clean up the stack.</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; a = b = c = d = e = f = g = h = temp1 = temp2 = 0;</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;}</div>
<div class="ttc" id="classSHA512_html_a6ab3cc1e172eecf4796e4cac629e0a44"><div class="ttname"><a href="classSHA512.html#a6ab3cc1e172eecf4796e4cac629e0a44">SHA512::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00056">SHA512.cpp:56</a></div></div> <div class="ttc" id="classSHA512_html_a6ab3cc1e172eecf4796e4cac629e0a44"><div class="ttname"><a href="classSHA512.html#a6ab3cc1e172eecf4796e4cac629e0a44">SHA512::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00056">SHA512.cpp:56</a></div></div>
<div class="ttc" id="classSHA512_html_acf8b9bcb6be91ee70acc3700a2ffa1a1"><div class="ttname"><a href="classSHA512.html#acf8b9bcb6be91ee70acc3700a2ffa1a1">SHA512::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00061">SHA512.cpp:61</a></div></div> <div class="ttc" id="classSHA512_html_acf8b9bcb6be91ee70acc3700a2ffa1a1"><div class="ttname"><a href="classSHA512.html#acf8b9bcb6be91ee70acc3700a2ffa1a1">SHA512::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00061">SHA512.cpp:61</a></div></div>
<div class="ttc" id="classSHA512_html_a777ec274fa838684b0208369c5f66391"><div class="ttname"><a href="classSHA512.html#a777ec274fa838684b0208369c5f66391">SHA512::~SHA512</a></div><div class="ttdeci">virtual ~SHA512()</div><div class="ttdoc">Destroys this SHA-512 hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00051">SHA512.cpp:51</a></div></div> <div class="ttc" id="classSHA512_html_a777ec274fa838684b0208369c5f66391"><div class="ttname"><a href="classSHA512.html#a777ec274fa838684b0208369c5f66391">SHA512::~SHA512</a></div><div class="ttdeci">virtual ~SHA512()</div><div class="ttdoc">Destroys this SHA-512 hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00051">SHA512.cpp:51</a></div></div>
@ -329,11 +348,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="ttc" id="classSHA512_html_a0d009e8d9157c3f14323e68631c33e97"><div class="ttname"><a href="classSHA512.html#a0d009e8d9157c3f14323e68631c33e97">SHA512::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00066">SHA512.cpp:66</a></div></div> <div class="ttc" id="classSHA512_html_a0d009e8d9157c3f14323e68631c33e97"><div class="ttname"><a href="classSHA512.html#a0d009e8d9157c3f14323e68631c33e97">SHA512::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00066">SHA512.cpp:66</a></div></div>
<div class="ttc" id="classSHA512_html_a7d37a20d7ab431ab15d094f768b6a695"><div class="ttname"><a href="classSHA512.html#a7d37a20d7ab431ab15d094f768b6a695">SHA512::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00079">SHA512.cpp:79</a></div></div> <div class="ttc" id="classSHA512_html_a7d37a20d7ab431ab15d094f768b6a695"><div class="ttname"><a href="classSHA512.html#a7d37a20d7ab431ab15d094f768b6a695">SHA512::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00079">SHA512.cpp:79</a></div></div>
<div class="ttc" id="classSHA512_html_afc136ad0e77de527b031db3fb8b32464"><div class="ttname"><a href="classSHA512.html#afc136ad0e77de527b031db3fb8b32464">SHA512::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00105">SHA512.cpp:105</a></div></div> <div class="ttc" id="classSHA512_html_afc136ad0e77de527b031db3fb8b32464"><div class="ttname"><a href="classSHA512.html#afc136ad0e77de527b031db3fb8b32464">SHA512::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00105">SHA512.cpp:105</a></div></div>
<div class="ttc" id="classSHA512_html_a1fe9533f0d3dfdb426eb3dc4bdc31904"><div class="ttname"><a href="classSHA512.html#a1fe9533f0d3dfdb426eb3dc4bdc31904">SHA512::finalizeHMAC</a></div><div class="ttdeci">void finalizeHMAC(const void *key, size_t keyLen, void *hash, size_t hashLen)</div><div class="ttdoc">Finalizes the HMAC hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00149">SHA512.cpp:149</a></div></div>
<div class="ttc" id="classSHA512_html_a520d966d99c0008e3cc58bd3b77dafcd"><div class="ttname"><a href="classSHA512.html#a520d966d99c0008e3cc58bd3b77dafcd">SHA512::SHA512</a></div><div class="ttdeci">SHA512()</div><div class="ttdoc">Constructs a SHA-512 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00042">SHA512.cpp:42</a></div></div> <div class="ttc" id="classSHA512_html_a520d966d99c0008e3cc58bd3b77dafcd"><div class="ttname"><a href="classSHA512.html#a520d966d99c0008e3cc58bd3b77dafcd">SHA512::SHA512</a></div><div class="ttdeci">SHA512()</div><div class="ttdoc">Constructs a SHA-512 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00042">SHA512.cpp:42</a></div></div>
<div class="ttc" id="classHash_html_ab6f40c9af91dc3d738d9fcce59af63cc"><div class="ttname"><a href="classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc">Hash::formatHMACKey</a></div><div class="ttdeci">void formatHMACKey(void *block, const void *key, size_t len, uint8_t pad)</div><div class="ttdoc">Formats a HMAC key into a block. </div><div class="ttdef"><b>Definition:</b> <a href="Hash_8cpp_source.html#l00162">Hash.cpp:162</a></div></div>
<div class="ttc" id="classSHA512_html_a2427ad8bf8b6958df91bd5806986167c"><div class="ttname"><a href="classSHA512.html#a2427ad8bf8b6958df91bd5806986167c">SHA512::resetHMAC</a></div><div class="ttdeci">void resetHMAC(const void *key, size_t keyLen)</div><div class="ttdoc">Resets the hash ready for a new HMAC hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00142">SHA512.cpp:142</a></div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -130,19 +130,22 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div> <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA512.html#a0a9104dce5f099aeba216e5fbcb1ee1a">clear</a>();</div> <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA512.html#a0a9104dce5f099aeba216e5fbcb1ee1a">clear</a>();</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div> <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">private</span>:</div> <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA512.html#a2427ad8bf8b6958df91bd5806986167c">resetHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">struct </span>{</div> <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSHA512.html#a1fe9533f0d3dfdb426eb3dc4bdc31904">finalizeHMAC</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *key, <span class="keywordtype">size_t</span> keyLen, <span class="keywordtype">void</span> *hash, <span class="keywordtype">size_t</span> hashLen);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; uint64_t h[8];</div> <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; uint64_t w[16];</div> <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; uint64_t lengthLow;</div> <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; uint64_t lengthHigh;</div> <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; uint64_t h[8];</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; uint8_t chunkSize;</div> <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; uint64_t w[16];</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; } state;</div> <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; uint64_t lengthLow;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div> <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; uint64_t lengthHigh;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">void</span> processChunk();</div> <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; uint8_t chunkSize;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;};</div> <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; } state;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div> <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#endif</span></div> <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">void</span> processChunk();</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;};</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="classSHA512_html_a6ab3cc1e172eecf4796e4cac629e0a44"><div class="ttname"><a href="classSHA512.html#a6ab3cc1e172eecf4796e4cac629e0a44">SHA512::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00056">SHA512.cpp:56</a></div></div> <div class="ttc" id="classSHA512_html_a6ab3cc1e172eecf4796e4cac629e0a44"><div class="ttname"><a href="classSHA512.html#a6ab3cc1e172eecf4796e4cac629e0a44">SHA512::hashSize</a></div><div class="ttdeci">size_t hashSize() const </div><div class="ttdoc">Size of the hash result from finalize(). </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00056">SHA512.cpp:56</a></div></div>
<div class="ttc" id="classSHA512_html_acf8b9bcb6be91ee70acc3700a2ffa1a1"><div class="ttname"><a href="classSHA512.html#acf8b9bcb6be91ee70acc3700a2ffa1a1">SHA512::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00061">SHA512.cpp:61</a></div></div> <div class="ttc" id="classSHA512_html_acf8b9bcb6be91ee70acc3700a2ffa1a1"><div class="ttname"><a href="classSHA512.html#acf8b9bcb6be91ee70acc3700a2ffa1a1">SHA512::blockSize</a></div><div class="ttdeci">size_t blockSize() const </div><div class="ttdoc">Size of the internal block used by the hash algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00061">SHA512.cpp:61</a></div></div>
<div class="ttc" id="classSHA512_html_a777ec274fa838684b0208369c5f66391"><div class="ttname"><a href="classSHA512.html#a777ec274fa838684b0208369c5f66391">SHA512::~SHA512</a></div><div class="ttdeci">virtual ~SHA512()</div><div class="ttdoc">Destroys this SHA-512 hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00051">SHA512.cpp:51</a></div></div> <div class="ttc" id="classSHA512_html_a777ec274fa838684b0208369c5f66391"><div class="ttname"><a href="classSHA512.html#a777ec274fa838684b0208369c5f66391">SHA512::~SHA512</a></div><div class="ttdeci">virtual ~SHA512()</div><div class="ttdoc">Destroys this SHA-512 hash object after clearing sensitive information. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00051">SHA512.cpp:51</a></div></div>
@ -152,11 +155,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="ttc" id="classSHA512_html_a0d009e8d9157c3f14323e68631c33e97"><div class="ttname"><a href="classSHA512.html#a0d009e8d9157c3f14323e68631c33e97">SHA512::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00066">SHA512.cpp:66</a></div></div> <div class="ttc" id="classSHA512_html_a0d009e8d9157c3f14323e68631c33e97"><div class="ttname"><a href="classSHA512.html#a0d009e8d9157c3f14323e68631c33e97">SHA512::reset</a></div><div class="ttdeci">void reset()</div><div class="ttdoc">Resets the hash ready for a new hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00066">SHA512.cpp:66</a></div></div>
<div class="ttc" id="classSHA512_html_a7d37a20d7ab431ab15d094f768b6a695"><div class="ttname"><a href="classSHA512.html#a7d37a20d7ab431ab15d094f768b6a695">SHA512::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00079">SHA512.cpp:79</a></div></div> <div class="ttc" id="classSHA512_html_a7d37a20d7ab431ab15d094f768b6a695"><div class="ttname"><a href="classSHA512.html#a7d37a20d7ab431ab15d094f768b6a695">SHA512::update</a></div><div class="ttdeci">void update(const void *data, size_t len)</div><div class="ttdoc">Updates the hash with more data. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00079">SHA512.cpp:79</a></div></div>
<div class="ttc" id="classSHA512_html_afc136ad0e77de527b031db3fb8b32464"><div class="ttname"><a href="classSHA512.html#afc136ad0e77de527b031db3fb8b32464">SHA512::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00105">SHA512.cpp:105</a></div></div> <div class="ttc" id="classSHA512_html_afc136ad0e77de527b031db3fb8b32464"><div class="ttname"><a href="classSHA512.html#afc136ad0e77de527b031db3fb8b32464">SHA512::finalize</a></div><div class="ttdeci">void finalize(void *hash, size_t len)</div><div class="ttdoc">Finalizes the hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00105">SHA512.cpp:105</a></div></div>
<div class="ttc" id="classSHA512_html_a1fe9533f0d3dfdb426eb3dc4bdc31904"><div class="ttname"><a href="classSHA512.html#a1fe9533f0d3dfdb426eb3dc4bdc31904">SHA512::finalizeHMAC</a></div><div class="ttdeci">void finalizeHMAC(const void *key, size_t keyLen, void *hash, size_t hashLen)</div><div class="ttdoc">Finalizes the HMAC hashing process and returns the hash. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00149">SHA512.cpp:149</a></div></div>
<div class="ttc" id="classSHA512_html_a520d966d99c0008e3cc58bd3b77dafcd"><div class="ttname"><a href="classSHA512.html#a520d966d99c0008e3cc58bd3b77dafcd">SHA512::SHA512</a></div><div class="ttdeci">SHA512()</div><div class="ttdoc">Constructs a SHA-512 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00042">SHA512.cpp:42</a></div></div> <div class="ttc" id="classSHA512_html_a520d966d99c0008e3cc58bd3b77dafcd"><div class="ttname"><a href="classSHA512.html#a520d966d99c0008e3cc58bd3b77dafcd">SHA512::SHA512</a></div><div class="ttdeci">SHA512()</div><div class="ttdoc">Constructs a SHA-512 hash object. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00042">SHA512.cpp:42</a></div></div>
<div class="ttc" id="classSHA512_html_a2427ad8bf8b6958df91bd5806986167c"><div class="ttname"><a href="classSHA512.html#a2427ad8bf8b6958df91bd5806986167c">SHA512::resetHMAC</a></div><div class="ttdeci">void resetHMAC(const void *key, size_t keyLen)</div><div class="ttdoc">Resets the hash ready for a new HMAC hashing process. </div><div class="ttdef"><b>Definition:</b> <a href="SHA512_8cpp_source.html#l00142">SHA512.cpp:142</a></div></div>
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -283,7 +283,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -157,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -156,7 +156,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -325,7 +325,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -167,7 +167,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -295,7 +295,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- fragment --></div><!-- contents --> </div><!-- fragment --></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -140,7 +140,7 @@ Completed Clock</h1>
</div></div><!-- contents --> </div></div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:08 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

View File

@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
</div><!-- contents --> </div><!-- contents -->
<!-- start footer part --> <!-- start footer part -->
<hr class="footer"/><address class="footer"><small> <hr class="footer"/><address class="footer"><small>
Generated on Sun Mar 22 2015 15:54:26 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html"> Generated on Wed Mar 25 2015 19:36:07 for ArduinoLibs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/> <img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6 </a> 1.8.6
</small></address> </small></address>

Some files were not shown because too many files have changed in this diff Show More