<!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 Page</span></a></li> <li><a href="pages.html"><span>Related 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 </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"> </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 </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"> </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 </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"> </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> * </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"> </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 * </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"> </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> * </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </td><td class="mdescRight">Free certificate object. <a href="#gad75e25a67234b34e0101ba0d21206820"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">CK_RV </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"> </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 </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"> </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 </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"> </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 * </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </td><td class="mdescRight">Releases session lock. <a href="#ga4534e579fdd21c5a4b5a4c315b96f297"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">CK_RV </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"> </td><td class="mdescRight">Sign data. <a href="#gad239cf8d4c37fe8fa30524c132fdf844"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">CK_RV </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"> </td><td class="mdescRight">Sign data. <a href="#gaa2e1944f12d98e58b7bfd7466a88148b"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">CK_RV </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"> </td><td class="mdescRight">Decrypt data. <a href="#gaf5932bca5a0306b9c06f270aff7ed42a"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">CK_RV </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"> </td><td class="mdescRight">Decrypt data. <a href="#ga4a8fea6b3f744408cb7371462fcaf53d"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">CK_RV </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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-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> </td> <td class="paramname"> <em>certificate_id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN void *const </td> <td class="paramname"> <em>user_data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const unsigned </td> <td class="paramname"> <em>mask_prompt</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const int </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 </td> <td class="paramname"> <em>p_certificate</em></td><td> </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> </td><td>Certificate id object to be based on. </td></tr> <tr><td valign="top"></td><td valign="top"><em>user_data</em> </td><td>Optional user data, to be passed to hooks. </td></tr> <tr><td valign="top"></td><td valign="top"><em>mask_prompt</em> </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> </td><td>Session specific cache period. </td></tr> <tr><td valign="top"></td><td valign="top"><em>p_certificate</em> </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-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> </td> <td class="paramname"> <em>certificate</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const CK_MECHANISM_TYPE </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 </td> <td class="paramname"> <em>source</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const size_t </td> <td class="paramname"> <em>source_size</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">OUT unsigned char *const </td> <td class="paramname"> <em>target</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN OUT size_t *const </td> <td class="paramname"> <em>p_target_size</em></td><td> </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> </td><td>Certificate object. </td></tr> <tr><td valign="top"></td><td valign="top"><em>mech_type</em> </td><td>PKCS#11 mechanism. </td></tr> <tr><td valign="top"></td><td valign="top"><em>source</em> </td><td>Buffer to sign. </td></tr> <tr><td valign="top"></td><td valign="top"><em>source_size</em> </td><td>Buffer size. </td></tr> <tr><td valign="top"></td><td valign="top"><em>target</em> </td><td>Target buffer. </td></tr> <tr><td valign="top"></td><td valign="top"><em>p_target_size</em> </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-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> </td> <td class="paramname"> <em>certificate</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const CK_MECHANISM_TYPE </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 </td> <td class="paramname"> <em>source</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const size_t </td> <td class="paramname"> <em>source_size</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">OUT unsigned char *const </td> <td class="paramname"> <em>target</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN OUT size_t *const </td> <td class="paramname"> <em>p_target_size</em></td><td> </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> </td><td>Certificate object. </td></tr> <tr><td valign="top"></td><td valign="top"><em>mech_type</em> </td><td>PKCS#11 mechanism. </td></tr> <tr><td valign="top"></td><td valign="top"><em>source</em> </td><td>Buffer to sign. </td></tr> <tr><td valign="top"></td><td valign="top"><em>source_size</em> </td><td>Buffer size. </td></tr> <tr><td valign="top"></td><td valign="top"><em>target</em> </td><td>Target buffer. </td></tr> <tr><td valign="top"></td><td valign="top"><em>p_target_size</em> </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-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 </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 </td> <td class="paramname"> <em>sz</em></td><td> </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> </td><td>id. </td></tr> <tr><td valign="top"></td><td valign="top"><em>sz</em> </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-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 </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> </td> <td class="paramname"> <em>from</em></td><td> </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> </td><td>Target. </td></tr> <tr><td valign="top"></td><td valign="top"><em>from</em> </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-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> </td> <td class="paramname"> <em>certificate</em></td> <td> ) </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> </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-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> </td> <td class="paramname"> <em>certificate</em></td> <td> ) </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> </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-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 </td> <td class="paramname"> <em>method</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN void *const </td> <td class="paramname"> <em>user_data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const unsigned </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 </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 </td> <td class="paramname"> <em>p_cert_id_end_list</em></td><td> </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> </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> </td><td>Some user specific data. </td></tr> <tr><td valign="top"></td><td valign="top"><em>mask_prompt</em> </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> </td><td>Receives issues list. </td></tr> <tr><td valign="top"></td><td valign="top"><em>p_cert_id_end_list</em> </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-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> </td> <td class="paramname"> <em>token_id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const unsigned </td> <td class="paramname"> <em>method</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN void *const </td> <td class="paramname"> <em>user_data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const unsigned </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 </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 </td> <td class="paramname"> <em>p_cert_id_end_list</em></td><td> </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> </td><td>Token id to enum. </td></tr> <tr><td valign="top"></td><td valign="top"><em>method</em> </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> </td><td>Some user specific data. </td></tr> <tr><td valign="top"></td><td valign="top"><em>mask_prompt</em> </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> </td><td>Receives issues list. </td></tr> <tr><td valign="top"></td><td valign="top"><em>p_cert_id_end_list</em> </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-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> </td> <td class="paramname"> <em>certificate</em></td> <td> ) </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> </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-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> </td> <td class="paramname"> <em>certificate_id</em></td> <td> ) </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> </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-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> </td> <td class="paramname"> <em>cert_id_list</em></td> <td> ) </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> </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-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> </td> <td class="paramname"> <em>certificate</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">OUT unsigned char *const </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 </td> <td class="paramname"> <em>p_certificate_blob_size</em></td><td> </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> </td><td>Certificate object. </td></tr> <tr><td valign="top"></td><td valign="top"><em>certificate_blob</em> </td><td>Buffer. </td></tr> <tr><td valign="top"></td><td valign="top"><em>p_certificate_blob_size</em> </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-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> </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 </td> <td class="paramname"> <em>p_certificate_id</em></td><td> </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> </td><td>Certificate object. </td></tr> <tr><td valign="top"></td><td valign="top"><em>p_certificate_id</em> </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-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> </td> <td class="paramname"> <em>certificate</em></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> </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-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> </td> <td class="paramname"> <em>certificate</em></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> </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-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> </td> <td class="paramname"> <em>certificate</em></td> <td> ) </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> </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-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> </td> <td class="paramname"> <em>certificate</em></td> <td> ) </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> </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-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 </td> <td class="paramname"> <em>sz</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN OUT size_t * </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> </td> <td class="paramname"> <em>certificate_id</em></td><td> </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> </td><td>Output string. </td></tr> <tr><td valign="top"></td><td valign="top"><em>max</em> </td><td>Max buffer size. </td></tr> <tr><td valign="top"></td><td valign="top"><em>certificate_id</em> </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-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> </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 </td> <td class="paramname"> <em>blob</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const size_t </td> <td class="paramname"> <em>blob_size</em></td><td> </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> </td><td>Certificate id object. </td></tr> <tr><td valign="top"></td><td valign="top"><em>blob</em> </td><td>Certificate blob. </td></tr> <tr><td valign="top"></td><td valign="top"><em>blob_size</em> </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-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> </td> <td class="paramname"> <em>certificate</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const unsigned </td> <td class="paramname"> <em>mask_prompt</em></td><td> </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> </td><td>Certificate object. </td></tr> <tr><td valign="top"></td><td valign="top"><em>mask_prompt</em> </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-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> </td> <td class="paramname"> <em>certificate</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN void *const </td> <td class="paramname"> <em>user_data</em></td><td> </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> </td><td>Certificate object. </td></tr> <tr><td valign="top"></td><td valign="top"><em>user_data</em> </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-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> </td> <td class="paramname"> <em>certificate</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const CK_MECHANISM_TYPE </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 </td> <td class="paramname"> <em>source</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const size_t </td> <td class="paramname"> <em>source_size</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">OUT unsigned char *const </td> <td class="paramname"> <em>target</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN OUT size_t *const </td> <td class="paramname"> <em>p_target_size</em></td><td> </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> </td><td>Certificate object. </td></tr> <tr><td valign="top"></td><td valign="top"><em>mech_type</em> </td><td>PKCS#11 mechanism. </td></tr> <tr><td valign="top"></td><td valign="top"><em>source</em> </td><td>Buffer to sign. </td></tr> <tr><td valign="top"></td><td valign="top"><em>source_size</em> </td><td>Buffer size. </td></tr> <tr><td valign="top"></td><td valign="top"><em>target</em> </td><td>Target buffer. </td></tr> <tr><td valign="top"></td><td valign="top"><em>p_target_size</em> </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-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> </td> <td class="paramname"> <em>certificate</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const CK_MECHANISM_TYPE </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 </td> <td class="paramname"> <em>source</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const size_t </td> <td class="paramname"> <em>source_size</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">OUT unsigned char *const </td> <td class="paramname"> <em>target</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN OUT size_t *const </td> <td class="paramname"> <em>p_target_size</em></td><td> </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> </td><td>Certificate object. </td></tr> <tr><td valign="top"></td><td valign="top"><em>mech_type</em> </td><td>PKCS#11 mechanism. </td></tr> <tr><td valign="top"></td><td valign="top"><em>source</em> </td><td>Buffer to sign. </td></tr> <tr><td valign="top"></td><td valign="top"><em>source_size</em> </td><td>Buffer size. </td></tr> <tr><td valign="top"></td><td valign="top"><em>target</em> </td><td>Target buffer. </td></tr> <tr><td valign="top"></td><td valign="top"><em>p_target_size</em> </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-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> </td> <td class="paramname"> <em>certificate</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const CK_MECHANISM_TYPE </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 </td> <td class="paramname"> <em>source</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const size_t </td> <td class="paramname"> <em>source_size</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">OUT unsigned char *const </td> <td class="paramname"> <em>target</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN OUT size_t *const </td> <td class="paramname"> <em>p_target_size</em></td><td> </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> </td><td>Certificate object. </td></tr> <tr><td valign="top"></td><td valign="top"><em>mech_type</em> </td><td>PKCS#11 mechanism. </td></tr> <tr><td valign="top"></td><td valign="top"><em>source</em> </td><td>Buffer to sign. </td></tr> <tr><td valign="top"></td><td valign="top"><em>source_size</em> </td><td>Buffer size. </td></tr> <tr><td valign="top"></td><td valign="top"><em>target</em> </td><td>Target buffer. </td></tr> <tr><td valign="top"></td><td valign="top"><em>p_target_size</em> </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-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> </td> <td class="paramname"> <em>certificate</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const CK_MECHANISM_TYPE </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 </td> <td class="paramname"> <em>source</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN const size_t </td> <td class="paramname"> <em>source_size</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">OUT unsigned char *const </td> <td class="paramname"> <em>target</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">IN OUT size_t *const </td> <td class="paramname"> <em>p_target_size</em></td><td> </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> </td><td>Certificate object. </td></tr> <tr><td valign="top"></td><td valign="top"><em>mech_type</em> </td><td>PKCS#11 mechanism. </td></tr> <tr><td valign="top"></td><td valign="top"><em>source</em> </td><td>Buffer to sign. </td></tr> <tr><td valign="top"></td><td valign="top"><em>source_size</em> </td><td>Buffer size. </td></tr> <tr><td valign="top"></td><td valign="top"><em>target</em> </td><td>Target buffer. </td></tr> <tr><td valign="top"></td><td valign="top"><em>p_target_size</em> </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 <alon.barlev@gmail.com></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>