Sophie

Sophie

distrib > Fedora > 13 > x86_64 > by-pkgid > 0c0756de82b9bb61e9713cceb885975f > files > 37

pkcs11-helper-devel-1.07-4.fc12.i686.rpm

<!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/html;charset=UTF-8"/>
<title>pkcs11-helper: pkcs11-helper core interface</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.0 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>pkcs11-helper core interface</h1><table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpkcs11h__token__id__s.html">pkcs11h_token_id_s</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Token identifier.  <a href="structpkcs11h__token__id__s.html#_details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2>Modules</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__PKCS11H__FEATURE__MASK.html">PKCS11H_FEATURE_MASK</a></td></tr>

<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>pkcs11-helper features mask. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__PKCS11H__LOG.html">PKCS11H_LOG</a></td></tr>

<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>pkcs11-helper log level. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__PKCS11H__PRIVATEMODE__MASK.html">PKCS11H_PRIVATEMODE_MASK</a></td></tr>

<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Signature mask selection. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__PKCS11H__SLOTEVENT__METHOD.html">PKCS11H_SLOTEVENT_METHOD</a></td></tr>

<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Slotevent mode selection. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__PKCS11H__PROMPT__MASK.html">PKCS11H_PROMPT_MASK</a></td></tr>

<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Prompt mask selection. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__PKCS11H__ENUM__METHOD.html">PKCS11H_ENUM_METHOD</a></td></tr>

<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Enumeration mode selection. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Files</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="pkcs11h-core_8h.html">pkcs11h-core.h</a></td></tr>

