Sophie

Sophie

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

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: Certificate 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>Certificate 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__certificate__id__s.html">pkcs11h_certificate_id_s</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Certificate id reference.  <a href="structpkcs11h__certificate__id__s.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpkcs11h__certificate__id__list__s.html">pkcs11h_certificate_id_list_s</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Certificate id list.  <a href="structpkcs11h__certificate__id__list__s.html#_details">More...</a><br/></td></tr>
<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-certificate_8h.html">pkcs11h-certificate.h</a></td></tr>

<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>pkcs11-helper certificate functions. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga1083c61909a3632877369dc24bda1821"></a><!-- doxytag: member="pkcs11h_certificate::pkcs11h_certificate_id_t" ref="ga1083c61909a3632877369dc24bda1821" args="" -->
typedef struct <br class="typebreak"/>
<a class="el" href="structpkcs11h__certificate__id__s.html">pkcs11h_certificate_id_s</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__certificate.html#ga1083c61909a3632877369dc24bda1821">pkcs11h_certificate_id_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Certificate id reference. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7cb08e46261d4454b2330c7173db88b6"></a><!-- doxytag: member="pkcs11h_certificate::pkcs11h_certificate_t" ref="ga7cb08e46261d4454b2330c7173db88b6" args="" -->
typedef struct <br class="typebreak"/>
pkcs11h_certificate_s *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Certificate object. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac3d61ea33c4e863445b2e1ff2811ae95"></a><!-- doxytag: member="pkcs11h_certificate::pkcs11h_certificate_id_list_t" ref="gac3d61ea33c4e863445b2e1ff2811ae95" args="" -->
typedef struct <br class="typebreak"/>
<a class="el" href="structpkcs11h__certificate__id__list__s.html">pkcs11h_certificate_id_list_s</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pkcs11h__certificate.html#gac3d61ea33c4e863445b2e1ff2811ae95">pkcs11h_certificate_id_list_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Certificate id list. <br/></td></tr>
<tr><td colspan="2"><h2>Functions</h2></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__certificate.html#ga90148440146c44a0bc34320990bc9324">pkcs11h_certificate_freeCertificateId</a> (IN <a class="el" href="structpkcs11h__certificate__id__s.html">pkcs11h_certificate_id_t</a> certificate_id)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free certificate_id object.  <a href="#ga90148440146c44a0bc34320990bc9324"></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__certificate.html#gab55b1cc715b67dac35e6251b6949e2ed">pkcs11h_certificate_duplicateCertificateId</a> (OUT <a class="el" href="structpkcs11h__certificate__id__s.html">pkcs11h_certificate_id_t</a> *const to, IN const <a class="el" href="structpkcs11h__certificate__id__s.html">pkcs11h_certificate_id_t</a> from)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Duplicate certificate_id object.  <a href="#gab55b1cc715b67dac35e6251b6949e2ed"></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__certificate.html#gad2b6ef5f77d7b80c38d78ac8e77c288c">pkcs11h_certificate_setCertificateIdCertificateBlob</a> (IN const <a class="el" href="structpkcs11h__certificate__id__s.html">pkcs11h_certificate_id_t</a> certificate_id, IN const unsigned char *const blob, IN const size_t blob_size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets internal certificate_id blob.  <a href="#gad2b6ef5f77d7b80c38d78ac8e77c288c"></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__certificate.html#gad75e25a67234b34e0101ba0d21206820">pkcs11h_certificate_freeCertificate</a> (IN <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> certificate)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free certificate object.  <a href="#gad75e25a67234b34e0101ba0d21206820"></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__certificate.html#ga822d9d402b27c6e4218d90c3b0645936">pkcs11h_certificate_create</a> (IN const <a class="el" href="structpkcs11h__certificate__id__s.html">pkcs11h_certificate_id_t</a> certificate_id, IN void *const user_data, IN const unsigned mask_prompt, IN const int pin_cache_period, OUT <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> *const p_certificate)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a certificate object out of certificate_id.  <a href="#ga822d9d402b27c6e4218d90c3b0645936"></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__certificate.html#ga0263a20909fd1d0ef0c7b773aeabe5e7">pkcs11h_certificate_getPromptMask</a> (IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> certificate)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Extract user data out of certificate.  <a href="#ga0263a20909fd1d0ef0c7b773aeabe5e7"></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__certificate.html#ga978ba4f6a8574b1cf55adbafcebb0585">pkcs11h_certificate_setPromptMask</a> (IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> certificate, IN const unsigned mask_prompt)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Extract user data out of certificate.  <a href="#ga978ba4f6a8574b1cf55adbafcebb0585"></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__certificate.html#ga70ca903795764bbf0366ba9b64057705">pkcs11h_certificate_getUserData</a> (IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> certificate)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Extract user data out of certificate.  <a href="#ga70ca903795764bbf0366ba9b64057705"></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__certificate.html#ga935d5c8fb641723783061d3cdee0ead5">pkcs11h_certificate_setUserData</a> (IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> certificate, IN void *const user_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Extract user data out of certificate.  <a href="#ga935d5c8fb641723783061d3cdee0ead5"></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__certificate.html#gaacb49067c57239fd7090dd908be16f2f">pkcs11h_certificate_getCertificateId</a> (IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> certificate, OUT <a class="el" href="structpkcs11h__certificate__id__s.html">pkcs11h_certificate_id_t</a> *const p_certificate_id)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get certifiate id object out of a certifiate.  <a href="#gaacb49067c57239fd7090dd908be16f2f"></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__certificate.html#gaa1dc1e528bccfb33ca5284124e93fa56">pkcs11h_certificate_getCertificateBlob</a> (IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> certificate, OUT unsigned char *const certificate_blob, IN OUT size_t *const p_certificate_blob_size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the certificate blob out of the certificate object.  <a href="#gaa1dc1e528bccfb33ca5284124e93fa56"></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__certificate.html#gaa0ca330ab07be6fb42e454e87a514e64">pkcs11h_certificate_serializeCertificateId</a> (OUT char *const sz, IN OUT size_t *max, IN const <a class="el" href="structpkcs11h__certificate__id__s.html">pkcs11h_certificate_id_t</a> certificate_id)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Serialize certificate_id into a string.  <a href="#gaa0ca330ab07be6fb42e454e87a514e64"></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__certificate.html#ga3902be4f775839d121324c3239923aa3">pkcs11h_certificate_deserializeCertificateId</a> (OUT <a class="el" href="structpkcs11h__certificate__id__s.html">pkcs11h_certificate_id_t</a> *const p_certificate_id, IN const char *const sz)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deserialize certificate_id out of string.  <a href="#ga3902be4f775839d121324c3239923aa3"></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__certificate.html#gaa3a990db0a84067ff09d152e632a8e6f">pkcs11h_certificate_ensureCertificateAccess</a> (IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> certificate)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ensure certificate is accessible.  <a href="#gaa3a990db0a84067ff09d152e632a8e6f"></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__certificate.html#gab50752c5fc26181eea30e1bf499fa0e0">pkcs11h_certificate_ensureKeyAccess</a> (IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> certificate)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ensure key is accessible.  <a href="#gab50752c5fc26181eea30e1bf499fa0e0"></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__certificate.html#gaf8ba828e440353d963953bb758ca9b90">pkcs11h_certificate_lockSession</a> (IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> certificate)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lock session for threded environment.  <a href="#gaf8ba828e440353d963953bb758ca9b90"></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__certificate.html#ga4534e579fdd21c5a4b5a4c315b96f297">pkcs11h_certificate_releaseSession</a> (IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> certificate)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Releases session lock.  <a href="#ga4534e579fdd21c5a4b5a4c315b96f297"></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__certificate.html#gad239cf8d4c37fe8fa30524c132fdf844">pkcs11h_certificate_sign</a> (IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> certificate, IN const CK_MECHANISM_TYPE mech_type, IN const unsigned char *const source, IN const size_t source_size, OUT unsigned char *const target, IN OUT size_t *const p_target_size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sign data.  <a href="#gad239cf8d4c37fe8fa30524c132fdf844"></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__certificate.html#gaa2e1944f12d98e58b7bfd7466a88148b">pkcs11h_certificate_signRecover</a> (IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> certificate, IN const CK_MECHANISM_TYPE mech_type, IN const unsigned char *const source, IN const size_t source_size, OUT unsigned char *const target, IN OUT size_t *const p_target_size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sign data.  <a href="#gaa2e1944f12d98e58b7bfd7466a88148b"></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__certificate.html#gaf5932bca5a0306b9c06f270aff7ed42a">pkcs11h_certificate_decrypt</a> (IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> certificate, IN const CK_MECHANISM_TYPE mech_type, IN const unsigned char *const source, IN const size_t source_size, OUT unsigned char *const target, IN OUT size_t *const p_target_size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decrypt data.  <a href="#gaf5932bca5a0306b9c06f270aff7ed42a"></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__certificate.html#ga4a8fea6b3f744408cb7371462fcaf53d">pkcs11h_certificate_unwrap</a> (IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> certificate, IN const CK_MECHANISM_TYPE mech_type, IN const unsigned char *const source, IN const size_t source_size, OUT unsigned char *const target, IN OUT size_t *const p_target_size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decrypt data.  <a href="#ga4a8fea6b3f744408cb7371462fcaf53d"></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__certificate.html#ga29e0a4ec9ec5b65f2dd5f9418ce44d01">pkcs11h_certificate_signAny</a> (IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> certificate, IN const CK_MECHANISM_TYPE mech_type, IN const unsigned char *const source, IN const size_t source_size, OUT unsigned char *const target, IN OUT size_t *const p_target_size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sign data mechanism determined by key attributes.  <a href="#ga29e0a4ec9ec5b65f2dd5f9418ce44d01"></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__certificate.html#gab438e5f11160e5ea7fe0a2b4b38644a3">pkcs11h_certificate_decryptAny</a> (IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> certificate, IN const CK_MECHANISM_TYPE mech_type, IN const unsigned char *const source, IN const size_t source_size, OUT unsigned char *const target, IN OUT size_t *const p_target_size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decrypt data mechanism determined by key attributes.  <a href="#gab438e5f11160e5ea7fe0a2b4b38644a3"></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__certificate.html#ga636c90a50362697fdff26c6f7dcb12d7">pkcs11h_certificate_freeCertificateIdList</a> (IN const <a class="el" href="structpkcs11h__certificate__id__list__s.html">pkcs11h_certificate_id_list_t</a> cert_id_list)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free certificate_id list.  <a href="#ga636c90a50362697fdff26c6f7dcb12d7"></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__certificate.html#gad4b5312400d48e7e3e3e0c806383aa51">pkcs11h_certificate_enumTokenCertificateIds</a> (IN const <a class="el" href="structpkcs11h__token__id__s.html">pkcs11h_token_id_t</a> token_id, IN const unsigned method, IN void *const user_data, IN const unsigned mask_prompt, OUT <a class="el" href="structpkcs11h__certificate__id__list__s.html">pkcs11h_certificate_id_list_t</a> *const p_cert_id_issuers_list, OUT <a class="el" href="structpkcs11h__certificate__id__list__s.html">pkcs11h_certificate_id_list_t</a> *const p_cert_id_end_list)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumerate available certificates on specific token.  <a href="#gad4b5312400d48e7e3e3e0c806383aa51"></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__certificate.html#ga201b7a5e7d223dbc8a92f7fa9740f7bd">pkcs11h_certificate_enumCertificateIds</a> (IN const unsigned method, IN void *const user_data, IN const unsigned mask_prompt, OUT <a class="el" href="structpkcs11h__certificate__id__list__s.html">pkcs11h_certificate_id_list_t</a> *const p_cert_id_issuers_list, OUT <a class="el" href="structpkcs11h__certificate__id__list__s.html">pkcs11h_certificate_id_list_t</a> *const p_cert_id_end_list)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumerate available certificates.  <a href="#ga201b7a5e7d223dbc8a92f7fa9740f7bd"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>X.509 certificate interface, provides signature and decryption. </p>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga822d9d402b27c6e4218d90c3b0645936"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_create" ref="ga822d9d402b27c6e4218d90c3b0645936" args="(IN const pkcs11h_certificate_id_t certificate_id, IN void *const user_data, IN const unsigned mask_prompt, IN const int pin_cache_period, OUT pkcs11h_certificate_t *const p_certificate)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_create </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="structpkcs11h__certificate__id__s.html">pkcs11h_certificate_id_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN void *const &nbsp;</td>
          <td class="paramname"> <em>user_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const unsigned&nbsp;</td>
          <td class="paramname"> <em>mask_prompt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const int&nbsp;</td>
          <td class="paramname"> <em>pin_cache_period</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">OUT <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a> *const &nbsp;</td>
          <td class="paramname"> <em>p_certificate</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a certificate object out of certificate_id. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate_id</em>&nbsp;</td><td>Certificate id object to be based on. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Optional user data, to be passed to hooks. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mask_prompt</em>&nbsp;</td><td>Allow prompt <a class="el" href="group__PKCS11H__PROMPT__MASK.html">PKCS11H_PROMPT_MASK</a>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pin_cache_period</em>&nbsp;</td><td>Session specific cache period. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p_certificate</em>&nbsp;</td><td>Receives certificate object. </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>Note:</b></dt><dd>Caller must free result. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__pkcs11h__certificate.html#gad75e25a67234b34e0101ba0d21206820" title="Free certificate object.">pkcs11h_certificate_freeCertificate()</a>. </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>The certificate id object may not specify the certificate blob. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test-certificate_8c-example.html#a19">test-certificate.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaf5932bca5a0306b9c06f270aff7ed42a"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_decrypt" ref="gaf5932bca5a0306b9c06f270aff7ed42a" args="(IN const pkcs11h_certificate_t certificate, IN const CK_MECHANISM_TYPE mech_type, IN const unsigned char *const source, IN const size_t source_size, OUT unsigned char *const target, IN OUT size_t *const p_target_size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_decrypt </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const CK_MECHANISM_TYPE&nbsp;</td>
          <td class="paramname"> <em>mech_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const unsigned char *const &nbsp;</td>
          <td class="paramname"> <em>source</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const size_t&nbsp;</td>
          <td class="paramname"> <em>source_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">OUT unsigned char *const &nbsp;</td>
          <td class="paramname"> <em>target</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN OUT size_t *const &nbsp;</td>
          <td class="paramname"> <em>p_target_size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Decrypt data. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>Certificate object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mech_type</em>&nbsp;</td><td>PKCS#11 mechanism. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>Buffer to sign. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>source_size</em>&nbsp;</td><td>Buffer size. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td>Target buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p_target_size</em>&nbsp;</td><td>Target buffer size. </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>target may be NULL to get size. </dd></dl>
