<!-- HTML header for doxygen 1.8.10-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<title>Intel® Enhanced Privacy ID SDK: member</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(initResizable);
/* @license-end */</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="epidstyle.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname"><a
onclick="storeLink('index.html')"
id="projectlink"
class="index.html"
href="index.html">Intel® Enhanced Privacy ID SDK</a>
 <span id="projectnumber">6.0.1</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('group___epid_member_module.html','');});
/* @license-end */
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#groups">Modules</a> |
<a href="#nested-classes">Data Structures</a> |
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">member<div class="ingroups"><a class="el" href="group___epid_module.html">epid&nbsp;</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>Member functionality.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
Modules</h2></td></tr>
<tr class="memitem:group___tpm2_module"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___tpm2_module.html">tpm2</a></td></tr>
<tr class="memdesc:group___tpm2_module"><td class="mdescLeft"> </td><td class="mdescRight">Internal interface that models TPM 2.0 interfaces. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_member_params.html">MemberParams</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Software only specific member parameters. <a href="struct_member_params.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gae7a7b01bc0a84c44c9d14e6c311c1ba7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#gae7a7b01bc0a84c44c9d14e6c311c1ba7">EpidMemberCreate</a> (<a class="el" href="struct_member_params.html">MemberParams</a> const *params, <a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> **ctx)</td></tr>
<tr class="memdesc:gae7a7b01bc0a84c44c9d14e6c311c1ba7"><td class="mdescLeft"> </td><td class="mdescRight">Allocates and initializes a new member context. <a href="#gae7a7b01bc0a84c44c9d14e6c311c1ba7">More...</a><br /></td></tr>
<tr class="separator:gae7a7b01bc0a84c44c9d14e6c311c1ba7"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga2b3c0cc1d8d4e50190ca94656fa36e24"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#ga2b3c0cc1d8d4e50190ca94656fa36e24">EpidMemberGetSize</a> (<a class="el" href="struct_member_params.html">MemberParams</a> const *params, size_t *context_size)</td></tr>
<tr class="memdesc:ga2b3c0cc1d8d4e50190ca94656fa36e24"><td class="mdescLeft"> </td><td class="mdescRight">Computes the size in bytes required for a member context. <a href="#ga2b3c0cc1d8d4e50190ca94656fa36e24">More...</a><br /></td></tr>
<tr class="separator:ga2b3c0cc1d8d4e50190ca94656fa36e24"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga35273b8e75d51e312f0d2fd3aa094efb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#ga35273b8e75d51e312f0d2fd3aa094efb">EpidMemberInit</a> (<a class="el" href="struct_member_params.html">MemberParams</a> const *params, <a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> *ctx)</td></tr>
<tr class="memdesc:ga35273b8e75d51e312f0d2fd3aa094efb"><td class="mdescLeft"> </td><td class="mdescRight">Initializes a new member context. <a href="#ga35273b8e75d51e312f0d2fd3aa094efb">More...</a><br /></td></tr>
<tr class="separator:ga35273b8e75d51e312f0d2fd3aa094efb"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac10008d8c9ba7bc5e5be899ed03c61c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#gac10008d8c9ba7bc5e5be899ed03c61c3">EpidCreateJoinRequest</a> (<a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> *ctx, <a class="el" href="struct_group_pub_key.html">GroupPubKey</a> const *pub_key, <a class="el" href="group___epid_types.html#ga55eb2193045bde31af3f551565126042">IssuerNonce</a> const *ni, <a class="el" href="struct_join_request.html">JoinRequest</a> *join_request)</td></tr>
<tr class="memdesc:gac10008d8c9ba7bc5e5be899ed03c61c3"><td class="mdescLeft"> </td><td class="mdescRight">Creates a request to join a group. <a href="#gac10008d8c9ba7bc5e5be899ed03c61c3">More...</a><br /></td></tr>
<tr class="separator:gac10008d8c9ba7bc5e5be899ed03c61c3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga788ebc9d1ba6153c637b762484ca1140"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#ga788ebc9d1ba6153c637b762484ca1140">EpidProvisionCredential</a> (<a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> *ctx, <a class="el" href="struct_group_pub_key.html">GroupPubKey</a> const *pub_key, <a class="el" href="struct_membership_credential.html">MembershipCredential</a> const *credential, <a class="el" href="struct_member_precomp.html">MemberPrecomp</a> const *precomp_str)</td></tr>
<tr class="memdesc:ga788ebc9d1ba6153c637b762484ca1140"><td class="mdescLeft"> </td><td class="mdescRight">Provisions a member context from a membership credential. <a href="#ga788ebc9d1ba6153c637b762484ca1140">More...</a><br /></td></tr>
<tr class="separator:ga788ebc9d1ba6153c637b762484ca1140"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga76cddb8e20afc43de2c30d5e4addb2ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#ga76cddb8e20afc43de2c30d5e4addb2ea">EpidProvisionCompressed</a> (<a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> *ctx, <a class="el" href="struct_group_pub_key.html">GroupPubKey</a> const *pub_key, <a class="el" href="struct_compressed_priv_key.html">CompressedPrivKey</a> const *compressed_privkey, <a class="el" href="struct_member_precomp.html">MemberPrecomp</a> const *precomp_str)</td></tr>
<tr class="memdesc:ga76cddb8e20afc43de2c30d5e4addb2ea"><td class="mdescLeft"> </td><td class="mdescRight">Provisions a member context from a compressed private key. <a href="#ga76cddb8e20afc43de2c30d5e4addb2ea">More...</a><br /></td></tr>
<tr class="separator:ga76cddb8e20afc43de2c30d5e4addb2ea"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga07094399c1e040b95ae3e58a74e7c302"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#ga07094399c1e040b95ae3e58a74e7c302">EpidProvisionKey</a> (<a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> *ctx, <a class="el" href="struct_group_pub_key.html">GroupPubKey</a> const *pub_key, <a class="el" href="struct_priv_key.html">PrivKey</a> const *priv_key, <a class="el" href="struct_member_precomp.html">MemberPrecomp</a> const *precomp_str)</td></tr>
<tr class="memdesc:ga07094399c1e040b95ae3e58a74e7c302"><td class="mdescLeft"> </td><td class="mdescRight">Provisions a member context from a private key. <a href="#ga07094399c1e040b95ae3e58a74e7c302">More...</a><br /></td></tr>
<tr class="separator:ga07094399c1e040b95ae3e58a74e7c302"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa2c85b1f0ea17a11ac5d297b21aa30f6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#gaa2c85b1f0ea17a11ac5d297b21aa30f6">EpidMemberStartup</a> (<a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> *ctx)</td></tr>
<tr class="memdesc:gaa2c85b1f0ea17a11ac5d297b21aa30f6"><td class="mdescLeft"> </td><td class="mdescRight">Change member from setup state to normal operation. <a href="#gaa2c85b1f0ea17a11ac5d297b21aa30f6">More...</a><br /></td></tr>
<tr class="separator:gaa2c85b1f0ea17a11ac5d297b21aa30f6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga98b4d990a885339b83cd0513fedcc76d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#ga98b4d990a885339b83cd0513fedcc76d">EpidMemberDeinit</a> (<a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> *ctx)</td></tr>
<tr class="memdesc:ga98b4d990a885339b83cd0513fedcc76d"><td class="mdescLeft"> </td><td class="mdescRight">De-initializes an existing member context buffer. <a href="#ga98b4d990a885339b83cd0513fedcc76d">More...</a><br /></td></tr>
<tr class="separator:ga98b4d990a885339b83cd0513fedcc76d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga3824589c683c5e0e59d483462fce65d6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#ga3824589c683c5e0e59d483462fce65d6">EpidMemberDelete</a> (<a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> **ctx)</td></tr>
<tr class="memdesc:ga3824589c683c5e0e59d483462fce65d6"><td class="mdescLeft"> </td><td class="mdescRight">Deletes an existing member context. <a href="#ga3824589c683c5e0e59d483462fce65d6">More...</a><br /></td></tr>
<tr class="separator:ga3824589c683c5e0e59d483462fce65d6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga9998eb454838ff5d232ff22ecbab31bf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#ga9998eb454838ff5d232ff22ecbab31bf">EpidMemberSetHashAlg</a> (<a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> *ctx, <a class="el" href="group___epid_types.html#ga5e450438f6f9a5eacd0cf5ce354ec890">HashAlg</a> hash_alg)</td></tr>
<tr class="memdesc:ga9998eb454838ff5d232ff22ecbab31bf"><td class="mdescLeft"> </td><td class="mdescRight">Sets the hash algorithm to be used by a member. <a href="#ga9998eb454838ff5d232ff22ecbab31bf">More...</a><br /></td></tr>
<tr class="separator:ga9998eb454838ff5d232ff22ecbab31bf"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaaae6f21f58c22fce58076f10d68159f4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#gaaae6f21f58c22fce58076f10d68159f4">EpidMemberSetSigRl</a> (<a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> *ctx, <a class="el" href="struct_sig_rl.html">SigRl</a> const *sig_rl, size_t sig_rl_size)</td></tr>
<tr class="memdesc:gaaae6f21f58c22fce58076f10d68159f4"><td class="mdescLeft"> </td><td class="mdescRight">Sets the signature based revocation list to be used by a member. <a href="#gaaae6f21f58c22fce58076f10d68159f4">More...</a><br /></td></tr>
<tr class="separator:gaaae6f21f58c22fce58076f10d68159f4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga76e535722467af7c16809b5b521e0000"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#ga76e535722467af7c16809b5b521e0000">EpidGetSigSize</a> (<a class="el" href="struct_sig_rl.html">SigRl</a> const *sig_rl)</td></tr>
<tr class="memdesc:ga76e535722467af7c16809b5b521e0000"><td class="mdescLeft"> </td><td class="mdescRight">Computes the size in bytes required for an Intel(R) EPID signature. <a href="#ga76e535722467af7c16809b5b521e0000">More...</a><br /></td></tr>
<tr class="separator:ga76e535722467af7c16809b5b521e0000"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga74d1409a816cb52633564b793072da5f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#ga74d1409a816cb52633564b793072da5f">EpidSign</a> (<a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> const *ctx, void const *msg, size_t msg_len, void const *basename, size_t basename_len, <a class="el" href="struct_epid_signature.html">EpidSignature</a> *sig, size_t sig_len)</td></tr>
<tr class="memdesc:ga74d1409a816cb52633564b793072da5f"><td class="mdescLeft"> </td><td class="mdescRight">Writes an Intel(R) EPID signature. <a href="#ga74d1409a816cb52633564b793072da5f">More...</a><br /></td></tr>
<tr class="separator:ga74d1409a816cb52633564b793072da5f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8c6f097ba89542664375bd5e0f205220"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#ga8c6f097ba89542664375bd5e0f205220">EpidRegisterBasename</a> (<a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> *ctx, void const *basename, size_t basename_len)</td></tr>
<tr class="memdesc:ga8c6f097ba89542664375bd5e0f205220"><td class="mdescLeft"> </td><td class="mdescRight">Registers a basename with a member. <a href="#ga8c6f097ba89542664375bd5e0f205220">More...</a><br /></td></tr>
<tr class="separator:ga8c6f097ba89542664375bd5e0f205220"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga4f3a464f14581ef3e5a50719cb4709c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#ga4f3a464f14581ef3e5a50719cb4709c3">EpidClearRegisteredBasenames</a> (<a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> *ctx)</td></tr>
<tr class="memdesc:ga4f3a464f14581ef3e5a50719cb4709c3"><td class="mdescLeft"> </td><td class="mdescRight">Clears registered basenames. <a href="#ga4f3a464f14581ef3e5a50719cb4709c3">More...</a><br /></td></tr>
<tr class="separator:ga4f3a464f14581ef3e5a50719cb4709c3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gacb0547ec085a9ed324d323416bce4a78"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#gacb0547ec085a9ed324d323416bce4a78">EpidAddPreSigs</a> (<a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> *ctx, size_t number_presigs)</td></tr>
<tr class="memdesc:gacb0547ec085a9ed324d323416bce4a78"><td class="mdescLeft"> </td><td class="mdescRight">Extends the member's pool of pre-computed signatures. <a href="#gacb0547ec085a9ed324d323416bce4a78">More...</a><br /></td></tr>
<tr class="separator:gacb0547ec085a9ed324d323416bce4a78"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gad78ca056dfea2565bbacd5734d9dc075"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#gad78ca056dfea2565bbacd5734d9dc075">EpidGetNumPreSigs</a> (<a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> const *ctx)</td></tr>
<tr class="memdesc:gad78ca056dfea2565bbacd5734d9dc075"><td class="mdescLeft"> </td><td class="mdescRight">Gets the number of pre-computed signatures in the member's pool. <a href="#gad78ca056dfea2565bbacd5734d9dc075">More...</a><br /></td></tr>
<tr class="separator:gad78ca056dfea2565bbacd5734d9dc075"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaf8cd05388f017486f14da2ee48d067ef"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_member_module.html#gaf8cd05388f017486f14da2ee48d067ef">EpidDecompressPrivKey</a> (<a class="el" href="struct_group_pub_key.html">GroupPubKey</a> const *pub_key, <a class="el" href="struct_compressed_priv_key.html">CompressedPrivKey</a> const *compressed_privkey, <a class="el" href="struct_priv_key.html">PrivKey</a> *priv_key)</td></tr>
<tr class="memdesc:gaf8cd05388f017486f14da2ee48d067ef"><td class="mdescLeft"> </td><td class="mdescRight">Decompresses compressed member private key. <a href="#gaf8cd05388f017486f14da2ee48d067ef">More...</a><br /></td></tr>
<tr class="separator:gaf8cd05388f017486f14da2ee48d067ef"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>Member functionality. </p>
<p>Defines the APIs needed by Intel(R) EPID members. Each member context (<a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817" title="Internal context of member. ">MemberCtx</a>) represents membership in a single group.</p>
<p>To use this module, include the header <a class="el" href="member_2api_8h.html" title="Intel(R) EPID SDK member API. ">epid/member/api.h</a>. </p>
<h2 class="groupheader">Function Documentation</h2>
<a id="gacb0547ec085a9ed324d323416bce4a78"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacb0547ec085a9ed324d323416bce4a78">◆ </a></span>EpidAddPreSigs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidAddPreSigs </td>
<td>(</td>
<td class="paramtype"><a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> * </td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>number_presigs</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Extends the member's pool of pre-computed signatures. </p>
<p>Generate new pre-computed signatures and add them to the internal pool.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>The member context. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">number_presigs</td><td>The number of pre-computed signatures to add to the internal pool.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_member_module.html#ga35273b8e75d51e312f0d2fd3aa094efb" title="Initializes a new member context. ">EpidMemberInit</a> </dd></dl>
</div>
</div>
<a id="ga4f3a464f14581ef3e5a50719cb4709c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4f3a464f14581ef3e5a50719cb4709c3">◆ </a></span>EpidClearRegisteredBasenames()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidClearRegisteredBasenames </td>
<td>(</td>
<td class="paramtype"><a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> * </td>
<td class="paramname"><em>ctx</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Clears registered basenames. </p>
<p>Allows clearing registered basenames without recreating member.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">ctx</td><td>The member context.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_member_module.html#ga8c6f097ba89542664375bd5e0f205220" title="Registers a basename with a member. ">EpidRegisterBasename</a> </dd></dl>
</div>
</div>
<a id="gac10008d8c9ba7bc5e5be899ed03c61c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac10008d8c9ba7bc5e5be899ed03c61c3">◆ </a></span>EpidCreateJoinRequest()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidCreateJoinRequest </td>
<td>(</td>
<td class="paramtype"><a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> * </td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_group_pub_key.html">GroupPubKey</a> const * </td>
<td class="paramname"><em>pub_key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___epid_types.html#ga55eb2193045bde31af3f551565126042">IssuerNonce</a> const * </td>
<td class="paramname"><em>ni</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_join_request.html">JoinRequest</a> * </td>
<td class="paramname"><em>join_request</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a request to join a group. </p>
<p>The created request is part of the interaction with an issuer needed to join a group. This interaction with the issuer is outside the scope of this API.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">ctx</td><td>The member context. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">pub_key</td><td>The group certificate of group to join. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ni</td><td>The nonce chosen by issuer as part of join protocol. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">join_request</td><td>The join request.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a> </dd></dl>
</div>
</div>
<a id="gaf8cd05388f017486f14da2ee48d067ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf8cd05388f017486f14da2ee48d067ef">◆ </a></span>EpidDecompressPrivKey()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidDecompressPrivKey </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_group_pub_key.html">GroupPubKey</a> const * </td>
<td class="paramname"><em>pub_key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_compressed_priv_key.html">CompressedPrivKey</a> const * </td>
<td class="paramname"><em>compressed_privkey</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_priv_key.html">PrivKey</a> * </td>
<td class="paramname"><em>priv_key</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Decompresses compressed member private key. </p>
<p>Converts a compressed member private key into a member private key for use by other member APIs.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">pub_key</td><td>The public key of the group. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">compressed_privkey</td><td>The compressed member private key to be decompressed. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">priv_key</td><td>The member private key.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
<p><b>Example</b> </p>
<p><a class="el" href="_user_manual__generating_an_intel_epid_signature.html">Generating an Intel® EPID Signature</a> </p>
</div>
</div>
<a id="gad78ca056dfea2565bbacd5734d9dc075"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad78ca056dfea2565bbacd5734d9dc075">◆ </a></span>EpidGetNumPreSigs()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t EpidGetNumPreSigs </td>
<td>(</td>
<td class="paramtype"><a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> const * </td>
<td class="paramname"><em>ctx</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the number of pre-computed signatures in the member's pool. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>The member context.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of remaining pre-computed signatures. Returns 0 if ctx is NULL.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_member_module.html#ga35273b8e75d51e312f0d2fd3aa094efb" title="Initializes a new member context. ">EpidMemberInit</a> </dd></dl>
</div>
</div>
<a id="ga76e535722467af7c16809b5b521e0000"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga76e535722467af7c16809b5b521e0000">◆ </a></span>EpidGetSigSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t EpidGetSigSize </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_sig_rl.html">SigRl</a> const * </td>
<td class="paramname"><em>sig_rl</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes the size in bytes required for an Intel(R) EPID signature. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">sig_rl</td><td>The signature based revocation list that is used. NULL is treated as a zero length list.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Size in bytes of an Intel(R) EPID signature including proofs for each entry in the signature based revocation list.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="struct_sig_rl.html" title="signature based revocation list ">SigRl</a></dd></dl>
<p><b>Example</b> </p>
<p><a class="el" href="_user_manual__generating_an_intel_epid_signature.html">Generating an Intel® EPID Signature</a> </p>
</div>
</div>
<a id="gae7a7b01bc0a84c44c9d14e6c311c1ba7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae7a7b01bc0a84c44c9d14e6c311c1ba7">◆ </a></span>EpidMemberCreate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidMemberCreate </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_member_params.html">MemberParams</a> const * </td>
<td class="paramname"><em>params</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> ** </td>
<td class="paramname"><em>ctx</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Allocates and initializes a new member context. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">params</td><td>Implementation specific configuration parameters. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">ctx</td><td>Newly constructed member context.</td></tr>
</table>
</dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>buffers allocated using this function should not be initialized with <a class="el" href="group___epid_member_module.html#ga35273b8e75d51e312f0d2fd3aa094efb" title="Initializes a new member context. ">EpidMemberInit</a>.</dd></dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>This API has been superseded by <a class="el" href="group___epid_member_module.html#ga2b3c0cc1d8d4e50190ca94656fa36e24" title="Computes the size in bytes required for a member context. ">EpidMemberGetSize</a> and <a class="el" href="group___epid_member_module.html#ga35273b8e75d51e312f0d2fd3aa094efb" title="Initializes a new member context. ">EpidMemberInit</a>.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a> </dd></dl>
</div>
</div>
<a id="ga98b4d990a885339b83cd0513fedcc76d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga98b4d990a885339b83cd0513fedcc76d">◆ </a></span>EpidMemberDeinit()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void EpidMemberDeinit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> * </td>
<td class="paramname"><em>ctx</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>De-initializes an existing member context buffer. </p>
<p>Must be called to safely release a member context initialized using <a class="el" href="group___epid_member_module.html#ga35273b8e75d51e312f0d2fd3aa094efb" title="Initializes a new member context. ">EpidMemberInit</a>.</p>
<p>De-initializes the context.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">ctx</td><td>The member context. Can be NULL.</td></tr>
</table>
</dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>This function should not be used on buffers allocated with <a class="el" href="group___epid_member_module.html#gae7a7b01bc0a84c44c9d14e6c311c1ba7" title="Allocates and initializes a new member context. ">EpidMemberCreate</a>. Those buffers should be released using <a class="el" href="group___epid_member_module.html#ga3824589c683c5e0e59d483462fce65d6" title="Deletes an existing member context. ">EpidMemberDelete</a></dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_member_module.html#ga35273b8e75d51e312f0d2fd3aa094efb" title="Initializes a new member context. ">EpidMemberInit</a> </dd></dl>
</div>
</div>
<a id="ga3824589c683c5e0e59d483462fce65d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3824589c683c5e0e59d483462fce65d6">◆ </a></span>EpidMemberDelete()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void EpidMemberDelete </td>
<td>(</td>
<td class="paramtype"><a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> ** </td>
<td class="paramname"><em>ctx</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deletes an existing member context. </p>
<p>Must be called to safely release a member context created using <a class="el" href="group___epid_member_module.html#gae7a7b01bc0a84c44c9d14e6c311c1ba7" title="Allocates and initializes a new member context. ">EpidMemberCreate</a>.</p>
<p>De-initializes the context, frees memory used by the context, and sets the context pointer to NULL.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">ctx</td><td>The member context. Can be NULL.</td></tr>
</table>
</dd>
</dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000002">Deprecated:</a></b></dt><dd>This API has been superseded by <a class="el" href="group___epid_member_module.html#ga98b4d990a885339b83cd0513fedcc76d" title="De-initializes an existing member context buffer. ">EpidMemberDeinit</a>.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_member_module.html#gae7a7b01bc0a84c44c9d14e6c311c1ba7" title="Allocates and initializes a new member context. ">EpidMemberCreate</a></dd></dl>
<p><b>Example</b> </p>
<p><a class="el" href="_user_manual__generating_an_intel_epid_signature.html">Generating an Intel® EPID Signature</a> </p>
</div>
</div>
<a id="ga2b3c0cc1d8d4e50190ca94656fa36e24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2b3c0cc1d8d4e50190ca94656fa36e24">◆ </a></span>EpidMemberGetSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidMemberGetSize </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_member_params.html">MemberParams</a> const * </td>
<td class="paramname"><em>params</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t * </td>
<td class="paramname"><em>context_size</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes the size in bytes required for a member context. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">params</td><td>Implementation specific configuration parameters. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">context_size</td><td>Number of bytes required for a <a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817" title="Internal context of member. ">MemberCtx</a> buffer</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_member_module.html#ga35273b8e75d51e312f0d2fd3aa094efb" title="Initializes a new member context. ">EpidMemberInit</a> </dd></dl>
</div>
</div>
<a id="ga35273b8e75d51e312f0d2fd3aa094efb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga35273b8e75d51e312f0d2fd3aa094efb">◆ </a></span>EpidMemberInit()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidMemberInit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="struct_member_params.html">MemberParams</a> const * </td>
<td class="paramname"><em>params</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> * </td>
<td class="paramname"><em>ctx</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initializes a new member context. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">params</td><td>Implementation specific configuration parameters. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">ctx</td><td>An existing buffer that will be used as a <a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817" title="Internal context of member. ">MemberCtx</a>.</td></tr>
</table>
</dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>ctx must be a buffer of at least the size reported by <a class="el" href="group___epid_member_module.html#ga2b3c0cc1d8d4e50190ca94656fa36e24" title="Computes the size in bytes required for a member context. ">EpidMemberGetSize</a> for the same parameters.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a> </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_member_module.html#ga2b3c0cc1d8d4e50190ca94656fa36e24" title="Computes the size in bytes required for a member context. ">EpidMemberGetSize</a> </dd></dl>
</div>
</div>
<a id="ga9998eb454838ff5d232ff22ecbab31bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9998eb454838ff5d232ff22ecbab31bf">◆ </a></span>EpidMemberSetHashAlg()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidMemberSetHashAlg </td>
<td>(</td>
<td class="paramtype"><a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> * </td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___epid_types.html#ga5e450438f6f9a5eacd0cf5ce354ec890">HashAlg</a> </td>
<td class="paramname"><em>hash_alg</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the hash algorithm to be used by a member. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>The member context. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">hash_alg</td><td>The hash algorithm to use.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
<dl class="section note"><dt>Note</dt><dd>If the result is not <a class="el" href="group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a8a6861e14322ca9193498ffc955537f9" title="no error ">kEpidNoErr</a>, the hash algorithm used by the member is undefined.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_member_module.html#ga35273b8e75d51e312f0d2fd3aa094efb" title="Initializes a new member context. ">EpidMemberInit</a> </dd>
<dd>
<a class="el" href="group___epid_types.html#ga5e450438f6f9a5eacd0cf5ce354ec890" title="Recognized hash algorithms. ">HashAlg</a></dd></dl>
<p><b>Example</b> </p>
<p><a class="el" href="_user_manual__generating_an_intel_epid_signature.html">Generating an Intel® EPID Signature</a> </p>
</div>
</div>
<a id="gaaae6f21f58c22fce58076f10d68159f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaaae6f21f58c22fce58076f10d68159f4">◆ </a></span>EpidMemberSetSigRl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidMemberSetSigRl </td>
<td>(</td>
<td class="paramtype"><a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> * </td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_sig_rl.html">SigRl</a> const * </td>
<td class="paramname"><em>sig_rl</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>sig_rl_size</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the signature based revocation list to be used by a member. </p>
<p>The caller is responsible for ensuring the revocation list is authorized, e.g. signed by the issuer. The caller is also responsible checking the version of the revocation list. The call fails if trying to set an older version of the revocation list than was last set.</p>
<dl class="section attention"><dt>Attention</dt><dd>The memory pointed to by sig_rl is accessed directly by the member until a new list is set or the member is destroyed. Do not modify the contents of this memory. The behavior of subsequent operations that rely on the revocation list is undefined if the memory is modified.</dd>
<dd>
It is the responsibility of the caller to free the memory pointed to by sig_rl after the member is no longer using it.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>The member context. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">sig_rl</td><td>The signature based revocation list. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">sig_rl_size</td><td>The size of the signature based revocation list in bytes.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
<dl class="section note"><dt>Note</dt><dd>If the result is not <a class="el" href="group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a8a6861e14322ca9193498ffc955537f9" title="no error ">kEpidNoErr</a> the signature based revocation list pointed to by the member is not changed.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_member_module.html#ga35273b8e75d51e312f0d2fd3aa094efb" title="Initializes a new member context. ">EpidMemberInit</a></dd></dl>
<p><b>Example</b> </p>
<p><a class="el" href="_user_manual__generating_an_intel_epid_signature.html">Generating an Intel® EPID Signature</a> </p>
</div>
</div>
<a id="gaa2c85b1f0ea17a11ac5d297b21aa30f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa2c85b1f0ea17a11ac5d297b21aa30f6">◆ </a></span>EpidMemberStartup()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidMemberStartup </td>
<td>(</td>
<td class="paramtype"><a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> * </td>
<td class="paramname"><em>ctx</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Change member from setup state to normal operation. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">ctx</td><td>The member context.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a> </dd></dl>
</div>
</div>
<a id="ga76cddb8e20afc43de2c30d5e4addb2ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga76cddb8e20afc43de2c30d5e4addb2ea">◆ </a></span>EpidProvisionCompressed()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidProvisionCompressed </td>
<td>(</td>
<td class="paramtype"><a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> * </td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_group_pub_key.html">GroupPubKey</a> const * </td>
<td class="paramname"><em>pub_key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_compressed_priv_key.html">CompressedPrivKey</a> const * </td>
<td class="paramname"><em>compressed_privkey</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_member_precomp.html">MemberPrecomp</a> const * </td>
<td class="paramname"><em>precomp_str</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Provisions a member context from a compressed private key. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">ctx</td><td>The member context. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">pub_key</td><td>The group certificate of group to provision. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">compressed_privkey</td><td>private key. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">precomp_str</td><td>Precomputed state (implementation specific optional)</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a> </dd></dl>
</div>
</div>
<a id="ga788ebc9d1ba6153c637b762484ca1140"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga788ebc9d1ba6153c637b762484ca1140">◆ </a></span>EpidProvisionCredential()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidProvisionCredential </td>
<td>(</td>
<td class="paramtype"><a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> * </td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_group_pub_key.html">GroupPubKey</a> const * </td>
<td class="paramname"><em>pub_key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_membership_credential.html">MembershipCredential</a> const * </td>
<td class="paramname"><em>credential</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_member_precomp.html">MemberPrecomp</a> const * </td>
<td class="paramname"><em>precomp_str</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Provisions a member context from a membership credential. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">ctx</td><td>The member context. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">pub_key</td><td>The group certificate of group to provision. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">credential</td><td>membership credential. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">precomp_str</td><td>Precomputed state (implementation specific optional)</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a> </dd></dl>
</div>
</div>
<a id="ga07094399c1e040b95ae3e58a74e7c302"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga07094399c1e040b95ae3e58a74e7c302">◆ </a></span>EpidProvisionKey()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidProvisionKey </td>
<td>(</td>
<td class="paramtype"><a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> * </td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_group_pub_key.html">GroupPubKey</a> const * </td>
<td class="paramname"><em>pub_key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_priv_key.html">PrivKey</a> const * </td>
<td class="paramname"><em>priv_key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_member_precomp.html">MemberPrecomp</a> const * </td>
<td class="paramname"><em>precomp_str</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Provisions a member context from a private key. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">ctx</td><td>The member context. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">pub_key</td><td>The group certificate of group to provision. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">priv_key</td><td>private key. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">precomp_str</td><td>Precomputed state (implementation specific optional)</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a> </dd></dl>
</div>
</div>
<a id="ga8c6f097ba89542664375bd5e0f205220"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8c6f097ba89542664375bd5e0f205220">◆ </a></span>EpidRegisterBasename()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidRegisterBasename </td>
<td>(</td>
<td class="paramtype"><a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> * </td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void const * </td>
<td class="paramname"><em>basename</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>basename_len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Registers a basename with a member. </p>
<p>To prevent loss of privacy, the member keeps a list of basenames (corresponding to authorized verifiers). The member signs a message with a basename only if the basename is in the member's basename list.</p>
<dl class="section warning"><dt>Warning</dt><dd>The use of a name-based signature creates a platform unique pseudonymous identifier. Because it reduces the member's privacy, the user should be notified when it is used and should have control over its use.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>The member context. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">basename</td><td>The basename. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">basename_len</td><td>Length of the basename.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a3706f895a660260033b5b91890516c0f" title="argument would add duplicate entry ">kEpidDuplicateErr</a></td><td>The basename was already registered.</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>If the result is not <a class="el" href="group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a8a6861e14322ca9193498ffc955537f9" title="no error ">kEpidNoErr</a> or <a class="el" href="group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a3706f895a660260033b5b91890516c0f" title="argument would add duplicate entry ">kEpidDuplicateErr</a> it is undefined if the basename is registered.</dd></dl>
<p><b>Example</b> </p>
<p><a class="el" href="_user_manual__generating_an_intel_epid_signature.html">Generating an Intel® EPID Signature</a> </p>
</div>
</div>
<a id="ga74d1409a816cb52633564b793072da5f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga74d1409a816cb52633564b793072da5f">◆ </a></span>EpidSign()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidSign </td>
<td>(</td>
<td class="paramtype"><a class="el" href="member_2api_8h.html#adfb10d5dfdadb0694792c7b06718e817">MemberCtx</a> const * </td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void const * </td>
<td class="paramname"><em>msg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>msg_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void const * </td>
<td class="paramname"><em>basename</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>basename_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="struct_epid_signature.html">EpidSignature</a> * </td>
<td class="paramname"><em>sig</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>sig_len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Writes an Intel(R) EPID signature. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>The member context. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">msg</td><td>The message to sign. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">msg_len</td><td>The length in bytes of message. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">basename</td><td>Optional basename. If basename is NULL a random basename is used. Signatures generated using random basenames are anonymous. Signatures generated using the same basename are linkable by the verifier. If a basename is provided, it must already be registered, or <a class="el" href="group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360ad134d6cc95a9dcb1b1a9f9c358047cbf" title="incorrect arg to function ">kEpidBadArgErr</a> is returned. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">basename_len</td><td>The size of basename in bytes. Must be 0 if basename is NULL. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">sig</td><td>The generated signature </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">sig_len</td><td>The size of signature in bytes. Must be equal to value returned by <a class="el" href="group___epid_member_module.html#ga76e535722467af7c16809b5b521e0000" title="Computes the size in bytes required for an Intel(R) EPID signature. ">EpidGetSigSize()</a>.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360" title="Return status for SDK functions. ">EpidStatus</a></dd></dl>
<dl class="section note"><dt>Note</dt><dd>If the result is not <a class="el" href="group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a8a6861e14322ca9193498ffc955537f9" title="no error ">kEpidNoErr</a> the content of sig is undefined.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_member_module.html#ga35273b8e75d51e312f0d2fd3aa094efb" title="Initializes a new member context. ">EpidMemberInit</a> </dd>
<dd>
<a class="el" href="group___epid_member_module.html#ga9998eb454838ff5d232ff22ecbab31bf" title="Sets the hash algorithm to be used by a member. ">EpidMemberSetHashAlg</a> </dd>
<dd>
<a class="el" href="group___epid_member_module.html#gaaae6f21f58c22fce58076f10d68159f4" title="Sets the signature based revocation list to be used by a member. ">EpidMemberSetSigRl</a> </dd>
<dd>
<a class="el" href="group___epid_member_module.html#ga76e535722467af7c16809b5b521e0000" title="Computes the size in bytes required for an Intel(R) EPID signature. ">EpidGetSigSize</a></dd></dl>
<p><b>Example</b> </p>
<p><a class="el" href="_user_manual__generating_an_intel_epid_signature.html">Generating an Intel® EPID Signature</a> </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.10-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">
© 2016-2017 Intel Corporation
</li>
</ul>
</div>
</body>
</html>