<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>pkcs11-helper core. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#gaf2e69452539380c208ba5cdf3977ab4d">PKCS11H_PIN_CACHE_INFINITE</a>&nbsp;&nbsp;&nbsp;-1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga5b27bbc1ff522e8dea35f7230e15d1cc"></a><!-- doxytag: member="pkcs11h_core::PKCS11H_VERSION" ref="ga5b27bbc1ff522e8dea35f7230e15d1cc" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#ga5b27bbc1ff522e8dea35f7230e15d1cc">PKCS11H_VERSION</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Library version. <br/></td></tr>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2b27ddc9dcad511bbe4b79d8cc83d2fd"></a><!-- doxytag: member="pkcs11h_core::pkcs11h_token_id_t" ref="ga2b27ddc9dcad511bbe4b79d8cc83d2fd" args="" -->
typedef struct <a class="el" href="structpkcs11h__token__id__s.html">pkcs11h_token_id_s</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#ga2b27ddc9dcad511bbe4b79d8cc83d2fd">pkcs11h_token_id_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Token identifier. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#ga8c937304fe72d67d87736e0025164fa3">pkcs11h_hook_log_t</a> )(IN void *const global_data, IN const unsigned flags, IN const char *const format, IN va_list args)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Log hook.  <a href="#ga8c937304fe72d67d87736e0025164fa3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#ga6029c2934ff6c06847e6c82060c2f3e8">pkcs11h_hook_slotevent_t</a> )(IN void *const global_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Slotevent hook.  <a href="#ga6029c2934ff6c06847e6c82060c2f3e8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef PKCS11H_BOOL(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#gaa45856a77a1f7afa6ad2486b7f4bbf59">pkcs11h_hook_token_prompt_t</a> )(IN void *const global_data, IN void *const user_data, IN const <a class="el" href="structpkcs11h__token__id__s.html">pkcs11h_token_id_t</a> token, IN const unsigned retry)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Token prompt hook.  <a href="#gaa45856a77a1f7afa6ad2486b7f4bbf59"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef PKCS11H_BOOL(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#gabc1196aa612d052c45730fa00d519d2a">pkcs11h_hook_pin_prompt_t</a> )(IN void *const global_data, IN void *const user_data, IN const <a class="el" href="structpkcs11h__token__id__s.html">pkcs11h_token_id_t</a> token, IN const unsigned retry, OUT char *const pin, IN const size_t pin_max)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PIN prompt hook.  <a href="#gabc1196aa612d052c45730fa00d519d2a"></a><br/></td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#ga9aebf44a24ec0312cbf42a1024bbf290">pkcs11h_getMessage</a> (IN const CK_RV rv)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get message by return value.  <a href="#ga9aebf44a24ec0312cbf42a1024bbf290"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#gaecea4287b494c1907b8c7e9dcde0d48b">pkcs11h_getVersion</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get version of library.  <a href="#gaecea4287b494c1907b8c7e9dcde0d48b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#ga66cddd754ca08b5cf82881d22853d8bf">pkcs11h_getFeatures</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get features of library.  <a href="#ga66cddd754ca08b5cf82881d22853d8bf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">CK_RV&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#gadf09a7c486742188b8ceedf84a5c5db6">pkcs11h_initialize</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Inititalize helper interface.  <a href="#gadf09a7c486742188b8ceedf84a5c5db6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">CK_RV&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#gac8464931fa412eb69a118fe12c1778fe">pkcs11h_terminate</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Terminate helper interface.  <a href="#gac8464931fa412eb69a118fe12c1778fe"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#gad4b64d348be65a44012d7f2160cf27b2">pkcs11h_setLogLevel</a> (IN const unsigned flags)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set current log level of the helper.  <a href="#gad4b64d348be65a44012d7f2160cf27b2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#gad0c7e2b6df043b04842aeeea3904e61e">pkcs11h_getLogLevel</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get current log level.  <a href="#gad0c7e2b6df043b04842aeeea3904e61e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">CK_RV&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#ga1d00e131d0d583702b9f3a80da9126f8">pkcs11h_setForkMode</a> (IN const PKCS11H_BOOL safe)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">How does the foked process bahaves after POSIX fork().  <a href="#ga1d00e131d0d583702b9f3a80da9126f8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">CK_RV&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#gaf5dcc671471e326942f5ad9615840e8b">pkcs11h_setLogHook</a> (IN const <a class="el" href="group__pkcs11h__core.html#ga8c937304fe72d67d87736e0025164fa3">pkcs11h_hook_log_t</a> hook, IN void *const global_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a log callback.  <a href="#gaf5dcc671471e326942f5ad9615840e8b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">CK_RV&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#ga63c8c01ba69a9e831437f1ff4da58ccc">pkcs11h_setSlotEventHook</a> (IN const <a class="el" href="group__pkcs11h__core.html#ga6029c2934ff6c06847e6c82060c2f3e8">pkcs11h_hook_slotevent_t</a> hook, IN void *const global_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a slot event callback.  <a href="#ga63c8c01ba69a9e831437f1ff4da58ccc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">CK_RV&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#ga27d9588bcea712bef33a03b51851ec27">pkcs11h_setTokenPromptHook</a> (IN const <a class="el" href="group__pkcs11h__core.html#gaa45856a77a1f7afa6ad2486b7f4bbf59">pkcs11h_hook_token_prompt_t</a> hook, IN void *const global_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a token prompt callback.  <a href="#ga27d9588bcea712bef33a03b51851ec27"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">CK_RV&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#gad5098da620784c242596dcb69e122b5b">pkcs11h_setPINPromptHook</a> (IN const <a class="el" href="group__pkcs11h__core.html#gabc1196aa612d052c45730fa00d519d2a">pkcs11h_hook_pin_prompt_t</a> hook, IN void *const global_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a pin prompt callback.  <a href="#gad5098da620784c242596dcb69e122b5b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">CK_RV&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#ga0f3096d8b9c573182023fc872876f22f">pkcs11h_setProtectedAuthentication</a> (IN const PKCS11H_BOOL allow_protected_auth)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set global protected authentication mode.  <a href="#ga0f3096d8b9c573182023fc872876f22f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">CK_RV&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#gac96214b440aa5dd1d23be32cd9eb5562">pkcs11h_setPINCachePeriod</a> (IN const int pin_cache_period)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set global PIN cache timeout.  <a href="#gac96214b440aa5dd1d23be32cd9eb5562"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">CK_RV&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#gad8d9f02106600463a3566775b55705a4">pkcs11h_setMaxLoginRetries</a> (IN const unsigned max_retries)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set global login retries attempts.  <a href="#gad8d9f02106600463a3566775b55705a4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">CK_RV&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#gafa48a26cc3c2662a87eef3eaa9523e23">pkcs11h_addProvider</a> (IN const char *const reference, IN const char *const provider_location, IN const PKCS11H_BOOL allow_protected_auth, IN const unsigned mask_private_mode, IN const unsigned slot_event_method, IN const unsigned slot_poll_interval, IN const PKCS11H_BOOL cert_is_private)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a PKCS#11 provider.  <a href="#gafa48a26cc3c2662a87eef3eaa9523e23"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">CK_RV&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#gadb1735c34f12dd63fccf96d1bf4a2f43">pkcs11h_removeProvider</a> (IN const char *const reference)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete a PKCS#11 provider.  <a href="#gadb1735c34f12dd63fccf96d1bf4a2f43"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">CK_RV&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#ga7a2efdb35cef1653f362dcbafea8683c">pkcs11h_forkFixup</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Handle special case of POSIX fork().  <a href="#ga7a2efdb35cef1653f362dcbafea8683c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">CK_RV&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#gaf760f60ccd964c42e5a7f98e0a8e83f6">pkcs11h_plugAndPlay</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Handle slot rescan.  <a href="#gaf760f60ccd964c42e5a7f98e0a8e83f6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">CK_RV&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__core.html#ga3cf342b7023c90c613f1c09987fe04cd">pkcs11h_logout</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Logout from all sessions.  <a href="#ga3cf342b7023c90c613f1c09987fe04cd"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Core functionality. </p>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="gaf2e69452539380c208ba5cdf3977ab4d"></a><!-- doxytag: member="pkcs11h&#45;core.h::PKCS11H_PIN_CACHE_INFINITE" ref="gaf2e69452539380c208ba5cdf3977ab4d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PKCS11H_PIN_CACHE_INFINITE&nbsp;&nbsp;&nbsp;-1</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Inifite session limit </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test-certificate_8c-example.html#a20">test-certificate.c</a>.</dd>
</dl>
</div>
</div>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="ga8c937304fe72d67d87736e0025164fa3"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_hook_log_t" ref="ga8c937304fe72d67d87736e0025164fa3" args=")(IN void *const global_data, IN const unsigned flags, IN const char *const format, IN va_list args)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(* <a class="el" href="group__pkcs11h__core.html#ga8c937304fe72d67d87736e0025164fa3">pkcs11h_hook_log_t</a>)(IN void *const global_data, IN const unsigned flags, IN const char *const format, IN va_list args)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Log hook. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>global_data</em>&nbsp;</td><td>Hook data. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>Log flags. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>printf style format. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>stdargs </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gabc1196aa612d052c45730fa00d519d2a"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_hook_pin_prompt_t" ref="gabc1196aa612d052c45730fa00d519d2a" args=")(IN void *const global_data, IN void *const user_data, IN const pkcs11h_token_id_t token, IN const unsigned retry, OUT char *const pin, IN const size_t pin_max)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef PKCS11H_BOOL(* <a class="el" href="group__pkcs11h__core.html#gabc1196aa612d052c45730fa00d519d2a">pkcs11h_hook_pin_prompt_t</a>)(IN void *const global_data, IN void *const user_data, IN const <a class="el" href="structpkcs11h__token__id__s.html">pkcs11h_token_id_t</a> token, IN const unsigned retry, OUT char *const pin, IN const size_t pin_max)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>PIN prompt hook. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>global_data</em>&nbsp;</td><td>Hook data. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Local data. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>token</em>&nbsp;</td><td>Token. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>retry</em>&nbsp;</td><td>Retry counter. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pin</em>&nbsp;</td><td>PIN buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pin_max</em>&nbsp;</td><td>PIN buffer size. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>TRUE success. </dd></dl>

