group___epid_verifier_module.html 57 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834
  1. <!-- HTML header for doxygen 1.8.10-->
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  6. <meta http-equiv="X-UA-Compatible" content="IE=9"/>
  7. <meta name="generator" content="Doxygen 1.8.11"/>
  8. <title>Intel&reg; Enhanced Privacy ID SDK: verifier</title>
  9. <link href="tabs.css" rel="stylesheet" type="text/css"/>
  10. <script type="text/javascript" src="jquery.js"></script>
  11. <script type="text/javascript" src="dynsections.js"></script>
  12. <link href="navtree.css" rel="stylesheet" type="text/css"/>
  13. <script type="text/javascript" src="resize.js"></script>
  14. <script type="text/javascript" src="navtreedata.js"></script>
  15. <script type="text/javascript" src="navtree.js"></script>
  16. <script type="text/javascript">
  17. $(document).ready(initResizable);
  18. $(window).load(resizeHeight);
  19. </script>
  20. <link href="doxygen.css" rel="stylesheet" type="text/css" />
  21. <link href="epidstyle.css" rel="stylesheet" type="text/css"/>
  22. </head>
  23. <body>
  24. <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
  25. <div id="titlearea">
  26. <table cellspacing="0" cellpadding="0">
  27. <tbody>
  28. <tr style="height: 56px;">
  29. <td id="projectalign" style="padding-left: 0.5em;">
  30. <div id="projectname"><a
  31. onclick="storeLink('index.html')"
  32. id="projectlink"
  33. class="index.html"
  34. href="index.html">Intel&reg; Enhanced Privacy ID SDK</a>
  35. &#160;<span id="projectnumber">2.0.0</span>
  36. </div>
  37. </td>
  38. </tr>
  39. </tbody>
  40. </table>
  41. </div>
  42. <!-- end header part -->
  43. <!-- Generated by Doxygen 1.8.11 -->
  44. </div><!-- top -->
  45. <div id="side-nav" class="ui-resizable side-nav-resizable">
  46. <div id="nav-tree">
  47. <div id="nav-tree-contents">
  48. <div id="nav-sync" class="sync"></div>
  49. </div>
  50. </div>
  51. <div id="splitbar" style="-moz-user-select:none;"
  52. class="ui-resizable-handle">
  53. </div>
  54. </div>
  55. <script type="text/javascript">
  56. $(document).ready(function(){initNavTree('group___epid_verifier_module.html','');});
  57. </script>
  58. <div id="doc-content">
  59. <div class="header">
  60. <div class="summary">
  61. <a href="#nested-classes">Data Structures</a> &#124;
  62. <a href="#func-members">Functions</a> </div>
  63. <div class="headertitle">
  64. <div class="title">verifier<div class="ingroups"><a class="el" href="group___epid_module.html">epid</a></div></div> </div>
  65. </div><!--header-->
  66. <div class="contents">
  67. <p>Verifier functionality.
  68. <a href="#details">More...</a></p>
  69. <table class="memberdecls">
  70. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
  71. Data Structures</h2></td></tr>
  72. <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_verifier_precomp.html">VerifierPrecomp</a></td></tr>
  73. <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pre-computed member settings. <a href="struct_verifier_precomp.html#details">More...</a><br /></td></tr>
  74. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  75. </table><table class="memberdecls">
  76. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
  77. Functions</h2></td></tr>
  78. <tr class="memitem:ga1d116daaee5466a1485d26ebc4e3ab70"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_verifier_module.html#ga1d116daaee5466a1485d26ebc4e3ab70">EpidVerifierCreate</a> (<a class="el" href="struct_group_pub_key.html">GroupPubKey</a> const *pub_key, <a class="el" href="struct_verifier_precomp.html">VerifierPrecomp</a> const *precomp, <a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> **ctx)</td></tr>
  79. <tr class="memdesc:ga1d116daaee5466a1485d26ebc4e3ab70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new verifier context. <a href="#ga1d116daaee5466a1485d26ebc4e3ab70">More...</a><br /></td></tr>
  80. <tr class="separator:ga1d116daaee5466a1485d26ebc4e3ab70"><td class="memSeparator" colspan="2">&#160;</td></tr>
  81. <tr class="memitem:ga6707e691f4b3916f9c684d5bbd463d12"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_verifier_module.html#ga6707e691f4b3916f9c684d5bbd463d12">EpidVerifierDelete</a> (<a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> **ctx)</td></tr>
  82. <tr class="memdesc:ga6707e691f4b3916f9c684d5bbd463d12"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deletes an existing verifier context. <a href="#ga6707e691f4b3916f9c684d5bbd463d12">More...</a><br /></td></tr>
  83. <tr class="separator:ga6707e691f4b3916f9c684d5bbd463d12"><td class="memSeparator" colspan="2">&#160;</td></tr>
  84. <tr class="memitem:ga92df4d00ea4ee59d7bfd35b23da03392"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_verifier_module.html#ga92df4d00ea4ee59d7bfd35b23da03392">EpidVerifierWritePrecomp</a> (<a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> const *ctx, <a class="el" href="struct_verifier_precomp.html">VerifierPrecomp</a> *precomp)</td></tr>
  85. <tr class="memdesc:ga92df4d00ea4ee59d7bfd35b23da03392"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serializes the pre-computed verifier settings. <a href="#ga92df4d00ea4ee59d7bfd35b23da03392">More...</a><br /></td></tr>
  86. <tr class="separator:ga92df4d00ea4ee59d7bfd35b23da03392"><td class="memSeparator" colspan="2">&#160;</td></tr>
  87. <tr class="memitem:gafab08180a43b58ce2e1d56c4b070bb0e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_verifier_module.html#gafab08180a43b58ce2e1d56c4b070bb0e">EpidVerifierSetPrivRl</a> (<a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> *ctx, <a class="el" href="struct_priv_rl.html">PrivRl</a> const *priv_rl, size_t priv_rl_size)</td></tr>
  88. <tr class="memdesc:gafab08180a43b58ce2e1d56c4b070bb0e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the private key based revocation list. <a href="#gafab08180a43b58ce2e1d56c4b070bb0e">More...</a><br /></td></tr>
  89. <tr class="separator:gafab08180a43b58ce2e1d56c4b070bb0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
  90. <tr class="memitem:ga4c7c9820409ee06f30bb8dc75fdd5dcf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_verifier_module.html#ga4c7c9820409ee06f30bb8dc75fdd5dcf">EpidVerifierSetSigRl</a> (<a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> *ctx, <a class="el" href="struct_sig_rl.html">SigRl</a> const *sig_rl, size_t sig_rl_size)</td></tr>
  91. <tr class="memdesc:ga4c7c9820409ee06f30bb8dc75fdd5dcf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the signature based revocation list. <a href="#ga4c7c9820409ee06f30bb8dc75fdd5dcf">More...</a><br /></td></tr>
  92. <tr class="separator:ga4c7c9820409ee06f30bb8dc75fdd5dcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
  93. <tr class="memitem:ga1d41d6ef4dabbc30ec28452edd6baffb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_verifier_module.html#ga1d41d6ef4dabbc30ec28452edd6baffb">EpidVerifierSetGroupRl</a> (<a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> *ctx, <a class="el" href="struct_group_rl.html">GroupRl</a> const *grp_rl, size_t grp_rl_size)</td></tr>
  94. <tr class="memdesc:ga1d41d6ef4dabbc30ec28452edd6baffb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the group based revocation list. <a href="#ga1d41d6ef4dabbc30ec28452edd6baffb">More...</a><br /></td></tr>
  95. <tr class="separator:ga1d41d6ef4dabbc30ec28452edd6baffb"><td class="memSeparator" colspan="2">&#160;</td></tr>
  96. <tr class="memitem:ga0909703a0a4dfe080374d0d99077465a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_verifier_module.html#ga0909703a0a4dfe080374d0d99077465a">EpidVerifierSetVerifierRl</a> (<a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> *ctx, <a class="el" href="struct_verifier_rl.html">VerifierRl</a> const *ver_rl, size_t ver_rl_size)</td></tr>
  97. <tr class="memdesc:ga0909703a0a4dfe080374d0d99077465a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the verifier revocation list. <a href="#ga0909703a0a4dfe080374d0d99077465a">More...</a><br /></td></tr>
  98. <tr class="separator:ga0909703a0a4dfe080374d0d99077465a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  99. <tr class="memitem:ga97b58b2382f24756b66a357f1e825c92"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_verifier_module.html#ga97b58b2382f24756b66a357f1e825c92">EpidVerifierSetHashAlg</a> (<a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> *ctx, <a class="el" href="group___epid_types.html#ga5e450438f6f9a5eacd0cf5ce354ec890">HashAlg</a> hash_alg)</td></tr>
  100. <tr class="memdesc:ga97b58b2382f24756b66a357f1e825c92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the hash algorithm to be used by a verifier. <a href="#ga97b58b2382f24756b66a357f1e825c92">More...</a><br /></td></tr>
  101. <tr class="separator:ga97b58b2382f24756b66a357f1e825c92"><td class="memSeparator" colspan="2">&#160;</td></tr>
  102. <tr class="memitem:ga39b240a17f310894e9f5946c9a731798"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_verifier_module.html#ga39b240a17f310894e9f5946c9a731798">EpidVerify</a> (<a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> const *ctx, <a class="el" href="struct_epid_signature.html">EpidSignature</a> const *sig, size_t sig_len, void const *msg, size_t msg_len, void const *basename, size_t basename_len)</td></tr>
  103. <tr class="memdesc:ga39b240a17f310894e9f5946c9a731798"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verifies a signature and checks revocation status. <a href="#ga39b240a17f310894e9f5946c9a731798">More...</a><br /></td></tr>
  104. <tr class="separator:ga39b240a17f310894e9f5946c9a731798"><td class="memSeparator" colspan="2">&#160;</td></tr>
  105. <tr class="memitem:gae44bd8acbc1e7205aeedff0c7e2632a8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdtypes_8h.html#ad5c9d4ba3dc37783a528b0925dc981a0">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_verifier_module.html#gae44bd8acbc1e7205aeedff0c7e2632a8">EpidAreSigsLinked</a> (<a class="el" href="struct_basic_signature.html">BasicSignature</a> const *sig1, <a class="el" href="struct_basic_signature.html">BasicSignature</a> const *sig2)</td></tr>
  106. <tr class="memdesc:gae44bd8acbc1e7205aeedff0c7e2632a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines if two signatures are linked. <a href="#gae44bd8acbc1e7205aeedff0c7e2632a8">More...</a><br /></td></tr>
  107. <tr class="separator:gae44bd8acbc1e7205aeedff0c7e2632a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
  108. <tr class="memitem:ga974b92a62e8b65ea75cf802e8cc6bb6a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_verifier_module.html#ga974b92a62e8b65ea75cf802e8cc6bb6a">EpidVerifyBasicSig</a> (<a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> const *ctx, <a class="el" href="struct_basic_signature.html">BasicSignature</a> const *sig, void const *msg, size_t msg_len, void const *basename, size_t basename_len)</td></tr>
  109. <tr class="memdesc:ga974b92a62e8b65ea75cf802e8cc6bb6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verifies a member signature without revocation checks. <a href="#ga974b92a62e8b65ea75cf802e8cc6bb6a">More...</a><br /></td></tr>
  110. <tr class="separator:ga974b92a62e8b65ea75cf802e8cc6bb6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  111. <tr class="memitem:gac6e2fab59e3af8a33a74a5b201642700"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_verifier_module.html#gac6e2fab59e3af8a33a74a5b201642700">EpidNrVerify</a> (<a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> const *ctx, <a class="el" href="struct_basic_signature.html">BasicSignature</a> const *sig, void const *msg, size_t msg_len, <a class="el" href="struct_sig_rl_entry.html">SigRlEntry</a> const *sigrl_entry, <a class="el" href="struct_nr_proof.html">NrProof</a> const *proof)</td></tr>
  112. <tr class="memdesc:gac6e2fab59e3af8a33a74a5b201642700"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verifies the non-revoked proof for a single signature based revocation list entry. <a href="#gac6e2fab59e3af8a33a74a5b201642700">More...</a><br /></td></tr>
  113. <tr class="separator:gac6e2fab59e3af8a33a74a5b201642700"><td class="memSeparator" colspan="2">&#160;</td></tr>
  114. <tr class="memitem:gaeb05e6faea6f09c0665b13adc6e7ddea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___epid_verifier_module.html#gaeb05e6faea6f09c0665b13adc6e7ddea">EpidCheckPrivRlEntry</a> (<a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> const *ctx, <a class="el" href="struct_basic_signature.html">BasicSignature</a> const *sig, <a class="el" href="struct_fp_elem_str.html">FpElemStr</a> const *f)</td></tr>
  115. <tr class="memdesc:gaeb05e6faea6f09c0665b13adc6e7ddea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verifies a signature has not been revoked in the private key based revocation list. <a href="#gaeb05e6faea6f09c0665b13adc6e7ddea">More...</a><br /></td></tr>
  116. <tr class="separator:gaeb05e6faea6f09c0665b13adc6e7ddea"><td class="memSeparator" colspan="2">&#160;</td></tr>
  117. </table>
  118. <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
  119. <p>Verifier functionality. </p>
  120. <p>Defines the APIs needed by Intel(R) EPID verifiers. Each verifier context (<a class="el" href="struct_verifier_ctx.html" title="Verifier context definition. ">VerifierCtx</a>) represents a verifier for a single group. </p>
  121. <h2 class="groupheader">Function Documentation</h2>
  122. <a class="anchor" id="gae44bd8acbc1e7205aeedff0c7e2632a8"></a>
  123. <div class="memitem">
  124. <div class="memproto">
  125. <table class="memname">
  126. <tr>
  127. <td class="memname"><a class="el" href="stdtypes_8h.html#ad5c9d4ba3dc37783a528b0925dc981a0">bool</a> EpidAreSigsLinked </td>
  128. <td>(</td>
  129. <td class="paramtype"><a class="el" href="struct_basic_signature.html">BasicSignature</a> const *&#160;</td>
  130. <td class="paramname"><em>sig1</em>, </td>
  131. </tr>
  132. <tr>
  133. <td class="paramkey"></td>
  134. <td></td>
  135. <td class="paramtype"><a class="el" href="struct_basic_signature.html">BasicSignature</a> const *&#160;</td>
  136. <td class="paramname"><em>sig2</em>&#160;</td>
  137. </tr>
  138. <tr>
  139. <td></td>
  140. <td>)</td>
  141. <td></td><td></td>
  142. </tr>
  143. </table>
  144. </div><div class="memdoc">
  145. <p>Determines if two signatures are linked. </p>
  146. <p>The Intel(R) EPID scheme allows signatures to be linked. If basename option is specified when signing, signatures with the same basename are linkable. This linking capability allows the verifier, or anyone, to know whether two Intel(R) EPID signatures are generated by the same member.</p>
  147. <dl class="params"><dt>Parameters</dt><dd>
  148. <table class="params">
  149. <tr><td class="paramdir">[in]</td><td class="paramname">sig1</td><td>A basic signature. </td></tr>
  150. <tr><td class="paramdir">[in]</td><td class="paramname">sig2</td><td>A basic signature.</td></tr>
  151. </table>
  152. </dd>
  153. </dl>
  154. <dl class="section return"><dt>Returns</dt><dd>bool</dd></dl>
  155. <dl class="retval"><dt>Return values</dt><dd>
  156. <table class="retval">
  157. <tr><td class="paramname">true</td><td>if the signatures were generated by the same member </td></tr>
  158. <tr><td class="paramname">false</td><td>if it couldn't be determined if the signatures were generated by the same member</td></tr>
  159. </table>
  160. </dd>
  161. </dl>
  162. <dl class="section note"><dt>Note</dt><dd>The input signatures should be verified using <a class="el" href="group___epid_verifier_module.html#ga974b92a62e8b65ea75cf802e8cc6bb6a" title="Verifies a member signature without revocation checks. ">EpidVerifyBasicSig()</a> before invocation. Behavior is undefined if either of the signatures cannot be verified.</dd></dl>
  163. <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_verifier_module.html#ga974b92a62e8b65ea75cf802e8cc6bb6a" title="Verifies a member signature without revocation checks. ">EpidVerifyBasicSig</a> </dd>
  164. <dd>
  165. <a class="el" href="group___epid_member_module.html#gae04a250d5981fcf9bd6f9f57e0468faa" title="Creates a basic signature for use in constrained environment. ">EpidSignBasic</a> </dd>
  166. <dd>
  167. <a class="el" href="group___epid_member_module.html#ga759155a719254f734157722716dac640" title="Writes a Intel(R) EPID signature. ">EpidSign</a> </dd></dl>
  168. </div>
  169. </div>
  170. <a class="anchor" id="gaeb05e6faea6f09c0665b13adc6e7ddea"></a>
  171. <div class="memitem">
  172. <div class="memproto">
  173. <table class="memname">
  174. <tr>
  175. <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidCheckPrivRlEntry </td>
  176. <td>(</td>
  177. <td class="paramtype"><a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> const *&#160;</td>
  178. <td class="paramname"><em>ctx</em>, </td>
  179. </tr>
  180. <tr>
  181. <td class="paramkey"></td>
  182. <td></td>
  183. <td class="paramtype"><a class="el" href="struct_basic_signature.html">BasicSignature</a> const *&#160;</td>
  184. <td class="paramname"><em>sig</em>, </td>
  185. </tr>
  186. <tr>
  187. <td class="paramkey"></td>
  188. <td></td>
  189. <td class="paramtype"><a class="el" href="struct_fp_elem_str.html">FpElemStr</a> const *&#160;</td>
  190. <td class="paramname"><em>f</em>&#160;</td>
  191. </tr>
  192. <tr>
  193. <td></td>
  194. <td>)</td>
  195. <td></td><td></td>
  196. </tr>
  197. </table>
  198. </div><div class="memdoc">
  199. <p>Verifies a signature has not been revoked in the private key based revocation list. </p>
  200. <p>Used in constrained environments where, due to limited memory, it may not be possible to process through a large and potentially unbounded revocation list.</p>
  201. <dl class="params"><dt>Parameters</dt><dd>
  202. <table class="params">
  203. <tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>The verifier context. </td></tr>
  204. <tr><td class="paramdir">[in]</td><td class="paramname">sig</td><td>The basic signature. </td></tr>
  205. <tr><td class="paramdir">[in]</td><td class="paramname">f</td><td>The private key based revocation list entry.</td></tr>
  206. </table>
  207. </dd>
  208. </dl>
  209. <dl class="section note"><dt>Note</dt><dd>Sig should be verified using <a class="el" href="group___epid_verifier_module.html#ga974b92a62e8b65ea75cf802e8cc6bb6a" title="Verifies a member signature without revocation checks. ">EpidVerifyBasicSig()</a> before invocation. Behavior is undefined if sig cannot be verified.</dd>
  210. <dd>
  211. This function should be used in conjunction with <a class="el" href="group___epid_verifier_module.html#gac6e2fab59e3af8a33a74a5b201642700" title="Verifies the non-revoked proof for a single signature based revocation list entry. ">EpidNrVerify()</a> and <a class="el" href="group___epid_verifier_module.html#ga974b92a62e8b65ea75cf802e8cc6bb6a" title="Verifies a member signature without revocation checks. ">EpidVerifyBasicSig()</a>.</dd>
  212. <dd>
  213. If the result is not <a class="el" href="group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a8a6861e14322ca9193498ffc955537f9" title="no error ">kEpidNoErr</a> the verify should be considered to have failed.</dd></dl>
  214. <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>
  215. <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_verifier_module.html#ga1d116daaee5466a1485d26ebc4e3ab70" title="Creates a new verifier context. ">EpidVerifierCreate</a> </dd>
  216. <dd>
  217. <a class="el" href="group___epid_verifier_module.html#gac6e2fab59e3af8a33a74a5b201642700" title="Verifies the non-revoked proof for a single signature based revocation list entry. ">EpidNrVerify</a> </dd>
  218. <dd>
  219. <a class="el" href="group___epid_verifier_module.html#ga974b92a62e8b65ea75cf802e8cc6bb6a" title="Verifies a member signature without revocation checks. ">EpidVerifyBasicSig</a> </dd></dl>
  220. </div>
  221. </div>
  222. <a class="anchor" id="gac6e2fab59e3af8a33a74a5b201642700"></a>
  223. <div class="memitem">
  224. <div class="memproto">
  225. <table class="memname">
  226. <tr>
  227. <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidNrVerify </td>
  228. <td>(</td>
  229. <td class="paramtype"><a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> const *&#160;</td>
  230. <td class="paramname"><em>ctx</em>, </td>
  231. </tr>
  232. <tr>
  233. <td class="paramkey"></td>
  234. <td></td>
  235. <td class="paramtype"><a class="el" href="struct_basic_signature.html">BasicSignature</a> const *&#160;</td>
  236. <td class="paramname"><em>sig</em>, </td>
  237. </tr>
  238. <tr>
  239. <td class="paramkey"></td>
  240. <td></td>
  241. <td class="paramtype">void const *&#160;</td>
  242. <td class="paramname"><em>msg</em>, </td>
  243. </tr>
  244. <tr>
  245. <td class="paramkey"></td>
  246. <td></td>
  247. <td class="paramtype">size_t&#160;</td>
  248. <td class="paramname"><em>msg_len</em>, </td>
  249. </tr>
  250. <tr>
  251. <td class="paramkey"></td>
  252. <td></td>
  253. <td class="paramtype"><a class="el" href="struct_sig_rl_entry.html">SigRlEntry</a> const *&#160;</td>
  254. <td class="paramname"><em>sigrl_entry</em>, </td>
  255. </tr>
  256. <tr>
  257. <td class="paramkey"></td>
  258. <td></td>
  259. <td class="paramtype"><a class="el" href="struct_nr_proof.html">NrProof</a> const *&#160;</td>
  260. <td class="paramname"><em>proof</em>&#160;</td>
  261. </tr>
  262. <tr>
  263. <td></td>
  264. <td>)</td>
  265. <td></td><td></td>
  266. </tr>
  267. </table>
  268. </div><div class="memdoc">
  269. <p>Verifies the non-revoked proof for a single signature based revocation list entry. </p>
  270. <p>Used in constrained environments where, due to limited memory, it may not be possible to process through a large and potentially unbounded revocation list.</p>
  271. <dl class="params"><dt>Parameters</dt><dd>
  272. <table class="params">
  273. <tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>The verifier context. </td></tr>
  274. <tr><td class="paramdir">[in]</td><td class="paramname">sig</td><td>The basic signature. </td></tr>
  275. <tr><td class="paramdir">[in]</td><td class="paramname">msg</td><td>The message that was signed. </td></tr>
  276. <tr><td class="paramdir">[in]</td><td class="paramname">msg_len</td><td>The size of msg in bytes. </td></tr>
  277. <tr><td class="paramdir">[in]</td><td class="paramname">sigrl_entry</td><td>The signature based revocation list entry. </td></tr>
  278. <tr><td class="paramdir">[in]</td><td class="paramname">proof</td><td>The non-revoked proof.</td></tr>
  279. </table>
  280. </dd>
  281. </dl>
  282. <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>
  283. <dl class="section note"><dt>Note</dt><dd>Sig should be verified using <a class="el" href="group___epid_verifier_module.html#ga974b92a62e8b65ea75cf802e8cc6bb6a" title="Verifies a member signature without revocation checks. ">EpidVerifyBasicSig()</a> before invocation. Behavior is undefined if sig cannot be verified.</dd>
  284. <dd>
  285. This function should be used in conjunction with <a class="el" href="group___epid_verifier_module.html#ga974b92a62e8b65ea75cf802e8cc6bb6a" title="Verifies a member signature without revocation checks. ">EpidVerifyBasicSig()</a> and <a class="el" href="group___epid_verifier_module.html#gaeb05e6faea6f09c0665b13adc6e7ddea" title="Verifies a signature has not been revoked in the private key based revocation list. ">EpidCheckPrivRlEntry()</a>.</dd>
  286. <dd>
  287. If the result is not <a class="el" href="group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a8a6861e14322ca9193498ffc955537f9" title="no error ">kEpidNoErr</a>, the verification should be considered to have failed.</dd></dl>
  288. <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_verifier_module.html#ga1d116daaee5466a1485d26ebc4e3ab70" title="Creates a new verifier context. ">EpidVerifierCreate</a> </dd>
  289. <dd>
  290. <a class="el" href="group___epid_verifier_module.html#ga974b92a62e8b65ea75cf802e8cc6bb6a" title="Verifies a member signature without revocation checks. ">EpidVerifyBasicSig</a> </dd>
  291. <dd>
  292. <a class="el" href="group___epid_verifier_module.html#gaeb05e6faea6f09c0665b13adc6e7ddea" title="Verifies a signature has not been revoked in the private key based revocation list. ">EpidCheckPrivRlEntry</a> </dd></dl>
  293. </div>
  294. </div>
  295. <a class="anchor" id="ga1d116daaee5466a1485d26ebc4e3ab70"></a>
  296. <div class="memitem">
  297. <div class="memproto">
  298. <table class="memname">
  299. <tr>
  300. <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidVerifierCreate </td>
  301. <td>(</td>
  302. <td class="paramtype"><a class="el" href="struct_group_pub_key.html">GroupPubKey</a> const *&#160;</td>
  303. <td class="paramname"><em>pub_key</em>, </td>
  304. </tr>
  305. <tr>
  306. <td class="paramkey"></td>
  307. <td></td>
  308. <td class="paramtype"><a class="el" href="struct_verifier_precomp.html">VerifierPrecomp</a> const *&#160;</td>
  309. <td class="paramname"><em>precomp</em>, </td>
  310. </tr>
  311. <tr>
  312. <td class="paramkey"></td>
  313. <td></td>
  314. <td class="paramtype"><a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> **&#160;</td>
  315. <td class="paramname"><em>ctx</em>&#160;</td>
  316. </tr>
  317. <tr>
  318. <td></td>
  319. <td>)</td>
  320. <td></td><td></td>
  321. </tr>
  322. </table>
  323. </div><div class="memdoc">
  324. <p>Creates a new verifier context. </p>
  325. <p>Must be called to create the verifier context that is used by other "Verifier" APIs.</p>
  326. <p>Allocates memory for the context, then initializes it.</p>
  327. <p><a class="el" href="group___epid_verifier_module.html#ga6707e691f4b3916f9c684d5bbd463d12" title="Deletes an existing verifier context. ">EpidVerifierDelete()</a> must be called to safely release the member context.</p>
  328. <dl class="params"><dt>Parameters</dt><dd>
  329. <table class="params">
  330. <tr><td class="paramdir">[in]</td><td class="paramname">pub_key</td><td>The group certificate. </td></tr>
  331. <tr><td class="paramdir">[in]</td><td class="paramname">precomp</td><td>Optional pre-computed data. If NULL the value is computed internally and is readable using <a class="el" href="group___epid_verifier_module.html#ga92df4d00ea4ee59d7bfd35b23da03392" title="Serializes the pre-computed verifier settings. ">EpidVerifierWritePrecomp()</a>. </td></tr>
  332. <tr><td class="paramdir">[out]</td><td class="paramname">ctx</td><td>Newly constructed verifier context.</td></tr>
  333. </table>
  334. </dd>
  335. </dl>
  336. <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>
  337. <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 ctx is undefined.</dd></dl>
  338. <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_verifier_module.html#ga6707e691f4b3916f9c684d5bbd463d12" title="Deletes an existing verifier context. ">EpidVerifierDelete</a> </dd>
  339. <dd>
  340. <a class="el" href="group___epid_verifier_module.html#ga92df4d00ea4ee59d7bfd35b23da03392" title="Serializes the pre-computed verifier settings. ">EpidVerifierWritePrecomp</a> </dd></dl>
  341. <dl><dt><b>Examples: </b></dt><dd><a class="el" href="verifysig_8c-example.html#a12">verifysig.c</a>.</dd>
  342. </dl>
  343. </div>
  344. </div>
  345. <a class="anchor" id="ga6707e691f4b3916f9c684d5bbd463d12"></a>
  346. <div class="memitem">
  347. <div class="memproto">
  348. <table class="memname">
  349. <tr>
  350. <td class="memname">void EpidVerifierDelete </td>
  351. <td>(</td>
  352. <td class="paramtype"><a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> **&#160;</td>
  353. <td class="paramname"><em>ctx</em></td><td>)</td>
  354. <td></td>
  355. </tr>
  356. </table>
  357. </div><div class="memdoc">
  358. <p>Deletes an existing verifier context. </p>
  359. <p>Must be called to safely release a verifier context created using <a class="el" href="group___epid_verifier_module.html#ga1d116daaee5466a1485d26ebc4e3ab70" title="Creates a new verifier context. ">EpidVerifierCreate()</a>.</p>
  360. <p>De-initializes the context, frees memory used by the context, and sets the context pointer to NULL.</p>
  361. <dl class="params"><dt>Parameters</dt><dd>
  362. <table class="params">
  363. <tr><td class="paramdir">[in,out]</td><td class="paramname">ctx</td><td>The verifier context. Can be NULL.</td></tr>
  364. </table>
  365. </dd>
  366. </dl>
  367. <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_verifier_module.html#ga1d116daaee5466a1485d26ebc4e3ab70" title="Creates a new verifier context. ">EpidVerifierCreate</a> </dd></dl>
  368. <dl><dt><b>Examples: </b></dt><dd><a class="el" href="verifysig_8c-example.html#a23">verifysig.c</a>.</dd>
  369. </dl>
  370. </div>
  371. </div>
  372. <a class="anchor" id="ga1d41d6ef4dabbc30ec28452edd6baffb"></a>
  373. <div class="memitem">
  374. <div class="memproto">
  375. <table class="memname">
  376. <tr>
  377. <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidVerifierSetGroupRl </td>
  378. <td>(</td>
  379. <td class="paramtype"><a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> *&#160;</td>
  380. <td class="paramname"><em>ctx</em>, </td>
  381. </tr>
  382. <tr>
  383. <td class="paramkey"></td>
  384. <td></td>
  385. <td class="paramtype"><a class="el" href="struct_group_rl.html">GroupRl</a> const *&#160;</td>
  386. <td class="paramname"><em>grp_rl</em>, </td>
  387. </tr>
  388. <tr>
  389. <td class="paramkey"></td>
  390. <td></td>
  391. <td class="paramtype">size_t&#160;</td>
  392. <td class="paramname"><em>grp_rl_size</em>&#160;</td>
  393. </tr>
  394. <tr>
  395. <td></td>
  396. <td>)</td>
  397. <td></td><td></td>
  398. </tr>
  399. </table>
  400. </div><div class="memdoc">
  401. <p>Sets the group based revocation list. </p>
  402. <p>The caller is responsible for insuring 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>
  403. <dl class="section attention"><dt>Attention</dt><dd>The memory pointed to by grp_rl is accessed directly by the verifier until a new list is set or the verifier 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>
  404. <dd>
  405. It is the responsibility of the caller to free the memory pointed to by grp_rl after the verifier is no longer using it.</dd></dl>
  406. <dl class="params"><dt>Parameters</dt><dd>
  407. <table class="params">
  408. <tr><td class="paramdir">[in,out]</td><td class="paramname">ctx</td><td>The verifier context. </td></tr>
  409. <tr><td class="paramdir">[in]</td><td class="paramname">grp_rl</td><td>The group based revocation list. </td></tr>
  410. <tr><td class="paramdir">[in]</td><td class="paramname">grp_rl_size</td><td>The size of the group based revocation list in bytes.</td></tr>
  411. </table>
  412. </dd>
  413. </dl>
  414. <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>
  415. <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 group based revocation list pointed to by the verifier is undefined.</dd></dl>
  416. <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_verifier_module.html#ga1d116daaee5466a1485d26ebc4e3ab70" title="Creates a new verifier context. ">EpidVerifierCreate</a> </dd></dl>
  417. <dl><dt><b>Examples: </b></dt><dd><a class="el" href="verifysig_8c-example.html#a20">verifysig.c</a>.</dd>
  418. </dl>
  419. </div>
  420. </div>
  421. <a class="anchor" id="ga97b58b2382f24756b66a357f1e825c92"></a>
  422. <div class="memitem">
  423. <div class="memproto">
  424. <table class="memname">
  425. <tr>
  426. <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidVerifierSetHashAlg </td>
  427. <td>(</td>
  428. <td class="paramtype"><a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> *&#160;</td>
  429. <td class="paramname"><em>ctx</em>, </td>
  430. </tr>
  431. <tr>
  432. <td class="paramkey"></td>
  433. <td></td>
  434. <td class="paramtype"><a class="el" href="group___epid_types.html#ga5e450438f6f9a5eacd0cf5ce354ec890">HashAlg</a>&#160;</td>
  435. <td class="paramname"><em>hash_alg</em>&#160;</td>
  436. </tr>
  437. <tr>
  438. <td></td>
  439. <td>)</td>
  440. <td></td><td></td>
  441. </tr>
  442. </table>
  443. </div><div class="memdoc">
  444. <p>Sets the hash algorithm to be used by a verifier. </p>
  445. <dl class="params"><dt>Parameters</dt><dd>
  446. <table class="params">
  447. <tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>The verifier context. </td></tr>
  448. <tr><td class="paramdir">[in]</td><td class="paramname">hash_alg</td><td>The hash algorithm to use.</td></tr>
  449. </table>
  450. </dd>
  451. </dl>
  452. <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>
  453. <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 verifier is undefined.</dd></dl>
  454. <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_verifier_module.html#ga1d116daaee5466a1485d26ebc4e3ab70" title="Creates a new verifier context. ">EpidVerifierCreate</a> </dd>
  455. <dd>
  456. <a class="el" href="group___epid_types.html#ga5e450438f6f9a5eacd0cf5ce354ec890" title="Recognized hash algorithms. ">HashAlg</a> </dd></dl>
  457. <dl><dt><b>Examples: </b></dt><dd><a class="el" href="verifysig_8c-example.html#a14">verifysig.c</a>.</dd>
  458. </dl>
  459. </div>
  460. </div>
  461. <a class="anchor" id="gafab08180a43b58ce2e1d56c4b070bb0e"></a>
  462. <div class="memitem">
  463. <div class="memproto">
  464. <table class="memname">
  465. <tr>
  466. <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidVerifierSetPrivRl </td>
  467. <td>(</td>
  468. <td class="paramtype"><a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> *&#160;</td>
  469. <td class="paramname"><em>ctx</em>, </td>
  470. </tr>
  471. <tr>
  472. <td class="paramkey"></td>
  473. <td></td>
  474. <td class="paramtype"><a class="el" href="struct_priv_rl.html">PrivRl</a> const *&#160;</td>
  475. <td class="paramname"><em>priv_rl</em>, </td>
  476. </tr>
  477. <tr>
  478. <td class="paramkey"></td>
  479. <td></td>
  480. <td class="paramtype">size_t&#160;</td>
  481. <td class="paramname"><em>priv_rl_size</em>&#160;</td>
  482. </tr>
  483. <tr>
  484. <td></td>
  485. <td>)</td>
  486. <td></td><td></td>
  487. </tr>
  488. </table>
  489. </div><div class="memdoc">
  490. <p>Sets the private key based revocation list. </p>
  491. <p>The caller is responsible for insuring 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>
  492. <dl class="section attention"><dt>Attention</dt><dd>The memory pointed to by priv_rl is accessed directly by the verifier until a new list is set or the verifier 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>
  493. <dd>
  494. It is the responsibility of the caller to free the memory pointed to by priv_rl after the verifier is no longer using it.</dd></dl>
  495. <dl class="params"><dt>Parameters</dt><dd>
  496. <table class="params">
  497. <tr><td class="paramdir">[in,out]</td><td class="paramname">ctx</td><td>The verifier context. </td></tr>
  498. <tr><td class="paramdir">[in]</td><td class="paramname">priv_rl</td><td>The private key based revocation list. </td></tr>
  499. <tr><td class="paramdir">[in]</td><td class="paramname">priv_rl_size</td><td>The size of the private key based revocation list in bytes.</td></tr>
  500. </table>
  501. </dd>
  502. </dl>
  503. <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>
  504. <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 private key based revocation list pointed to by the verifier is undefined.</dd></dl>
  505. <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_verifier_module.html#ga1d116daaee5466a1485d26ebc4e3ab70" title="Creates a new verifier context. ">EpidVerifierCreate</a> </dd></dl>
  506. <dl><dt><b>Examples: </b></dt><dd><a class="el" href="verifysig_8c-example.html#a16">verifysig.c</a>.</dd>
  507. </dl>
  508. </div>
  509. </div>
  510. <a class="anchor" id="ga4c7c9820409ee06f30bb8dc75fdd5dcf"></a>
  511. <div class="memitem">
  512. <div class="memproto">
  513. <table class="memname">
  514. <tr>
  515. <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidVerifierSetSigRl </td>
  516. <td>(</td>
  517. <td class="paramtype"><a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> *&#160;</td>
  518. <td class="paramname"><em>ctx</em>, </td>
  519. </tr>
  520. <tr>
  521. <td class="paramkey"></td>
  522. <td></td>
  523. <td class="paramtype"><a class="el" href="struct_sig_rl.html">SigRl</a> const *&#160;</td>
  524. <td class="paramname"><em>sig_rl</em>, </td>
  525. </tr>
  526. <tr>
  527. <td class="paramkey"></td>
  528. <td></td>
  529. <td class="paramtype">size_t&#160;</td>
  530. <td class="paramname"><em>sig_rl_size</em>&#160;</td>
  531. </tr>
  532. <tr>
  533. <td></td>
  534. <td>)</td>
  535. <td></td><td></td>
  536. </tr>
  537. </table>
  538. </div><div class="memdoc">
  539. <p>Sets the signature based revocation list. </p>
  540. <p>The caller is responsible for insuring 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>
  541. <dl class="section attention"><dt>Attention</dt><dd>The memory pointed to by sig_rl is accessed directly by the verifier until a new list is set or the verifier 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>
  542. <dd>
  543. It is the responsibility of the caller to free the memory pointed to by sig_rl after the verifier is no longer using it.</dd></dl>
  544. <dl class="params"><dt>Parameters</dt><dd>
  545. <table class="params">
  546. <tr><td class="paramdir">[in,out]</td><td class="paramname">ctx</td><td>The verifier context. </td></tr>
  547. <tr><td class="paramdir">[in]</td><td class="paramname">sig_rl</td><td>The signature based revocation list. </td></tr>
  548. <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>
  549. </table>
  550. </dd>
  551. </dl>
  552. <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>
  553. <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 verifier is undefined.</dd></dl>
  554. <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_verifier_module.html#ga1d116daaee5466a1485d26ebc4e3ab70" title="Creates a new verifier context. ">EpidVerifierCreate</a> </dd></dl>
  555. <dl><dt><b>Examples: </b></dt><dd><a class="el" href="verifysig_8c-example.html#a18">verifysig.c</a>.</dd>
  556. </dl>
  557. </div>
  558. </div>
  559. <a class="anchor" id="ga0909703a0a4dfe080374d0d99077465a"></a>
  560. <div class="memitem">
  561. <div class="memproto">
  562. <table class="memname">
  563. <tr>
  564. <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidVerifierSetVerifierRl </td>
  565. <td>(</td>
  566. <td class="paramtype"><a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> *&#160;</td>
  567. <td class="paramname"><em>ctx</em>, </td>
  568. </tr>
  569. <tr>
  570. <td class="paramkey"></td>
  571. <td></td>
  572. <td class="paramtype"><a class="el" href="struct_verifier_rl.html">VerifierRl</a> const *&#160;</td>
  573. <td class="paramname"><em>ver_rl</em>, </td>
  574. </tr>
  575. <tr>
  576. <td class="paramkey"></td>
  577. <td></td>
  578. <td class="paramtype">size_t&#160;</td>
  579. <td class="paramname"><em>ver_rl_size</em>&#160;</td>
  580. </tr>
  581. <tr>
  582. <td></td>
  583. <td>)</td>
  584. <td></td><td></td>
  585. </tr>
  586. </table>
  587. </div><div class="memdoc">
  588. <p>Sets the verifier revocation list. </p>
  589. <p>The caller is responsible for insuring 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>
  590. <dl class="section attention"><dt>Attention</dt><dd>The memory pointed to by ver_rl is accessed directly by the verifier until a new list is set or the verifier 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>
  591. <dd>
  592. It is the responsibility of the caller to free the memory pointed to by ver_rl after the verifier is no longer using it.</dd></dl>
  593. <dl class="params"><dt>Parameters</dt><dd>
  594. <table class="params">
  595. <tr><td class="paramdir">[in,out]</td><td class="paramname">ctx</td><td>The verifier context. </td></tr>
  596. <tr><td class="paramdir">[in]</td><td class="paramname">ver_rl</td><td>The verifier revocation list. </td></tr>
  597. <tr><td class="paramdir">[in]</td><td class="paramname">ver_rl_size</td><td>The size of the verifier revocation list in bytes.</td></tr>
  598. </table>
  599. </dd>
  600. </dl>
  601. <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>
  602. <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 verifier revocation list pointed to by the verifier is undefined.</dd></dl>
  603. <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_verifier_module.html#ga1d116daaee5466a1485d26ebc4e3ab70" title="Creates a new verifier context. ">EpidVerifierCreate</a> </dd></dl>
  604. <dl><dt><b>Examples: </b></dt><dd><a class="el" href="verifysig_8c-example.html#a21">verifysig.c</a>.</dd>
  605. </dl>
  606. </div>
  607. </div>
  608. <a class="anchor" id="ga92df4d00ea4ee59d7bfd35b23da03392"></a>
  609. <div class="memitem">
  610. <div class="memproto">
  611. <table class="memname">
  612. <tr>
  613. <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidVerifierWritePrecomp </td>
  614. <td>(</td>
  615. <td class="paramtype"><a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> const *&#160;</td>
  616. <td class="paramname"><em>ctx</em>, </td>
  617. </tr>
  618. <tr>
  619. <td class="paramkey"></td>
  620. <td></td>
  621. <td class="paramtype"><a class="el" href="struct_verifier_precomp.html">VerifierPrecomp</a> *&#160;</td>
  622. <td class="paramname"><em>precomp</em>&#160;</td>
  623. </tr>
  624. <tr>
  625. <td></td>
  626. <td>)</td>
  627. <td></td><td></td>
  628. </tr>
  629. </table>
  630. </div><div class="memdoc">
  631. <p>Serializes the pre-computed verifier settings. </p>
  632. <dl class="params"><dt>Parameters</dt><dd>
  633. <table class="params">
  634. <tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>The verifier context. </td></tr>
  635. <tr><td class="paramdir">[out]</td><td class="paramname">precomp</td><td>The Serialized pre-computed verifier settings. </td></tr>
  636. </table>
  637. </dd>
  638. </dl>
  639. <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>
  640. <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 precomp is undefined. </dd></dl>
  641. <dl><dt><b>Examples: </b></dt><dd><a class="el" href="verifysig_8c-example.html#a13">verifysig.c</a>.</dd>
  642. </dl>
  643. </div>
  644. </div>
  645. <a class="anchor" id="ga39b240a17f310894e9f5946c9a731798"></a>
  646. <div class="memitem">
  647. <div class="memproto">
  648. <table class="memname">
  649. <tr>
  650. <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidVerify </td>
  651. <td>(</td>
  652. <td class="paramtype"><a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> const *&#160;</td>
  653. <td class="paramname"><em>ctx</em>, </td>
  654. </tr>
  655. <tr>
  656. <td class="paramkey"></td>
  657. <td></td>
  658. <td class="paramtype"><a class="el" href="struct_epid_signature.html">EpidSignature</a> const *&#160;</td>
  659. <td class="paramname"><em>sig</em>, </td>
  660. </tr>
  661. <tr>
  662. <td class="paramkey"></td>
  663. <td></td>
  664. <td class="paramtype">size_t&#160;</td>
  665. <td class="paramname"><em>sig_len</em>, </td>
  666. </tr>
  667. <tr>
  668. <td class="paramkey"></td>
  669. <td></td>
  670. <td class="paramtype">void const *&#160;</td>
  671. <td class="paramname"><em>msg</em>, </td>
  672. </tr>
  673. <tr>
  674. <td class="paramkey"></td>
  675. <td></td>
  676. <td class="paramtype">size_t&#160;</td>
  677. <td class="paramname"><em>msg_len</em>, </td>
  678. </tr>
  679. <tr>
  680. <td class="paramkey"></td>
  681. <td></td>
  682. <td class="paramtype">void const *&#160;</td>
  683. <td class="paramname"><em>basename</em>, </td>
  684. </tr>
  685. <tr>
  686. <td class="paramkey"></td>
  687. <td></td>
  688. <td class="paramtype">size_t&#160;</td>
  689. <td class="paramname"><em>basename_len</em>&#160;</td>
  690. </tr>
  691. <tr>
  692. <td></td>
  693. <td>)</td>
  694. <td></td><td></td>
  695. </tr>
  696. </table>
  697. </div><div class="memdoc">
  698. <p>Verifies a signature and checks revocation status. </p>
  699. <dl class="params"><dt>Parameters</dt><dd>
  700. <table class="params">
  701. <tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>The verifier context. </td></tr>
  702. <tr><td class="paramdir">[in]</td><td class="paramname">sig</td><td>The signature. </td></tr>
  703. <tr><td class="paramdir">[in]</td><td class="paramname">sig_len</td><td>The size of sig in bytes. </td></tr>
  704. <tr><td class="paramdir">[in]</td><td class="paramname">msg</td><td>The message that was signed. </td></tr>
  705. <tr><td class="paramdir">[in]</td><td class="paramname">msg_len</td><td>The size of msg in bytes. </td></tr>
  706. <tr><td class="paramdir">[in]</td><td class="paramname">basename</td><td>The basename. Pass NULL if not specified </td></tr>
  707. <tr><td class="paramdir">[in]</td><td class="paramname">basename_len</td><td>Number of bytes in basename buffer. Must be 0 if basename is NULL.</td></tr>
  708. </table>
  709. </dd>
  710. </dl>
  711. <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>
  712. <dl class="retval"><dt>Return values</dt><dd>
  713. <table class="retval">
  714. <tr><td class="paramname"><a class="el" href="group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360ab45ad60085d03c03ea30b40a0519897e" title="Signature is valid. ">kEpidSigValid</a></td><td>Signature validated successfully </td></tr>
  715. <tr><td class="paramname"><a class="el" href="group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360aeedd19b8a1cbdecf963f90b4860e02b8" title="Signature is invalid. ">kEpidSigInvalid</a></td><td>Signature is invalid </td></tr>
  716. <tr><td class="paramname"><a class="el" href="group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a2b38f44424cecd7b432194a2012dc9c7" title="Signature revoked in GroupRl. ">kEpidSigRevokedinGroupRl</a></td><td>Signature revoked in <a class="el" href="struct_group_rl.html" title="group revocation list ">GroupRl</a> </td></tr>
  717. <tr><td class="paramname"><a class="el" href="group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a780a20821863553b88ca617a6fc0f718" title="Signature revoked in PrivRl. ">kEpidSigRevokedinPrivRl</a></td><td>Signature revoked in <a class="el" href="struct_priv_rl.html" title="private-key based revocation list. ">PrivRl</a> </td></tr>
  718. <tr><td class="paramname"><a class="el" href="group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360aff83186b61d48f9fee5f691c5b219bc1" title="Signature revoked in SigRl. ">kEpidSigRevokedinSigRl</a></td><td>Signature revoked in <a class="el" href="struct_sig_rl.html" title="signature based revocation list ">SigRl</a> </td></tr>
  719. <tr><td class="paramname"><a class="el" href="group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360addbba767bb884b4459a567056b4d3f86" title="Signature revoked in VerifierRl. ">kEpidSigRevokedinVerifierRl</a></td><td>Signature revoked in <a class="el" href="struct_verifier_rl.html">VerifierRl</a></td></tr>
  720. </table>
  721. </dd>
  722. </dl>
  723. <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 one of the values listed above the verify should be considered to have failed.</dd></dl>
  724. <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_verifier_module.html#ga1d116daaee5466a1485d26ebc4e3ab70" title="Creates a new verifier context. ">EpidVerifierCreate</a> </dd>
  725. <dd>
  726. <a class="el" href="group___epid_member_module.html#gae04a250d5981fcf9bd6f9f57e0468faa" title="Creates a basic signature for use in constrained environment. ">EpidSignBasic</a> </dd>
  727. <dd>
  728. <a class="el" href="group___epid_member_module.html#ga759155a719254f734157722716dac640" title="Writes a Intel(R) EPID signature. ">EpidSign</a> </dd></dl>
  729. <dl><dt><b>Examples: </b></dt><dd><a class="el" href="verifysig_8c-example.html#a22">verifysig.c</a>.</dd>
  730. </dl>
  731. </div>
  732. </div>
  733. <a class="anchor" id="ga974b92a62e8b65ea75cf802e8cc6bb6a"></a>
  734. <div class="memitem">
  735. <div class="memproto">
  736. <table class="memname">
  737. <tr>
  738. <td class="memname"><a class="el" href="group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360">EpidStatus</a> EpidVerifyBasicSig </td>
  739. <td>(</td>
  740. <td class="paramtype"><a class="el" href="struct_verifier_ctx.html">VerifierCtx</a> const *&#160;</td>
  741. <td class="paramname"><em>ctx</em>, </td>
  742. </tr>
  743. <tr>
  744. <td class="paramkey"></td>
  745. <td></td>
  746. <td class="paramtype"><a class="el" href="struct_basic_signature.html">BasicSignature</a> const *&#160;</td>
  747. <td class="paramname"><em>sig</em>, </td>
  748. </tr>
  749. <tr>
  750. <td class="paramkey"></td>
  751. <td></td>
  752. <td class="paramtype">void const *&#160;</td>
  753. <td class="paramname"><em>msg</em>, </td>
  754. </tr>
  755. <tr>
  756. <td class="paramkey"></td>
  757. <td></td>
  758. <td class="paramtype">size_t&#160;</td>
  759. <td class="paramname"><em>msg_len</em>, </td>
  760. </tr>
  761. <tr>
  762. <td class="paramkey"></td>
  763. <td></td>
  764. <td class="paramtype">void const *&#160;</td>
  765. <td class="paramname"><em>basename</em>, </td>
  766. </tr>
  767. <tr>
  768. <td class="paramkey"></td>
  769. <td></td>
  770. <td class="paramtype">size_t&#160;</td>
  771. <td class="paramname"><em>basename_len</em>&#160;</td>
  772. </tr>
  773. <tr>
  774. <td></td>
  775. <td>)</td>
  776. <td></td><td></td>
  777. </tr>
  778. </table>
  779. </div><div class="memdoc">
  780. <p>Verifies a member signature without revocation checks. </p>
  781. <p>Used in constrained environments where, due to limited memory, it may not be possible to process through a large and potentially unbounded revocation list.</p>
  782. <dl class="params"><dt>Parameters</dt><dd>
  783. <table class="params">
  784. <tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>The verifier context. </td></tr>
  785. <tr><td class="paramdir">[in]</td><td class="paramname">sig</td><td>The basic signature. </td></tr>
  786. <tr><td class="paramdir">[in]</td><td class="paramname">msg</td><td>The message that was signed. </td></tr>
  787. <tr><td class="paramdir">[in]</td><td class="paramname">msg_len</td><td>The size of msg in bytes. </td></tr>
  788. <tr><td class="paramdir">[in]</td><td class="paramname">basename</td><td>The basename. Pass NULL if not specified </td></tr>
  789. <tr><td class="paramdir">[in]</td><td class="paramname">basename_len</td><td>Number of bytes in basename buffer. Must be 0 if basename is NULL.</td></tr>
  790. </table>
  791. </dd>
  792. </dl>
  793. <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>
  794. <dl class="section note"><dt>Note</dt><dd>This function should be used in conjunction with <a class="el" href="group___epid_verifier_module.html#gac6e2fab59e3af8a33a74a5b201642700" title="Verifies the non-revoked proof for a single signature based revocation list entry. ">EpidNrVerify()</a> and <a class="el" href="group___epid_verifier_module.html#gaeb05e6faea6f09c0665b13adc6e7ddea" title="Verifies a signature has not been revoked in the private key based revocation list. ">EpidCheckPrivRlEntry()</a>.</dd>
  795. <dd>
  796. If the result is not <a class="el" href="group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a8a6861e14322ca9193498ffc955537f9" title="no error ">kEpidNoErr</a> the verify should be considered to have failed.</dd></dl>
  797. <dl class="section see"><dt>See also</dt><dd><a class="el" href="group___epid_verifier_module.html#ga1d116daaee5466a1485d26ebc4e3ab70" title="Creates a new verifier context. ">EpidVerifierCreate</a> </dd>
  798. <dd>
  799. <a class="el" href="group___epid_member_module.html#gae04a250d5981fcf9bd6f9f57e0468faa" title="Creates a basic signature for use in constrained environment. ">EpidSignBasic</a> </dd>
  800. <dd>
  801. <a class="el" href="group___epid_member_module.html#ga759155a719254f734157722716dac640" title="Writes a Intel(R) EPID signature. ">EpidSign</a> </dd></dl>
  802. </div>
  803. </div>
  804. </div><!-- contents -->
  805. </div><!-- doc-content -->
  806. <!-- HTML footer for doxygen 1.8.10-->
  807. <!-- start footer part -->
  808. <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  809. <ul>
  810. <li class="footer">
  811. &copy; 2016 Intel Corporation
  812. </li>
  813. </ul>
  814. </div>
  815. </body>
  816. </html>