WinStd/group___win_std_crypto_a_p_i.html

233 lines
19 KiB
HTML

<!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>WinStd: Cryptography API</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">WinStd
</div>
<div id="projectbrief">Additional templates and function helpers for Microsoft Windows using Standard C++ classes</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>
</div><!-- top -->
<!-- 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 class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle"><div class="title">Cryptography API</div></div>
</div><!--header-->
<div class="contents">
<p>Integrates WinStd classes with Microsoft Cryptography API.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1cert__context.html">winstd::cert_context</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">PCCERT_CONTEXT wrapper class. <a href="classwinstd_1_1cert__context.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1cert__chain__context.html">winstd::cert_chain_context</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">PCCERT_CHAIN_CONTEXT wrapper class. <a href="classwinstd_1_1cert__chain__context.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1cert__store.html">winstd::cert_store</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">HCERTSTORE wrapper class. <a href="classwinstd_1_1cert__store.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1crypt__prov.html">winstd::crypt_prov</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">HCRYPTPROV wrapper class. <a href="classwinstd_1_1crypt__prov.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1crypt__hash.html">winstd::crypt_hash</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">HCRYPTHASH wrapper class. <a href="classwinstd_1_1crypt__hash.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1crypt__key.html">winstd::crypt_key</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">HCRYPTKEY wrapper class. <a href="classwinstd_1_1crypt__key.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classwinstd_1_1data__blob.html">winstd::data_blob</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">DATA_BLOB wrapper class. <a href="classwinstd_1_1data__blob.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gaaf0bc6af7df91ab649352e190a801e76"><td class="memItemLeft" align="right" valign="top"><a id="gaaf0bc6af7df91ab649352e190a801e76" name="gaaf0bc6af7df91ab649352e190a801e76"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>if</b> (CertGetCertificateContextProperty(pCertContext, dwPropId, buf, &amp;dwSize))</td></tr>
<tr class="separator:gaaf0bc6af7df91ab649352e190a801e76"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1f393f04b9f3ae6465235f9a749ad6b5"><td class="memItemLeft" align="right" valign="top"><a id="ga1f393f04b9f3ae6465235f9a749ad6b5" name="ga1f393f04b9f3ae6465235f9a749ad6b5"></a>
else&#160;</td><td class="memItemRight" valign="bottom"><b>if</b> (GetLastError()==ERROR_MORE_DATA)</td></tr>
<tr class="separator:ga1f393f04b9f3ae6465235f9a749ad6b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7c8c6cb0502b7a910616360bdb4b2b24"><td class="memItemLeft" align="right" valign="top"><a id="ga7c8c6cb0502b7a910616360bdb4b2b24" name="ga7c8c6cb0502b7a910616360bdb4b2b24"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>if</b> (CryptGetHashParam(hHash, dwParam, buf, &amp;dwSize, dwFlags))</td></tr>
<tr class="separator:ga7c8c6cb0502b7a910616360bdb4b2b24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2839d01f1abd20bd5216b899a5f15ff9"><td class="memItemLeft" align="right" valign="top"><a id="ga2839d01f1abd20bd5216b899a5f15ff9" name="ga2839d01f1abd20bd5216b899a5f15ff9"></a>
return&#160;</td><td class="memItemRight" valign="bottom"><b>CryptGetHashParam</b> (hHash, dwParam,(BYTE *)&amp;data, &amp;dwSize, dwFlags)</td></tr>
<tr class="separator:ga2839d01f1abd20bd5216b899a5f15ff9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafa957e0e94e722846d171508eb34ff63"><td class="memItemLeft" align="right" valign="top"><a id="gafa957e0e94e722846d171508eb34ff63" name="gafa957e0e94e722846d171508eb34ff63"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>if</b> (CryptGetKeyParam(hKey, dwParam, buf, &amp;dwSize, dwFlags))</td></tr>
<tr class="separator:gafa957e0e94e722846d171508eb34ff63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga96e9d20e62076fa24ce5917eb9987742"><td class="memItemLeft" align="right" valign="top"><a id="ga96e9d20e62076fa24ce5917eb9987742" name="ga96e9d20e62076fa24ce5917eb9987742"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>if</b> (CryptExportKey(hKey, hExpKey, dwBlobType, dwFlags, NULL, &amp;dwKeyBLOBSize))</td></tr>
<tr class="separator:ga96e9d20e62076fa24ce5917eb9987742"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga643e0d3ac82fab46d747c504cad25dda"><td class="memItemLeft" align="right" valign="top"><a id="ga643e0d3ac82fab46d747c504cad25dda" name="ga643e0d3ac82fab46d747c504cad25dda"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>if</b> (dwBufLen)</td></tr>
<tr class="separator:ga643e0d3ac82fab46d747c504cad25dda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1bfa8bcb63a3bbc94cdf6702a0b214d1"><td class="memItemLeft" align="right" valign="top"><a id="ga1bfa8bcb63a3bbc94cdf6702a0b214d1" name="ga1bfa8bcb63a3bbc94cdf6702a0b214d1"></a>
else&#160;</td><td class="memItemRight" valign="bottom"><b>if</b> (CryptEncrypt(hKey, NULL, Final, dwFlags, NULL, &amp;dwEncLen, 0))</td></tr>
<tr class="separator:ga1bfa8bcb63a3bbc94cdf6702a0b214d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf864837aab8a24ccd11b21e3e0136694"><td class="memItemLeft" align="right" valign="top"><a id="gaf864837aab8a24ccd11b21e3e0136694" name="gaf864837aab8a24ccd11b21e3e0136694"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>if</b> (dwResult==ERROR_MORE_DATA)</td></tr>
<tr class="separator:gaf864837aab8a24ccd11b21e3e0136694"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabe76c7e334cfe38f887b31d054bf7b22"><td class="memItemLeft" align="right" valign="top"><a id="gabe76c7e334cfe38f887b31d054bf7b22" name="gabe76c7e334cfe38f887b31d054bf7b22"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>if</b> (CryptDecrypt(hKey, hHash, Final, dwFlags,(BYTE *) aData.data(), &amp;dwDataLen))</td></tr>
<tr class="separator:gabe76c7e334cfe38f887b31d054bf7b22"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ga3b68b68dc03acd2cdbf85a7cee08a511"><td class="memItemLeft" align="right" valign="top"><a id="ga3b68b68dc03acd2cdbf85a7cee08a511" name="ga3b68b68dc03acd2cdbf85a7cee08a511"></a>
static _In_ DWORD&#160;</td><td class="memItemRight" valign="bottom"><b>dwPropId</b></td></tr>
<tr class="separator:ga3b68b68dc03acd2cdbf85a7cee08a511"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa70eec1df9acc8dd148af4bffc9601f6"><td class="memItemLeft" align="right" valign="top">static _In_ DWORD _Out_ std::vector&lt; _Ty, _Ax &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#gaa70eec1df9acc8dd148af4bffc9601f6">aData</a></td></tr>
<tr class="separator:gaa70eec1df9acc8dd148af4bffc9601f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga669c5a85f5a9eb97e64ad880fadaaa2d"><td class="memItemLeft" align="right" valign="top"><a id="ga669c5a85f5a9eb97e64ad880fadaaa2d" name="ga669c5a85f5a9eb97e64ad880fadaaa2d"></a>
DWORD&#160;</td><td class="memItemRight" valign="bottom"><b>dwSize</b> = <a class="el" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a></td></tr>
<tr class="separator:ga669c5a85f5a9eb97e64ad880fadaaa2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac529551d78a5faa7079a3deaaadc3f5e"><td class="memItemLeft" align="right" valign="top"><a id="gac529551d78a5faa7079a3deaaadc3f5e" name="gac529551d78a5faa7079a3deaaadc3f5e"></a>
return&#160;</td><td class="memItemRight" valign="bottom"><b>FALSE</b></td></tr>
<tr class="separator:gac529551d78a5faa7079a3deaaadc3f5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3eb7764ce8363593a323a8d0f0e510b8"><td class="memItemLeft" align="right" valign="top"><a id="ga3eb7764ce8363593a323a8d0f0e510b8" name="ga3eb7764ce8363593a323a8d0f0e510b8"></a>
static _In_ DWORD&#160;</td><td class="memItemRight" valign="bottom"><b>dwParam</b></td></tr>
<tr class="separator:ga3eb7764ce8363593a323a8d0f0e510b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaab1de521d202a89a4df9868168ee10b5"><td class="memItemLeft" align="right" valign="top">static _In_ DWORD _Out_ std::vector&lt; _Ty, _Ax &gt; _In_ DWORD&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#gaab1de521d202a89a4df9868168ee10b5">dwFlags</a></td></tr>
<tr class="separator:gaab1de521d202a89a4df9868168ee10b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9c229eeaa5afd5fd1224f197de24a103"><td class="memItemLeft" align="right" valign="top"><a id="ga9c229eeaa5afd5fd1224f197de24a103" name="ga9c229eeaa5afd5fd1224f197de24a103"></a>
static _In_ DWORD _Out_ T &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>data</b></td></tr>
<tr class="separator:ga9c229eeaa5afd5fd1224f197de24a103"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf1121b6ca2434f04ab57df4e4ec4c254"><td class="memItemLeft" align="right" valign="top"><a id="gaf1121b6ca2434f04ab57df4e4ec4c254" name="gaf1121b6ca2434f04ab57df4e4ec4c254"></a>
static _In_ HCRYPTKEY&#160;</td><td class="memItemRight" valign="bottom"><b>hExpKey</b></td></tr>
<tr class="separator:gaf1121b6ca2434f04ab57df4e4ec4c254"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6455b293923c230ca26e49664ec4b715"><td class="memItemLeft" align="right" valign="top"><a id="ga6455b293923c230ca26e49664ec4b715" name="ga6455b293923c230ca26e49664ec4b715"></a>
static _In_ HCRYPTKEY _In_ DWORD&#160;</td><td class="memItemRight" valign="bottom"><b>dwBlobType</b></td></tr>
<tr class="separator:ga6455b293923c230ca26e49664ec4b715"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4fd3001e2eaf53a7de0468053c54cf83"><td class="memItemLeft" align="right" valign="top"><a id="ga4fd3001e2eaf53a7de0468053c54cf83" name="ga4fd3001e2eaf53a7de0468053c54cf83"></a>
static _In_opt_ HCRYPTHASH&#160;</td><td class="memItemRight" valign="bottom"><b>hHash</b></td></tr>
<tr class="separator:ga4fd3001e2eaf53a7de0468053c54cf83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga74873e75666502ccd0c827ce1d593179"><td class="memItemLeft" align="right" valign="top"><a id="ga74873e75666502ccd0c827ce1d593179" name="ga74873e75666502ccd0c827ce1d593179"></a>
static _In_opt_ HCRYPTHASH _In_ BOOL&#160;</td><td class="memItemRight" valign="bottom"><b>Final</b></td></tr>
<tr class="separator:ga74873e75666502ccd0c827ce1d593179"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga831502c70924bcdaa53bd3e98efd468e"><td class="memItemLeft" align="right" valign="top"><a id="ga831502c70924bcdaa53bd3e98efd468e" name="ga831502c70924bcdaa53bd3e98efd468e"></a>
else&#160;</td><td class="memItemRight" valign="bottom"><b>dwResult</b> = GetLastError()</td></tr>
<tr class="separator:ga831502c70924bcdaa53bd3e98efd468e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0544c3fe466e421738dae463968b70ba"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___win_std_crypto_a_p_i.html#ga0544c3fe466e421738dae463968b70ba">else</a></td></tr>
<tr class="separator:ga0544c3fe466e421738dae463968b70ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p >Integrates WinStd classes with Microsoft Cryptography API. </p>
<h2 class="groupheader">Variable Documentation</h2>
<a id="gaa70eec1df9acc8dd148af4bffc9601f6" name="gaa70eec1df9acc8dd148af4bffc9601f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa70eec1df9acc8dd148af4bffc9601f6">&#9670;&nbsp;</a></span>aData</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static _In_opt_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_ std::vector&lt; _Ty, _Ax &gt; &amp; aData</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">{</div>
<div class="line"> BYTE buf[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>]</div>
<div class="ttc" id="agroup___win_std_general_html_ga3ca39107a61bbcd05f901898ec584986"><div class="ttname"><a href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a></div><div class="ttdeci">#define WINSTD_STACK_BUFFER_BYTES</div><div class="ttdoc">Size of the stack buffer in bytes used for initial system function call.</div><div class="ttdef"><b>Definition:</b> Common.h:80</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="gaab1de521d202a89a4df9868168ee10b5" name="gaab1de521d202a89a4df9868168ee10b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaab1de521d202a89a4df9868168ee10b5">&#9670;&nbsp;</a></span>dwFlags</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">static _In_ DWORD dwFlags</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">{</div>
<div class="line"> BYTE buf[<a class="code hl_define" href="group___win_std_general.html#ga3ca39107a61bbcd05f901898ec584986">WINSTD_STACK_BUFFER_BYTES</a>]</div>
</div><!-- fragment -->
</div>
</div>
<a id="ga0544c3fe466e421738dae463968b70ba" name="ga0544c3fe466e421738dae463968b70ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0544c3fe466e421738dae463968b70ba">&#9670;&nbsp;</a></span>else</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">else</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">{</div>
<div class="line"> </div>
<div class="line"> aData.resize((dwDataLen + <span class="keyword">sizeof</span>(_Ty) - 1) / <span class="keyword">sizeof</span>(_Ty))</div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Feb 4 2022 12:23:56 for WinStd 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>