</div>
</div>
<a class="anchor" id="ga6029c2934ff6c06847e6c82060c2f3e8"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_hook_slotevent_t" ref="ga6029c2934ff6c06847e6c82060c2f3e8" args=")(IN void *const global_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(* <a class="el" href="group__pkcs11h__core.html#ga6029c2934ff6c06847e6c82060c2f3e8">pkcs11h_hook_slotevent_t</a>)(IN void *const global_data)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Slotevent hook. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>global_data</em>&nbsp;</td><td>Hook data. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaa45856a77a1f7afa6ad2486b7f4bbf59"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_hook_token_prompt_t" ref="gaa45856a77a1f7afa6ad2486b7f4bbf59" args=")(IN void *const global_data, IN void *const user_data, IN const pkcs11h_token_id_t token, IN const unsigned retry)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef PKCS11H_BOOL(* <a class="el" href="group__pkcs11h__core.html#gaa45856a77a1f7afa6ad2486b7f4bbf59">pkcs11h_hook_token_prompt_t</a>)(IN void *const global_data, IN void *const user_data, IN const <a class="el" href="structpkcs11h__token__id__s.html">pkcs11h_token_id_t</a> token, IN const unsigned retry)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Token prompt hook. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>global_data</em>&nbsp;</td><td>Hook data. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Local data. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>token</em>&nbsp;</td><td>Token. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>retry</em>&nbsp;</td><td>Retry counter. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>TRUE success. </dd></dl>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="gafa48a26cc3c2662a87eef3eaa9523e23"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_addProvider" ref="gafa48a26cc3c2662a87eef3eaa9523e23" args="(IN const char *const reference, IN const char *const provider_location, IN const PKCS11H_BOOL allow_protected_auth, IN const unsigned mask_private_mode, IN const unsigned slot_event_method, IN const unsigned slot_poll_interval, IN const PKCS11H_BOOL cert_is_private)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_addProvider </td>
          <td>(</td>
          <td class="paramtype">IN const char *const &nbsp;</td>
          <td class="paramname"> <em>reference</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const char *const &nbsp;</td>
          <td class="paramname"> <em>provider_location</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const PKCS11H_BOOL&nbsp;</td>
          <td class="paramname"> <em>allow_protected_auth</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const unsigned&nbsp;</td>
          <td class="paramname"> <em>mask_private_mode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const unsigned&nbsp;</td>
          <td class="paramname"> <em>slot_event_method</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const unsigned&nbsp;</td>
          <td class="paramname"> <em>slot_poll_interval</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const PKCS11H_BOOL&nbsp;</td>
          <td class="paramname"> <em>cert_is_private</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Add a PKCS#11 provider. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>reference</em>&nbsp;</td><td>Reference name for this provider. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>provider_location</em>&nbsp;</td><td>Provider library location. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>allow_protected_auth</em>&nbsp;</td><td>Allow this provider to use protected authentication. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mask_private_mode</em>&nbsp;</td><td>Provider private mode <a class="el" href="group__PKCS11H__PRIVATEMODE__MASK.html">PKCS11H_PRIVATEMODE_MASK</a> override. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>slot_event_method</em>&nbsp;</td><td>Provider slot event <a class="el" href="group__PKCS11H__SLOTEVENT__METHOD.html">PKCS11H_SLOTEVENT_METHOD</a> method. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>slot_poll_interval</em>&nbsp;</td><td>Slot event poll interval (If in polling mode), specify 0 for default. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>cert_is_private</em>&nbsp;</td><td>Provider's certificate access should be done after login. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>
<dl class="attention"><dt><b>Attention:</b></dt><dd>This function must be called from the main thread. </dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>The global allow_protected_auth must be enabled in order to allow provider specific. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test-basic_8c-example.html#a6">test-basic.c</a>, <a class="el" href="test-certificate_8c-example.html#a10">test-certificate.c</a>, and <a class="el" href="test-slotevent_8c-example.html#a5">test-slotevent.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga7a2efdb35cef1653f362dcbafea8683c"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_forkFixup" ref="ga7a2efdb35cef1653f362dcbafea8683c" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_forkFixup </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Handle special case of POSIX fork(). </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>
<dl class="attention"><dt><b>Attention:</b></dt><dd>This function must be called from the main thread. </dd>
<dd>
This function should be called after fork is called. This is required due to a limitation of the PKCS#11 standard. </dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>The helper library handles fork automatically if <a class="el" href="group__PKCS11H__FEATURE__MASK.html#gaa934bab7add831fa7745ca8119206c1e">PKCS11H_FEATURE_MASK_THREADING</a> is set by use of pthread_atfork. When <a class="el" href="group__PKCS11H__FEATURE__MASK.html#gaa934bab7add831fa7745ca8119206c1e">PKCS11H_FEATURE_MASK_THREADING</a> is enabled this function does nothing. </dd></dl>

</div>
</div>
<a class="anchor" id="ga66cddd754ca08b5cf82881d22853d8bf"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_getFeatures" ref="ga66cddd754ca08b5cf82881d22853d8bf" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int pkcs11h_getFeatures </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get features of library. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>feature mask <a class="el" href="group__PKCS11H__FEATURE__MASK.html">PKCS11H_FEATURE_MASK</a>. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test-basic_8c-example.html#a2">test-basic.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gad0c7e2b6df043b04842aeeea3904e61e"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_getLogLevel" ref="gad0c7e2b6df043b04842aeeea3904e61e" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned pkcs11h_getLogLevel </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get current log level. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>Log level <a class="el" href="group__PKCS11H__LOG.html">PKCS11H_LOG</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga9aebf44a24ec0312cbf42a1024bbf290"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_getMessage" ref="ga9aebf44a24ec0312cbf42a1024bbf290" args="(IN const CK_RV rv)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* pkcs11h_getMessage </td>
          <td>(</td>
          <td class="paramtype">IN const CK_RV&nbsp;</td>
          <td class="paramname"> <em>rv</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get message by return value. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>rv</em>&nbsp;</td><td>Return value. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test-basic_8c-example.html#a0">test-basic.c</a>, <a class="el" href="test-certificate_8c-example.html#a0">test-certificate.c</a>, and <a class="el" href="test-slotevent_8c-example.html#a0">test-slotevent.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaecea4287b494c1907b8c7e9dcde0d48b"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_getVersion" ref="gaecea4287b494c1907b8c7e9dcde0d48b" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int pkcs11h_getVersion </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get version of library. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>version identifier. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test-basic_8c-example.html#a1">test-basic.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gadf09a7c486742188b8ceedf84a5c5db6"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_initialize" ref="gadf09a7c486742188b8ceedf84a5c5db6" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_initialize </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Inititalize helper interface. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__pkcs11h__core.html#gac8464931fa412eb69a118fe12c1778fe" title="Terminate helper interface.">pkcs11h_terminate()</a>. </dd></dl>
<dl class="attention"><dt><b>Attention:</b></dt><dd>This function must be called from the main thread. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test-basic_8c-example.html#a3">test-basic.c</a>, <a class="el" href="test-certificate_8c-example.html#a5">test-certificate.c</a>, and <a class="el" href="test-slotevent_8c-example.html#a1">test-slotevent.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga3cf342b7023c90c613f1c09987fe04cd"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_logout" ref="ga3cf342b7023c90c613f1c09987fe04cd" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_logout </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Logout from all sessions. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>

</div>
</div>
<a class="anchor" id="gaf760f60ccd964c42e5a7f98e0a8e83f6"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_plugAndPlay" ref="gaf760f60ccd964c42e5a7f98e0a8e83f6" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_plugAndPlay </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Handle slot rescan. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>
<dl class="attention"><dt><b>Attention:</b></dt><dd>This function must be called from the main thread. </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>PKCS#11 providers do not allow plug&amp;play, plug&amp;play can be established by finalizing all providers and initializing them again. </dd>
<dd>
The cost of this process is invalidating all sessions, and require user login at the next access. </dd></dl>

</div>
</div>
<a class="anchor" id="gadb1735c34f12dd63fccf96d1bf4a2f43"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_removeProvider" ref="gadb1735c34f12dd63fccf96d1bf4a2f43" args="(IN const char *const reference)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_removeProvider </td>
          <td>(</td>
          <td class="paramtype">IN const char *const &nbsp;</td>
          <td class="paramname"> <em>reference</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Delete a PKCS#11 provider. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>reference</em>&nbsp;</td><td>Reference name for this provider. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>
<dl class="attention"><dt><b>Attention:</b></dt><dd>This function must be called from the main thread. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test-slotevent_8c-example.html#a7">test-slotevent.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga1d00e131d0d583702b9f3a80da9126f8"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_setForkMode" ref="ga1d00e131d0d583702b9f3a80da9126f8" args="(IN const PKCS11H_BOOL safe)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_setForkMode </td>
          <td>(</td>
          <td class="paramtype">IN const PKCS11H_BOOL&nbsp;</td>
          <td class="paramname"> <em>safe</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>How does the foked process bahaves after POSIX fork(). </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>safe</em>&nbsp;</td><td>Safe mode, default is false. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>
<dl class="attention"><dt><b>Attention:</b></dt><dd>This function should be called after <a class="el" href="group__pkcs11h__core.html#gadf09a7c486742188b8ceedf84a5c5db6">pkcs11h_initialize()</a> </dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>This funciton is releavant if <a class="el" href="group__PKCS11H__FEATURE__MASK.html#gaa934bab7add831fa7745ca8119206c1e">PKCS11H_FEATURE_MASK_THREADING</a> is set. If safe mode is on, the child process can use the loaded PKCS#11 providers but it cannot use fork(), while it is in one of the hooks functions, since locked mutexes cannot be released. </dd></dl>

</div>
</div>
<a class="anchor" id="gaf5dcc671471e326942f5ad9615840e8b"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_setLogHook" ref="gaf5dcc671471e326942f5ad9615840e8b" args="(IN const pkcs11h_hook_log_t hook, IN void *const global_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_setLogHook </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__core.html#ga8c937304fe72d67d87736e0025164fa3">pkcs11h_hook_log_t</a>&nbsp;</td>
          <td class="paramname"> <em>hook</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN void *const &nbsp;</td>
          <td class="paramname"> <em>global_data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set a log callback. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>hook</em>&nbsp;</td><td>Callback. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>global_data</em>&nbsp;</td><td>Data to send to callback. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test-basic_8c-example.html#a4">test-basic.c</a>, <a class="el" href="test-certificate_8c-example.html#a6">test-certificate.c</a>, and <a class="el" href="test-slotevent_8c-example.html#a2">test-slotevent.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gad4b64d348be65a44012d7f2160cf27b2"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_setLogLevel" ref="gad4b64d348be65a44012d7f2160cf27b2" args="(IN const unsigned flags)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pkcs11h_setLogLevel </td>
          <td>(</td>
          <td class="paramtype">IN const unsigned&nbsp;</td>
          <td class="paramname"> <em>flags</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set current log level of the helper. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>Current log level <a class="el" href="group__PKCS11H__LOG.html">PKCS11H_LOG</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test-basic_8c-example.html#a5">test-basic.c</a>, <a class="el" href="test-certificate_8c-example.html#a7">test-certificate.c</a>, and <a class="el" href="test-slotevent_8c-example.html#a3">test-slotevent.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gad8d9f02106600463a3566775b55705a4"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_setMaxLoginRetries" ref="gad8d9f02106600463a3566775b55705a4" args="(IN const unsigned max_retries)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_setMaxLoginRetries </td>
          <td>(</td>
          <td class="paramtype">IN const unsigned&nbsp;</td>
          <td class="paramname"> <em>max_retries</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set global login retries attempts. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>max_retries</em>&nbsp;</td><td>Login retries handled by the helper. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>Default is 3. </dd></dl>

</div>
</div>
<a class="anchor" id="gac96214b440aa5dd1d23be32cd9eb5562"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_setPINCachePeriod" ref="gac96214b440aa5dd1d23be32cd9eb5562" args="(IN const int pin_cache_period)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_setPINCachePeriod </td>
          <td>(</td>
          <td class="paramtype">IN const int&nbsp;</td>
          <td class="paramname"> <em>pin_cache_period</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set global PIN cache timeout. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pin_cache_period</em>&nbsp;</td><td>Cache period in seconds, or <a class="el" href="group__pkcs11h__core.html#gaf2e69452539380c208ba5cdf3977ab4d">PKCS11H_PIN_CACHE_INFINITE</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>Default is infinite. </dd></dl>

</div>
</div>
<a class="anchor" id="gad5098da620784c242596dcb69e122b5b"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_setPINPromptHook" ref="gad5098da620784c242596dcb69e122b5b" args="(IN const pkcs11h_hook_pin_prompt_t hook, IN void *const global_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_setPINPromptHook </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__core.html#gabc1196aa612d052c45730fa00d519d2a">pkcs11h_hook_pin_prompt_t</a>&nbsp;</td>
          <td class="paramname"> <em>hook</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN void *const &nbsp;</td>
          <td class="paramname"> <em>global_data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set a pin prompt callback. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>hook</em>&nbsp;</td><td>Callback. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>global_data</em>&nbsp;</td><td>Data to send to callback. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>
<dl class="attention"><dt><b>Attention:</b></dt><dd>If <a class="el" href="group__pkcs11h__core.html#ga1d00e131d0d583702b9f3a80da9126f8">pkcs11h_setForkMode()</a> is true, you cannot fork while in hook. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test-certificate_8c-example.html#a9">test-certificate.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga0f3096d8b9c573182023fc872876f22f"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_setProtectedAuthentication" ref="ga0f3096d8b9c573182023fc872876f22f" args="(IN const PKCS11H_BOOL allow_protected_auth)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_setProtectedAuthentication </td>
          <td>(</td>
          <td class="paramtype">IN const PKCS11H_BOOL&nbsp;</td>
          <td class="paramname"> <em>allow_protected_auth</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set global protected authentication mode. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>allow_protected_auth</em>&nbsp;</td><td>Allow protected authentication if enabled by token. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>Default is on. </dd></dl>

</div>
</div>
<a class="anchor" id="ga63c8c01ba69a9e831437f1ff4da58ccc"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_setSlotEventHook" ref="ga63c8c01ba69a9e831437f1ff4da58ccc" args="(IN const pkcs11h_hook_slotevent_t hook, IN void *const global_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_setSlotEventHook </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__core.html#ga6029c2934ff6c06847e6c82060c2f3e8">pkcs11h_hook_slotevent_t</a>&nbsp;</td>
          <td class="paramname"> <em>hook</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN void *const &nbsp;</td>
          <td class="paramname"> <em>global_data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set a slot event callback. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>hook</em>&nbsp;</td><td>Callback. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>global_data</em>&nbsp;</td><td>Data to send to callback. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__pkcs11h__core.html#gac8464931fa412eb69a118fe12c1778fe" title="Terminate helper interface.">pkcs11h_terminate()</a>. </dd></dl>
<dl class="attention"><dt><b>Attention:</b></dt><dd>Calling this function initialize slot event notifications, these notifications can be started, but never terminate due to PKCS#11 limitation. </dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>In order to use slot events you must have threading <a class="el" href="group__PKCS11H__FEATURE__MASK.html#gaa934bab7add831fa7745ca8119206c1e">PKCS11H_FEATURE_MASK_THREADING</a> enabled. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test-slotevent_8c-example.html#a4">test-slotevent.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga27d9588bcea712bef33a03b51851ec27"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_setTokenPromptHook" ref="ga27d9588bcea712bef33a03b51851ec27" args="(IN const pkcs11h_hook_token_prompt_t hook, IN void *const global_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_setTokenPromptHook </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__core.html#gaa45856a77a1f7afa6ad2486b7f4bbf59">pkcs11h_hook_token_prompt_t</a>&nbsp;</td>
          <td class="paramname"> <em>hook</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN void *const &nbsp;</td>
          <td class="paramname"> <em>global_data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set a token prompt callback. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>hook</em>&nbsp;</td><td>Callback. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>global_data</em>&nbsp;</td><td>Data to send to callback. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>
<dl class="attention"><dt><b>Attention:</b></dt><dd>If <a class="el" href="group__pkcs11h__core.html#ga1d00e131d0d583702b9f3a80da9126f8">pkcs11h_setForkMode()</a> is true, you cannot fork while in hook. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test-certificate_8c-example.html#a8">test-certificate.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac8464931fa412eb69a118fe12c1778fe"></a><!-- doxytag: member="pkcs11h&#45;core.h::pkcs11h_terminate" ref="gac8464931fa412eb69a118fe12c1778fe" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_terminate </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Terminate helper interface. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>
<dl class="attention"><dt><b>Attention:</b></dt><dd>This function must be called from the main thread. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test-basic_8c-example.html#a8">test-basic.c</a>, <a class="el" href="test-certificate_8c-example.html#a22">test-certificate.c</a>, and <a class="el" href="test-slotevent_8c-example.html#a11">test-slotevent.c</a>.</dd>
</dl>
</div>
</div>
</div>
<hr>
<table width="100%"><tr><td>pkcs11-helper, Copyright (C) Alon Bar-Lev &lt;alon.barlev@gmail.com&gt;</td><td align="right"><a href="http://www.opensc-project.org"><img src="opensc-logo.gif" alt="OpenSC-Project.org Logo" border="0"/></a></td></tr></table>