<dl class="attention"><dt><b>Attention:</b></dt><dd>When using in threaded environment session must be locked. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__pkcs11h__certificate.html#gaf8ba828e440353d963953bb758ca9b90" title="Lock session for threded environment.">pkcs11h_certificate_lockSession()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="gab438e5f11160e5ea7fe0a2b4b38644a3"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_decryptAny" ref="gab438e5f11160e5ea7fe0a2b4b38644a3" args="(IN const pkcs11h_certificate_t certificate, IN const CK_MECHANISM_TYPE mech_type, IN const unsigned char *const source, IN const size_t source_size, OUT unsigned char *const target, IN OUT size_t *const p_target_size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_decryptAny </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const CK_MECHANISM_TYPE&nbsp;</td>
          <td class="paramname"> <em>mech_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const unsigned char *const &nbsp;</td>
          <td class="paramname"> <em>source</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const size_t&nbsp;</td>
          <td class="paramname"> <em>source_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">OUT unsigned char *const &nbsp;</td>
          <td class="paramname"> <em>target</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN OUT size_t *const &nbsp;</td>
          <td class="paramname"> <em>p_target_size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Decrypt data mechanism determined by key attributes. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>Certificate object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mech_type</em>&nbsp;</td><td>PKCS#11 mechanism. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>Buffer to sign. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>source_size</em>&nbsp;</td><td>Buffer size. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td>Target buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p_target_size</em>&nbsp;</td><td>Target buffer size. </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>target may be NULL to get size. </dd></dl>
