wxExtend/crypto_8h_source.html

284 lines
36 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>wxExtend: include/wxex/crypto.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">wxExtend
</div>
<div id="projectbrief">Additional templates and function helpers for wxWidgets</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.3 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_2fafa5ce03815a2bdea8d271fa718211.html">wxex</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">crypto.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> SPDX-License-Identifier: GPL-3.0-or-later</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> Copyright © 2016-2022 Amebis</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> Copyright © 2016 GÉANT</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">*/</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &quot;common.h&quot;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> </div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &lt;codeanalysis\warnings.h&gt;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#pragma warning(push)</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#pragma warning(disable: WXWIDGETS_CODE_ANALYSIS_WARNINGS)</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &lt;wx/buffer.h&gt;</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &lt;wx/ffile.h&gt;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;wx/log.h&gt;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include &lt;wx/string.h&gt;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#pragma warning(pop)</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#include &lt;Wincrypt.h&gt;</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> </div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"><a class="line" href="classwx_crypto_session.html"> 28</a></span><span class="keyword">class </span><a class="code hl_define" href="group__wx_extend.html#ga624ae3515d39396935a077c6cc0a4d64">WXEXTEND_API</a> <a class="code hl_class" href="classwx_crypto_session.html">wxCryptoSession</a></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span>{</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="keyword">protected</span>:</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"><a class="line" href="classwx_crypto_session.html#afc12a4c11aa0319694da98a469156f51"> 31</a></span> HCRYPTPROV <a class="code hl_variable" href="classwx_crypto_session.html#afc12a4c11aa0319694da98a469156f51">m_h</a>; </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <a class="code hl_class" href="classwx_crypto_session.html">wxCryptoSession</a>();</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classwx_crypto_session.html">~wxCryptoSession</a>();</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="classwx_crypto_session.html#ae8ed4efdc2c9fbec56129ee096354744"> 53</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classwx_crypto_session.html#ae8ed4efdc2c9fbec56129ee096354744">IsOk</a>() const noexcept</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> {</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordflow">return</span> m_h != NULL;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> }</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="classwx_crypto_session.html#a07af35e7873944f3405203ba1bb11796"> 62</a></span> <span class="keyword">inline</span> <span class="keyword">operator</span> HCRYPTPROV() const noexcept</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> {</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordflow">return</span> m_h;</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> }</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span>};</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"><a class="line" href="classwx_crypto_session_r_s_a_a_e_s.html"> 72</a></span><span class="keyword">class </span><a class="code hl_define" href="group__wx_extend.html#ga624ae3515d39396935a077c6cc0a4d64">WXEXTEND_API</a> <a class="code hl_class" href="classwx_crypto_session_r_s_a_a_e_s.html">wxCryptoSessionRSAAES</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwx_crypto_session.html">wxCryptoSession</a></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span>{</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <a class="code hl_class" href="classwx_crypto_session_r_s_a_a_e_s.html">wxCryptoSessionRSAAES</a>();</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span>};</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> </div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"><a class="line" href="classwx_crypto_hash.html"> 85</a></span><span class="keyword">class </span><a class="code hl_define" href="group__wx_extend.html#ga624ae3515d39396935a077c6cc0a4d64">WXEXTEND_API</a> <a class="code hl_class" href="classwx_crypto_hash.html">wxCryptoHash</a></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span>{</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="keyword">protected</span>:</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"><a class="line" href="classwx_crypto_hash.html#a5424e152aba41c70b3bdb821ef21851c"> 88</a></span> HCRYPTHASH <a class="code hl_variable" href="classwx_crypto_hash.html#a5424e152aba41c70b3bdb821ef21851c">m_h</a>; </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> </div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <a class="code hl_class" href="classwx_crypto_hash.html">wxCryptoHash</a>();</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classwx_crypto_hash.html">~wxCryptoHash</a>();</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> </div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"><a class="line" href="classwx_crypto_hash.html#ac5d521f9db3f6ac272e938fa74afb207"> 110</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classwx_crypto_hash.html#ac5d521f9db3f6ac272e938fa74afb207">IsOk</a>() const noexcept</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> {</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordflow">return</span> m_h != NULL;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> }</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> </div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> </div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"><a class="line" href="classwx_crypto_hash.html#af48cdd5c908fcb13a6aec3383c95e344"> 119</a></span> <span class="keyword">inline</span> <span class="keyword">operator</span> HCRYPTHASH() const noexcept</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> {</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordflow">return</span> m_h;</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> }</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"><a class="line" href="classwx_crypto_hash.html#ae26c3fa63ede941c3ae6e3758ea2c966"> 135</a></span> _Success_(<span class="keywordflow">return</span> != 0) bool Hash(_In_reads_bytes_(size) const <span class="keywordtype">void</span> *data, _In_ <span class="keywordtype">size_t</span> size);</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> </div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> </div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"><a class="line" href="classwx_crypto_hash.html#a36f7967c2f2affb36c9c7a9924d94c39"> 147</a></span> inline _Success_(return != 0) <span class="keywordtype">bool</span> Hash(_In_ const wxMemoryBuffer &amp;data)</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> {</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordflow">return</span> Hash(data.GetData(), data.GetDataLen());</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> }</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> </div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> </div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"><a class="line" href="classwx_crypto_hash.html#a65d60a6937ee200baac1fe01eb8255f6"> 162</a></span> <span class="keyword">inline</span> _Success_(<span class="keywordflow">return</span> != 0) bool HashAsUTF8(_In_ const wxString &amp;str)</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> {</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="keyword">const</span> wxScopedCharBuffer buf(str.ToUTF8());</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="keywordflow">return</span> Hash(buf.data(), buf.length());</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> }</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"><a class="line" href="classwx_crypto_hash.html#a322f6ead6d2bc7e23a54ca6104e71cf8"> 178</a></span> <span class="keyword">inline</span> _Success_(<span class="keywordflow">return</span> != 0) bool HashFile(_In_ const wxString &amp;fileName)</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> {</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> wxFFile file(fileName, wxT(<span class="stringliteral">&quot;rb&quot;</span>));</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keywordflow">if</span> (file.IsOpened()) {</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> wxMemoryBuffer buf(4*1024);</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="keywordtype">void</span> *data = buf.GetData();</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> nBlock = buf.GetBufSize();</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <span class="keywordflow">while</span> (!file.Eof())</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> Hash(data, file.Read(data, nBlock));</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> </div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> wxLogError(wxT(<span class="stringliteral">&quot;Can not open %s file for reading.&quot;</span>), fileName);</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> }</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> }</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> </div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keyword">virtual</span> _Success_(<span class="keywordflow">return</span> != 0) bool GetValue(_Out_ wxMemoryBuffer &amp;hash);</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> </div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> </div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> _Success_(return != 0) <span class="keywordtype">bool</span> Sign(_Inout_ wxMemoryBuffer &amp;signature);</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> </div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> </div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"><a class="line" href="classwx_crypto_hash.html#aa50c43132cffb5b0050073a6ff8066bc"> 225</a></span> inline wxMemoryBuffer Sign()</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> {</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> wxMemoryBuffer signature;</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <a class="code hl_define" href="group__wx_extend.html#gad8b37e21b4abf5fa854eb8524161e972">wxVERIFY</a>(Sign(signature));</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keywordflow">return</span> signature;</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> }</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span>};</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> </div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> </div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"><a class="line" href="classwx_crypto_hash_s_h_a1.html"> 237</a></span><span class="keyword">class </span><a class="code hl_define" href="group__wx_extend.html#ga624ae3515d39396935a077c6cc0a4d64">WXEXTEND_API</a> <a class="code hl_class" href="classwx_crypto_hash_s_h_a1.html">wxCryptoHashSHA1</a> : <span class="keyword">public</span> <a class="code hl_class" href="classwx_crypto_hash.html">wxCryptoHash</a></div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span>{</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> <a class="code hl_class" href="classwx_crypto_hash_s_h_a1.html">wxCryptoHashSHA1</a>(<a class="code hl_class" href="classwx_crypto_session.html">wxCryptoSession</a> &amp;session);</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> </div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> </div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> <span class="keyword">virtual</span> _Success_(<span class="keywordflow">return</span> != 0) <span class="keywordtype">bool</span> GetValue(_Out_ wxMemoryBuffer &amp;hash);</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span>};</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> </div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> </div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span><span class="preprocessor">#if (NTDDI_VERSION &gt; NTDDI_WINXPSP2)</span></div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> </div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span><span class="keyword">class </span><a class="code hl_define" href="group__wx_extend.html#ga624ae3515d39396935a077c6cc0a4d64">WXEXTEND_API</a> wxCryptoHashSHA256 : <span class="keyword">public</span> <a class="code hl_class" href="classwx_crypto_hash.html">wxCryptoHash</a></div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span>{</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> wxCryptoHashSHA256(<a class="code hl_class" href="classwx_crypto_session.html">wxCryptoSession</a> &amp;session);</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> </div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> </div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <span class="keyword">virtual</span> _Success_(<span class="keywordflow">return</span> != 0) bool GetValue(_Out_ wxMemoryBuffer &amp;hash);</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span>};</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> </div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> </div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> </div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"><a class="line" href="classwx_crypto_key.html"> 291</a></span><span class="keyword">class </span><a class="code hl_define" href="group__wx_extend.html#ga624ae3515d39396935a077c6cc0a4d64">WXEXTEND_API</a> <a class="code hl_class" href="classwx_crypto_key.html">wxCryptoKey</a></div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span>{</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span><span class="keyword">protected</span>:</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"><a class="line" href="classwx_crypto_key.html#a80ff174fdca2897a83addf87b5f7afb9"> 294</a></span> HCRYPTKEY <a class="code hl_variable" href="classwx_crypto_key.html#a80ff174fdca2897a83addf87b5f7afb9">m_h</a>; </div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> </div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> <a class="code hl_class" href="classwx_crypto_key.html">wxCryptoKey</a>();</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> </div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> </div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classwx_crypto_key.html">~wxCryptoKey</a>();</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> </div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> </div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"><a class="line" href="classwx_crypto_key.html#afc8cb58b4d6d362d1dd1f2b68b93b38d"> 316</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classwx_crypto_key.html#afc8cb58b4d6d362d1dd1f2b68b93b38d">IsOk</a>() const noexcept</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> {</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> <span class="keywordflow">return</span> m_h != NULL;</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> }</div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> </div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> </div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"><a class="line" href="classwx_crypto_key.html#ac33af073e59164397426adaed6dc6ad0"> 325</a></span> <span class="keyword">inline</span> <span class="keyword">operator</span> HCRYPTKEY() const noexcept</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> {</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> <span class="keywordflow">return</span> m_h;</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> }</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> </div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> </div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> _Success_(<span class="keywordflow">return</span> != 0) bool ImportPrivate(_Inout_ <a class="code hl_class" href="classwx_crypto_session.html">wxCryptoSession</a> &amp;session, _In_reads_bytes_(size) const <span class="keywordtype">void</span> *data, _In_ <span class="keywordtype">size_t</span> size);</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> </div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> </div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> _Success_(return != 0) <span class="keywordtype">bool</span> ImportPublic(_Inout_ <a class="code hl_class" href="classwx_crypto_session.html">wxCryptoSession</a> &amp;session, _In_reads_bytes_(size) const <span class="keywordtype">void</span> *data, _In_ <span class="keywordtype">size_t</span> size);</div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span>};</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> </div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> </div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"><a class="line" href="group__wx_extend.html#ga83dff5298b84b50ed814bf8f1894bcb1"> 356</a></span>_Success_(return != 0) <span class="keywordtype">bool</span> <a class="code hl_define" href="group__wx_extend.html#ga624ae3515d39396935a077c6cc0a4d64">WXEXTEND_API</a> <a class="code hl_function" href="group__wx_extend.html#ga83dff5298b84b50ed814bf8f1894bcb1">wxCryptoVerifySignature</a>(_In_ const <a class="code hl_class" href="classwx_crypto_hash.html">wxCryptoHash</a> &amp;hash, _In_reads_bytes_(signature_size) const <span class="keywordtype">void</span> *signature_data, _In_ <span class="keywordtype">size_t</span> signature_size, _In_ const <a class="code hl_class" href="classwx_crypto_key.html">wxCryptoKey</a> &amp;key);</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> </div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> </div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"><a class="line" href="group__wx_extend.html#gade58a7782dfb7824739533438ea26966"> 370</a></span>inline _Success_(return != 0) <span class="keywordtype">bool</span> <a class="code hl_function" href="group__wx_extend.html#ga83dff5298b84b50ed814bf8f1894bcb1">wxCryptoVerifySignature</a>(_In_ const <a class="code hl_class" href="classwx_crypto_hash.html">wxCryptoHash</a> &amp;hash, _In_ const wxMemoryBuffer &amp;signature, _In_ const <a class="code hl_class" href="classwx_crypto_key.html">wxCryptoKey</a> &amp;key)</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span>{</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> <span class="keywordflow">return</span> <a class="code hl_function" href="group__wx_extend.html#ga83dff5298b84b50ed814bf8f1894bcb1">wxCryptoVerifySignature</a>(hash, signature.GetData(), signature.GetDataLen(), key);</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span>}</div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> </div>
<div class="ttc" id="aclasswx_crypto_hash_html"><div class="ttname"><a href="classwx_crypto_hash.html">wxCryptoHash</a></div><div class="ttdoc">Cryptographics Hash Base.</div><div class="ttdef"><b>Definition:</b> crypto.h:86</div></div>
<div class="ttc" id="aclasswx_crypto_hash_html_a5424e152aba41c70b3bdb821ef21851c"><div class="ttname"><a href="classwx_crypto_hash.html#a5424e152aba41c70b3bdb821ef21851c">wxCryptoHash::m_h</a></div><div class="ttdeci">HCRYPTHASH m_h</div><div class="ttdoc">Hash Handle.</div><div class="ttdef"><b>Definition:</b> crypto.h:88</div></div>
<div class="ttc" id="aclasswx_crypto_hash_html_ac5d521f9db3f6ac272e938fa74afb207"><div class="ttname"><a href="classwx_crypto_hash.html#ac5d521f9db3f6ac272e938fa74afb207">wxCryptoHash::IsOk</a></div><div class="ttdeci">bool IsOk() const noexcept</div><div class="ttdoc">Has the hash creation been successful?</div><div class="ttdef"><b>Definition:</b> crypto.h:110</div></div>
<div class="ttc" id="aclasswx_crypto_hash_s_h_a1_html"><div class="ttname"><a href="classwx_crypto_hash_s_h_a1.html">wxCryptoHashSHA1</a></div><div class="ttdoc">SHA-1 Cryptographics Hash.</div><div class="ttdef"><b>Definition:</b> crypto.h:238</div></div>
<div class="ttc" id="aclasswx_crypto_key_html"><div class="ttname"><a href="classwx_crypto_key.html">wxCryptoKey</a></div><div class="ttdoc">Cryptographics Key Base.</div><div class="ttdef"><b>Definition:</b> crypto.h:292</div></div>
<div class="ttc" id="aclasswx_crypto_key_html_a80ff174fdca2897a83addf87b5f7afb9"><div class="ttname"><a href="classwx_crypto_key.html#a80ff174fdca2897a83addf87b5f7afb9">wxCryptoKey::m_h</a></div><div class="ttdeci">HCRYPTKEY m_h</div><div class="ttdoc">Key Handle.</div><div class="ttdef"><b>Definition:</b> crypto.h:294</div></div>
<div class="ttc" id="aclasswx_crypto_key_html_afc8cb58b4d6d362d1dd1f2b68b93b38d"><div class="ttname"><a href="classwx_crypto_key.html#afc8cb58b4d6d362d1dd1f2b68b93b38d">wxCryptoKey::IsOk</a></div><div class="ttdeci">bool IsOk() const noexcept</div><div class="ttdoc">Has the key creation been successful?</div><div class="ttdef"><b>Definition:</b> crypto.h:316</div></div>
<div class="ttc" id="aclasswx_crypto_session_html"><div class="ttname"><a href="classwx_crypto_session.html">wxCryptoSession</a></div><div class="ttdoc">Cryptographics Session Base Class.</div><div class="ttdef"><b>Definition:</b> crypto.h:29</div></div>
<div class="ttc" id="aclasswx_crypto_session_html_ae8ed4efdc2c9fbec56129ee096354744"><div class="ttname"><a href="classwx_crypto_session.html#ae8ed4efdc2c9fbec56129ee096354744">wxCryptoSession::IsOk</a></div><div class="ttdeci">bool IsOk() const noexcept</div><div class="ttdoc">Has the session creation been successful?</div><div class="ttdef"><b>Definition:</b> crypto.h:53</div></div>
<div class="ttc" id="aclasswx_crypto_session_html_afc12a4c11aa0319694da98a469156f51"><div class="ttname"><a href="classwx_crypto_session.html#afc12a4c11aa0319694da98a469156f51">wxCryptoSession::m_h</a></div><div class="ttdeci">HCRYPTPROV m_h</div><div class="ttdoc">Session Handle.</div><div class="ttdef"><b>Definition:</b> crypto.h:31</div></div>
<div class="ttc" id="aclasswx_crypto_session_r_s_a_a_e_s_html"><div class="ttname"><a href="classwx_crypto_session_r_s_a_a_e_s.html">wxCryptoSessionRSAAES</a></div><div class="ttdoc">RSA AES Cryptographics Session.</div><div class="ttdef"><b>Definition:</b> crypto.h:73</div></div>
<div class="ttc" id="agroup__wx_extend_html_ga624ae3515d39396935a077c6cc0a4d64"><div class="ttname"><a href="group__wx_extend.html#ga624ae3515d39396935a077c6cc0a4d64">WXEXTEND_API</a></div><div class="ttdeci">#define WXEXTEND_API</div><div class="ttdoc">Public function calling convention.</div><div class="ttdef"><b>Definition:</b> common.h:56</div></div>
<div class="ttc" id="agroup__wx_extend_html_ga83dff5298b84b50ed814bf8f1894bcb1"><div class="ttname"><a href="group__wx_extend.html#ga83dff5298b84b50ed814bf8f1894bcb1">wxCryptoVerifySignature</a></div><div class="ttdeci">bool WXEXTEND_API wxCryptoVerifySignature(const wxCryptoHash &amp;hash, _In_reads_bytes_(signature_size) const void *signature_data, size_t signature_size, const wxCryptoKey &amp;key)</div><div class="ttdoc">Verifies if the hash matches signature and the public key.</div></div>
<div class="ttc" id="agroup__wx_extend_html_gad8b37e21b4abf5fa854eb8524161e972"><div class="ttname"><a href="group__wx_extend.html#gad8b37e21b4abf5fa854eb8524161e972">wxVERIFY</a></div><div class="ttdeci">#define wxVERIFY(cond)</div><div class="ttdoc">Test if condition is true. When not true, raise debug assertion with the given message.</div><div class="ttdef"><b>Definition:</b> common.h:84</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Feb 17 2022 12:50:26 for wxExtend by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
</small></address>
</body>
</html>