<dl class="attention"><dt><b>Attention:</b></dt><dd>When using in threaded environment session must be locked. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__pkcs11h__certificate.html#gaf8ba828e440353d963953bb758ca9b90" title="Lock session for threded environment.">pkcs11h_certificate_lockSession()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga3902be4f775839d121324c3239923aa3"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_deserializeCertificateId" ref="ga3902be4f775839d121324c3239923aa3" args="(OUT pkcs11h_certificate_id_t *const p_certificate_id, IN const char *const sz)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_deserializeCertificateId </td>
          <td>(</td>
          <td class="paramtype">OUT <a class="el" href="structpkcs11h__certificate__id__s.html">pkcs11h_certificate_id_t</a> *const &nbsp;</td>
          <td class="paramname"> <em>p_certificate_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const char *const &nbsp;</td>
          <td class="paramname"> <em>sz</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Deserialize certificate_id out of string. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>p_certificate_id</em>&nbsp;</td><td>id. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sz</em>&nbsp;</td><td>Inut string </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>Caller must free result. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__pkcs11h__certificate.html#ga90148440146c44a0bc34320990bc9324" title="Free certificate_id object.">pkcs11h_certificate_freeCertificateId()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="gab55b1cc715b67dac35e6251b6949e2ed"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_duplicateCertificateId" ref="gab55b1cc715b67dac35e6251b6949e2ed" args="(OUT pkcs11h_certificate_id_t *const to, IN const pkcs11h_certificate_id_t from)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_duplicateCertificateId </td>
          <td>(</td>
          <td class="paramtype">OUT <a class="el" href="structpkcs11h__certificate__id__s.html">pkcs11h_certificate_id_t</a> *const &nbsp;</td>
          <td class="paramname"> <em>to</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const <a class="el" href="structpkcs11h__certificate__id__s.html">pkcs11h_certificate_id_t</a>&nbsp;</td>
          <td class="paramname"> <em>from</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Duplicate certificate_id object. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>to</em>&nbsp;</td><td>Target. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>from</em>&nbsp;</td><td>Source. </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>Caller must free result. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__pkcs11h__certificate.html#ga90148440146c44a0bc34320990bc9324" title="Free certificate_id object.">pkcs11h_certificate_freeCertificateId()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="gaa3a990db0a84067ff09d152e632a8e6f"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_ensureCertificateAccess" ref="gaa3a990db0a84067ff09d152e632a8e6f" args="(IN const pkcs11h_certificate_t certificate)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_ensureCertificateAccess </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Ensure certificate is accessible. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>Certificate object. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>

</div>
</div>
<a class="anchor" id="gab50752c5fc26181eea30e1bf499fa0e0"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_ensureKeyAccess" ref="gab50752c5fc26181eea30e1bf499fa0e0" args="(IN const pkcs11h_certificate_t certificate)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_ensureKeyAccess </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Ensure key is accessible. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>Certificate object. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>

</div>
</div>
<a class="anchor" id="ga201b7a5e7d223dbc8a92f7fa9740f7bd"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_enumCertificateIds" ref="ga201b7a5e7d223dbc8a92f7fa9740f7bd" args="(IN const unsigned method, IN void *const user_data, IN const unsigned mask_prompt, OUT pkcs11h_certificate_id_list_t *const p_cert_id_issuers_list, OUT pkcs11h_certificate_id_list_t *const p_cert_id_end_list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_enumCertificateIds </td>
          <td>(</td>
          <td class="paramtype">IN const unsigned&nbsp;</td>
          <td class="paramname"> <em>method</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN void *const &nbsp;</td>
          <td class="paramname"> <em>user_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const unsigned&nbsp;</td>
          <td class="paramname"> <em>mask_prompt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">OUT <a class="el" href="structpkcs11h__certificate__id__list__s.html">pkcs11h_certificate_id_list_t</a> *const &nbsp;</td>
          <td class="paramname"> <em>p_cert_id_issuers_list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">OUT <a class="el" href="structpkcs11h__certificate__id__list__s.html">pkcs11h_certificate_id_list_t</a> *const &nbsp;</td>
          <td class="paramname"> <em>p_cert_id_end_list</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Enumerate available certificates. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>method</em>&nbsp;</td><td>How to fetch certificates <a class="el" href="group__PKCS11H__ENUM__METHOD.html">PKCS11H_ENUM_METHOD</a>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Some user specific data. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mask_prompt</em>&nbsp;</td><td>Allow prompt <a class="el" href="group__PKCS11H__PROMPT__MASK.html">PKCS11H_PROMPT_MASK</a>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p_cert_id_issuers_list</em>&nbsp;</td><td>Receives issues list. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p_cert_id_end_list</em>&nbsp;</td><td>Receives end certificates list. </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>Note:</b></dt><dd>p_cert_id_issuers_list may be NULL. </dd>
<dd>
Caller must free result. </dd>
<dd>
This function will likely take long time. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__pkcs11h__certificate.html#ga636c90a50362697fdff26c6f7dcb12d7" title="Free certificate_id list.">pkcs11h_certificate_freeCertificateIdList()</a>. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test-certificate_8c-example.html#a12">test-certificate.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gad4b5312400d48e7e3e3e0c806383aa51"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_enumTokenCertificateIds" ref="gad4b5312400d48e7e3e3e0c806383aa51" args="(IN const pkcs11h_token_id_t token_id, IN const unsigned method, IN void *const user_data, IN const unsigned mask_prompt, OUT pkcs11h_certificate_id_list_t *const p_cert_id_issuers_list, OUT pkcs11h_certificate_id_list_t *const p_cert_id_end_list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_enumTokenCertificateIds </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="structpkcs11h__token__id__s.html">pkcs11h_token_id_t</a>&nbsp;</td>
          <td class="paramname"> <em>token_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const unsigned&nbsp;</td>
          <td class="paramname"> <em>method</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN void *const &nbsp;</td>
          <td class="paramname"> <em>user_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const unsigned&nbsp;</td>
          <td class="paramname"> <em>mask_prompt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">OUT <a class="el" href="structpkcs11h__certificate__id__list__s.html">pkcs11h_certificate_id_list_t</a> *const &nbsp;</td>
          <td class="paramname"> <em>p_cert_id_issuers_list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">OUT <a class="el" href="structpkcs11h__certificate__id__list__s.html">pkcs11h_certificate_id_list_t</a> *const &nbsp;</td>
          <td class="paramname"> <em>p_cert_id_end_list</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Enumerate available certificates on specific token. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>token_id</em>&nbsp;</td><td>Token id to enum. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>method</em>&nbsp;</td><td>How to fetch certificates <a class="el" href="group__PKCS11H__ENUM__METHOD.html">PKCS11H_ENUM_METHOD</a>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Some user specific data. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mask_prompt</em>&nbsp;</td><td>Allow prompt <a class="el" href="group__PKCS11H__PROMPT__MASK.html">PKCS11H_PROMPT_MASK</a>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p_cert_id_issuers_list</em>&nbsp;</td><td>Receives issues list. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p_cert_id_end_list</em>&nbsp;</td><td>Receives end certificates list. </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>p_cert_id_issuers_list may be NULL. </dd>
<dd>
Caller must free result. </dd>
<dd>
This function will likely take long time. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__pkcs11h__certificate.html#ga636c90a50362697fdff26c6f7dcb12d7" title="Free certificate_id list.">pkcs11h_certificate_freeCertificateIdList()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="gad75e25a67234b34e0101ba0d21206820"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_freeCertificate" ref="gad75e25a67234b34e0101ba0d21206820" args="(IN pkcs11h_certificate_t certificate)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_freeCertificate </td>
          <td>(</td>
          <td class="paramtype">IN <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Free certificate object. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>Certificate object. </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-certificate_8c-example.html#a21">test-certificate.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga90148440146c44a0bc34320990bc9324"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_freeCertificateId" ref="ga90148440146c44a0bc34320990bc9324" args="(IN pkcs11h_certificate_id_t certificate_id)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_freeCertificateId </td>
          <td>(</td>
          <td class="paramtype">IN <a class="el" href="structpkcs11h__certificate__id__s.html">pkcs11h_certificate_id_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate_id</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Free certificate_id object. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate_id</em>&nbsp;</td><td>Certificate id. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>

</div>
</div>
<a class="anchor" id="ga636c90a50362697fdff26c6f7dcb12d7"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_freeCertificateIdList" ref="ga636c90a50362697fdff26c6f7dcb12d7" args="(IN const pkcs11h_certificate_id_list_t cert_id_list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_freeCertificateIdList </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="structpkcs11h__certificate__id__list__s.html">pkcs11h_certificate_id_list_t</a>&nbsp;</td>
          <td class="paramname"> <em>cert_id_list</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Free certificate_id list. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>cert_id_list</em>&nbsp;</td><td>List. </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-certificate_8c-example.html#a18">test-certificate.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaa1dc1e528bccfb33ca5284124e93fa56"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_getCertificateBlob" ref="gaa1dc1e528bccfb33ca5284124e93fa56" args="(IN const pkcs11h_certificate_t certificate, OUT unsigned char *const certificate_blob, IN OUT size_t *const p_certificate_blob_size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_getCertificateBlob </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">OUT unsigned char *const &nbsp;</td>
          <td class="paramname"> <em>certificate_blob</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN OUT size_t *const &nbsp;</td>
          <td class="paramname"> <em>p_certificate_blob_size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the certificate blob out of the certificate object. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>Certificate object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>certificate_blob</em>&nbsp;</td><td>Buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p_certificate_blob_size</em>&nbsp;</td><td>Buffer size. </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>certificate_blob may be NULL in order to get size. </dd></dl>

</div>
</div>
<a class="anchor" id="gaacb49067c57239fd7090dd908be16f2f"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_getCertificateId" ref="gaacb49067c57239fd7090dd908be16f2f" args="(IN const pkcs11h_certificate_t certificate, OUT pkcs11h_certificate_id_t *const p_certificate_id)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_getCertificateId </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">OUT <a class="el" href="structpkcs11h__certificate__id__s.html">pkcs11h_certificate_id_t</a> *const &nbsp;</td>
          <td class="paramname"> <em>p_certificate_id</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get certifiate id object out of a certifiate. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>Certificate object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p_certificate_id</em>&nbsp;</td><td>Certificate id object pointer. </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>Caller must free result. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__pkcs11h__certificate.html#ga90148440146c44a0bc34320990bc9324" title="Free certificate_id object.">pkcs11h_certificate_freeCertificateId()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga0263a20909fd1d0ef0c7b773aeabe5e7"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_getPromptMask" ref="ga0263a20909fd1d0ef0c7b773aeabe5e7" args="(IN const pkcs11h_certificate_t certificate)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned pkcs11h_certificate_getPromptMask </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Extract user data out of certificate. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>Certificate object. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Mask prompt <a class="el" href="group__PKCS11H__PROMPT__MASK.html">PKCS11H_PROMPT_MASK</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga70ca903795764bbf0366ba9b64057705"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_getUserData" ref="ga70ca903795764bbf0366ba9b64057705" args="(IN const pkcs11h_certificate_t certificate)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* pkcs11h_certificate_getUserData </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Extract user data out of certificate. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>Certificate object. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>User data. </dd></dl>

</div>
</div>
<a class="anchor" id="gaf8ba828e440353d963953bb758ca9b90"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_lockSession" ref="gaf8ba828e440353d963953bb758ca9b90" args="(IN const pkcs11h_certificate_t certificate)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_lockSession </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Lock session for threded environment. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>Certificate object. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>This must be called on threaded environment, so both calls to _sign and _signRecover and _decrypt will be from the same source. Failing to lock session, will result with CKR_OPERATION_ACTIVE if provider is good, or unexpected behaviour for others. </dd>
<dd>
It is save to call this also in none threaded environment, it will do nothing. Call this also if you are doing one stage operation, since locking is not done by method. </dd></dl>

</div>
</div>
<a class="anchor" id="ga4534e579fdd21c5a4b5a4c315b96f297"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_releaseSession" ref="ga4534e579fdd21c5a4b5a4c315b96f297" args="(IN const pkcs11h_certificate_t certificate)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_releaseSession </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Releases session lock. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>Certificate object. </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__certificate.html#gaf8ba828e440353d963953bb758ca9b90" title="Lock session for threded environment.">pkcs11h_certificate_lockSession()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="gaa0ca330ab07be6fb42e454e87a514e64"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_serializeCertificateId" ref="gaa0ca330ab07be6fb42e454e87a514e64" args="(OUT char *const sz, IN OUT size_t *max, IN const pkcs11h_certificate_id_t certificate_id)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_serializeCertificateId </td>
          <td>(</td>
          <td class="paramtype">OUT char *const &nbsp;</td>
          <td class="paramname"> <em>sz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN OUT size_t *&nbsp;</td>
          <td class="paramname"> <em>max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const <a class="el" href="structpkcs11h__certificate__id__s.html">pkcs11h_certificate_id_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate_id</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Serialize certificate_id into a string. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>sz</em>&nbsp;</td><td>Output string. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>max</em>&nbsp;</td><td>Max buffer size. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>certificate_id</em>&nbsp;</td><td>id to serialize </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>sz may be NULL in order to get size. </dd></dl>

</div>
</div>
<a class="anchor" id="gad2b6ef5f77d7b80c38d78ac8e77c288c"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_setCertificateIdCertificateBlob" ref="gad2b6ef5f77d7b80c38d78ac8e77c288c" args="(IN const pkcs11h_certificate_id_t certificate_id, IN const unsigned char *const blob, IN const size_t blob_size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_setCertificateIdCertificateBlob </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="structpkcs11h__certificate__id__s.html">pkcs11h_certificate_id_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const unsigned char *const &nbsp;</td>
          <td class="paramname"> <em>blob</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const size_t&nbsp;</td>
          <td class="paramname"> <em>blob_size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sets internal certificate_id blob. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate_id</em>&nbsp;</td><td>Certificate id object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>blob</em>&nbsp;</td><td>Certificate blob. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>blob_size</em>&nbsp;</td><td>Certificate blob size. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>CK_RV. </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>Useful to set after deserialization so certificate is available and not read from token. </dd></dl>

</div>
</div>
<a class="anchor" id="ga978ba4f6a8574b1cf55adbafcebb0585"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_setPromptMask" ref="ga978ba4f6a8574b1cf55adbafcebb0585" args="(IN const pkcs11h_certificate_t certificate, IN const unsigned mask_prompt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pkcs11h_certificate_setPromptMask </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const unsigned&nbsp;</td>
          <td class="paramname"> <em>mask_prompt</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Extract user data out of certificate. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>Certificate object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mask_prompt</em>&nbsp;</td><td>Allow prompt <a class="el" href="group__PKCS11H__PROMPT__MASK.html">PKCS11H_PROMPT_MASK</a>. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga935d5c8fb641723783061d3cdee0ead5"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_setUserData" ref="ga935d5c8fb641723783061d3cdee0ead5" args="(IN const pkcs11h_certificate_t certificate, IN void *const user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pkcs11h_certificate_setUserData </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN void *const &nbsp;</td>
          <td class="paramname"> <em>user_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>Extract user data out of certificate. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>Certificate object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>Optional user data, to be passed to hooks. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gad239cf8d4c37fe8fa30524c132fdf844"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_sign" ref="gad239cf8d4c37fe8fa30524c132fdf844" args="(IN const pkcs11h_certificate_t certificate, IN const CK_MECHANISM_TYPE mech_type, IN const unsigned char *const source, IN const size_t source_size, OUT unsigned char *const target, IN OUT size_t *const p_target_size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_sign </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const CK_MECHANISM_TYPE&nbsp;</td>
          <td class="paramname"> <em>mech_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const unsigned char *const &nbsp;</td>
          <td class="paramname"> <em>source</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const size_t&nbsp;</td>
          <td class="paramname"> <em>source_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">OUT unsigned char *const &nbsp;</td>
          <td class="paramname"> <em>target</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN OUT size_t *const &nbsp;</td>
          <td class="paramname"> <em>p_target_size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sign data. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>Certificate object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mech_type</em>&nbsp;</td><td>PKCS#11 mechanism. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>Buffer to sign. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>source_size</em>&nbsp;</td><td>Buffer size. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td>Target buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p_target_size</em>&nbsp;</td><td>Target buffer size. </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>target may be NULL to get size. </dd></dl>
<dl class="attention"><dt><b>Attention:</b></dt><dd>When using in threaded environment session must be locked. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__pkcs11h__certificate.html#gaf8ba828e440353d963953bb758ca9b90" title="Lock session for threded environment.">pkcs11h_certificate_lockSession()</a>. </dd>
<dd>
<a class="el" href="group__pkcs11h__certificate.html#ga29e0a4ec9ec5b65f2dd5f9418ce44d01" title="Sign data mechanism determined by key attributes.">pkcs11h_certificate_signAny()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga29e0a4ec9ec5b65f2dd5f9418ce44d01"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_signAny" ref="ga29e0a4ec9ec5b65f2dd5f9418ce44d01" args="(IN const pkcs11h_certificate_t certificate, IN const CK_MECHANISM_TYPE mech_type, IN const unsigned char *const source, IN const size_t source_size, OUT unsigned char *const target, IN OUT size_t *const p_target_size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_signAny </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const CK_MECHANISM_TYPE&nbsp;</td>
          <td class="paramname"> <em>mech_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const unsigned char *const &nbsp;</td>
          <td class="paramname"> <em>source</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const size_t&nbsp;</td>
          <td class="paramname"> <em>source_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">OUT unsigned char *const &nbsp;</td>
          <td class="paramname"> <em>target</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN OUT size_t *const &nbsp;</td>
          <td class="paramname"> <em>p_target_size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sign data mechanism determined by key attributes. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>Certificate object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mech_type</em>&nbsp;</td><td>PKCS#11 mechanism. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>Buffer to sign. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>source_size</em>&nbsp;</td><td>Buffer size. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td>Target buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p_target_size</em>&nbsp;</td><td>Target buffer size. </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>target may be NULL to get size. </dd></dl>
<dl class="attention"><dt><b>Attention:</b></dt><dd>When using in threaded environment session must be locked. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__pkcs11h__certificate.html#gaf8ba828e440353d963953bb758ca9b90" title="Lock session for threded environment.">pkcs11h_certificate_lockSession()</a>. </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test-certificate_8c-example.html#a3">test-certificate.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaa2e1944f12d98e58b7bfd7466a88148b"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_signRecover" ref="gaa2e1944f12d98e58b7bfd7466a88148b" args="(IN const pkcs11h_certificate_t certificate, IN const CK_MECHANISM_TYPE mech_type, IN const unsigned char *const source, IN const size_t source_size, OUT unsigned char *const target, IN OUT size_t *const p_target_size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_signRecover </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const CK_MECHANISM_TYPE&nbsp;</td>
          <td class="paramname"> <em>mech_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const unsigned char *const &nbsp;</td>
          <td class="paramname"> <em>source</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const size_t&nbsp;</td>
          <td class="paramname"> <em>source_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">OUT unsigned char *const &nbsp;</td>
          <td class="paramname"> <em>target</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN OUT size_t *const &nbsp;</td>
          <td class="paramname"> <em>p_target_size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sign data. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>Certificate object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mech_type</em>&nbsp;</td><td>PKCS#11 mechanism. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>Buffer to sign. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>source_size</em>&nbsp;</td><td>Buffer size. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td>Target buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p_target_size</em>&nbsp;</td><td>Target buffer size. </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>target may be NULL to get size. </dd></dl>
<dl class="attention"><dt><b>Attention:</b></dt><dd>When using in threaded environment session must be locked. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__pkcs11h__certificate.html#gaf8ba828e440353d963953bb758ca9b90" title="Lock session for threded environment.">pkcs11h_certificate_lockSession()</a>. </dd>
<dd>
<a class="el" href="group__pkcs11h__certificate.html#ga29e0a4ec9ec5b65f2dd5f9418ce44d01" title="Sign data mechanism determined by key attributes.">pkcs11h_certificate_signAny()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga4a8fea6b3f744408cb7371462fcaf53d"></a><!-- doxytag: member="pkcs11h&#45;certificate.h::pkcs11h_certificate_unwrap" ref="ga4a8fea6b3f744408cb7371462fcaf53d" args="(IN const pkcs11h_certificate_t certificate, IN const CK_MECHANISM_TYPE mech_type, IN const unsigned char *const source, IN const size_t source_size, OUT unsigned char *const target, IN OUT size_t *const p_target_size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CK_RV pkcs11h_certificate_unwrap </td>
          <td>(</td>
          <td class="paramtype">IN const <a class="el" href="group__pkcs11h__certificate.html#ga7cb08e46261d4454b2330c7173db88b6">pkcs11h_certificate_t</a>&nbsp;</td>
          <td class="paramname"> <em>certificate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const CK_MECHANISM_TYPE&nbsp;</td>
          <td class="paramname"> <em>mech_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const unsigned char *const &nbsp;</td>
          <td class="paramname"> <em>source</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN const size_t&nbsp;</td>
          <td class="paramname"> <em>source_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">OUT unsigned char *const &nbsp;</td>
          <td class="paramname"> <em>target</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IN OUT size_t *const &nbsp;</td>
          <td class="paramname"> <em>p_target_size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Decrypt data. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>certificate</em>&nbsp;</td><td>Certificate object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mech_type</em>&nbsp;</td><td>PKCS#11 mechanism. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>Buffer to sign. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>source_size</em>&nbsp;</td><td>Buffer size. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td>Target buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p_target_size</em>&nbsp;</td><td>Target buffer size. </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>target may be NULL to get size. </dd></dl>
<dl class="attention"><dt><b>Attention:</b></dt><dd>When using in threaded environment session must be locked. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__pkcs11h__certificate.html#gaf8ba828e440353d963953bb758ca9b90" title="Lock session for threded environment.">pkcs11h_certificate_lockSession()</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>