Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 2bb02846ae452de27c23cd6e903775d3 > files > 17

libp11-devel-0.2.7-2.fc14.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/xhtml;charset=UTF-8"/>
<title>libp11: libp11.h File Reference</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.2-20100208 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>libp11.h File Reference</h1>
<p>libp11 header file  
<a href="#_details">More...</a></p>
<code>#include &lt;openssl/bio.h&gt;</code><br/>
<code>#include &lt;openssl/err.h&gt;</code><br/>
<code>#include &lt;openssl/x509.h&gt;</code><br/>

<p><a href="libp11_8h_source.html">Go to the source code of this file.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPKCS11__key__st.html">PKCS11_key_st</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PKCS11 key object (public or private).  <a href="structPKCS11__key__st.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="structPKCS11__cert__st.html">PKCS11_cert_st</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PKCS11 certificate object.  <a href="structPKCS11__cert__st.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="structPKCS11__token__st.html">PKCS11_token_st</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PKCS11 token: smart card or USB key.  <a href="structPKCS11__token__st.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="structPKCS11__slot__st.html">PKCS11_slot_st</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PKCS11 slot: card reader.  <a href="structPKCS11__slot__st.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="structPKCS11__ctx__st.html">PKCS11_ctx_st</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PKCS11 context.  <a href="structPKCS11__ctx__st.html#_details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1fce869f6399677b1bb2fdb95da91f1"></a><!-- doxytag: member="libp11.h::ERR_LIB_PKCS11" ref="af1fce869f6399677b1bb2fdb95da91f1" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>ERR_LIB_PKCS11</b>&nbsp;&nbsp;&nbsp;ERR_LIB_USER</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a42df2a3b76bbe2155427b8bdfedc3885"></a><!-- doxytag: member="libp11.h::PKCS11err" ref="a42df2a3b76bbe2155427b8bdfedc3885" args="(f, r)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11err</b>(f, r)&nbsp;&nbsp;&nbsp;ERR_PUT_error(ERR_LIB_PKCS11,(f),(r),__FILE__,__LINE__)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4907b061cdb4e09c4bda17f8ca534e4f"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_CTX_LOAD" ref="a4907b061cdb4e09c4bda17f8ca534e4f" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_CTX_LOAD</b>&nbsp;&nbsp;&nbsp;1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa91304afe308c7468a578400b34c6535"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_ENUM_SLOTS" ref="aa91304afe308c7468a578400b34c6535" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_ENUM_SLOTS</b>&nbsp;&nbsp;&nbsp;2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a790779fda6d1f32e5c91ac3ec23c89d1"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_CHECK_TOKEN" ref="a790779fda6d1f32e5c91ac3ec23c89d1" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_CHECK_TOKEN</b>&nbsp;&nbsp;&nbsp;3</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98262614abd25970db4244fad64b7788"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_OPEN_SESSION" ref="a98262614abd25970db4244fad64b7788" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_OPEN_SESSION</b>&nbsp;&nbsp;&nbsp;4</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae29e9a0a63e2a46b49d3dabbfb8fd865"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_LOGIN" ref="ae29e9a0a63e2a46b49d3dabbfb8fd865" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_LOGIN</b>&nbsp;&nbsp;&nbsp;5</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7304a9015a056917eb4215846dbdb4bd"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_ENUM_KEYS" ref="a7304a9015a056917eb4215846dbdb4bd" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_ENUM_KEYS</b>&nbsp;&nbsp;&nbsp;6</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e312c6de4ffd44509c51c68bdb90b94"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_GET_KEY" ref="a0e312c6de4ffd44509c51c68bdb90b94" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_GET_KEY</b>&nbsp;&nbsp;&nbsp;7</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2602a851d353cd45452dc161d6b60ce2"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_RSA_DECRYPT" ref="a2602a851d353cd45452dc161d6b60ce2" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_RSA_DECRYPT</b>&nbsp;&nbsp;&nbsp;8</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae093bb6f393185a5b1a3fdf9a785be6e"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_RSA_ENCRYPT" ref="ae093bb6f393185a5b1a3fdf9a785be6e" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_RSA_ENCRYPT</b>&nbsp;&nbsp;&nbsp;9</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a82a233f6db24899a6db06bb4ac4330e2"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_RSA_SIGN" ref="a82a233f6db24899a6db06bb4ac4330e2" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_RSA_SIGN</b>&nbsp;&nbsp;&nbsp;10</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36e636672db196046e2cf128b69da55a"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_RSA_VERIFY" ref="a36e636672db196046e2cf128b69da55a" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_RSA_VERIFY</b>&nbsp;&nbsp;&nbsp;11</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae14a209e6f8cd925bfdb1c74bbe7fa94"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_ENUM_CERTS" ref="ae14a209e6f8cd925bfdb1c74bbe7fa94" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_ENUM_CERTS</b>&nbsp;&nbsp;&nbsp;12</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62e35f261d197eebf8c61b148235a10b"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_INIT_TOKEN" ref="a62e35f261d197eebf8c61b148235a10b" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_INIT_TOKEN</b>&nbsp;&nbsp;&nbsp;13</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d4b1e9b858ed9832dff660646acb7c1"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_INIT_PIN" ref="a1d4b1e9b858ed9832dff660646acb7c1" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_INIT_PIN</b>&nbsp;&nbsp;&nbsp;14</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf4264d1cf2b6722cd03c6bb5e1dcb43"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_LOGOUT" ref="aaf4264d1cf2b6722cd03c6bb5e1dcb43" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_LOGOUT</b>&nbsp;&nbsp;&nbsp;15</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab51d321855201b3d081f8c2aeecc4a07"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_STORE_PRIVATE_KEY" ref="ab51d321855201b3d081f8c2aeecc4a07" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_STORE_PRIVATE_KEY</b>&nbsp;&nbsp;&nbsp;16</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31ee1804140ae58dc69a9f34ed78693b"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_GENERATE_KEY" ref="a31ee1804140ae58dc69a9f34ed78693b" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_GENERATE_KEY</b>&nbsp;&nbsp;&nbsp;17</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae449515815b4beec5fe3db8ae95d5b15"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_STORE_PUBLIC_KEY" ref="ae449515815b4beec5fe3db8ae95d5b15" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_STORE_PUBLIC_KEY</b>&nbsp;&nbsp;&nbsp;18</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad6173880cf62a8deaf0fbeff24e9482d"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_STORE_CERTIFICATE" ref="ad6173880cf62a8deaf0fbeff24e9482d" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_STORE_CERTIFICATE</b>&nbsp;&nbsp;&nbsp;19</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac650a09ac2d006bb26549f59f5ffb4f5"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_SEED_RANDOM" ref="ac650a09ac2d006bb26549f59f5ffb4f5" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_SEED_RANDOM</b>&nbsp;&nbsp;&nbsp;20</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acd214adad3d1a3b7a5288858d7858c99"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_GENERATE_RANDOM" ref="acd214adad3d1a3b7a5288858d7858c99" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_GENERATE_RANDOM</b>&nbsp;&nbsp;&nbsp;21</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef90948a4c7fdcee5c228cdf38b769b2"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_CHANGE_PIN" ref="aef90948a4c7fdcee5c228cdf38b769b2" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_CHANGE_PIN</b>&nbsp;&nbsp;&nbsp;22</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9887d2c8269954aa8981d4c29abbd6ce"></a><!-- doxytag: member="libp11.h::PKCS11_F_PKCS11_GETATTR" ref="a9887d2c8269954aa8981d4c29abbd6ce" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_GETATTR</b>&nbsp;&nbsp;&nbsp;40</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06d20afad39a9a630ae7b16590337ff3"></a><!-- doxytag: member="libp11.h::PKCS11_ERR_BASE" ref="a06d20afad39a9a630ae7b16590337ff3" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_ERR_BASE</b>&nbsp;&nbsp;&nbsp;1024</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abfd599eb85ed51fa4af3aea3ebf0254b"></a><!-- doxytag: member="libp11.h::PKCS11_LOAD_MODULE_ERROR" ref="abfd599eb85ed51fa4af3aea3ebf0254b" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_LOAD_MODULE_ERROR</b>&nbsp;&nbsp;&nbsp;(PKCS11_ERR_BASE+1)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0de4472cf841e6242266fa06efdf1982"></a><!-- doxytag: member="libp11.h::PKCS11_MODULE_LOADED_ERROR" ref="a0de4472cf841e6242266fa06efdf1982" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_MODULE_LOADED_ERROR</b>&nbsp;&nbsp;&nbsp;(PKCS11_ERR_BASE+2)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94ef5ec24d3aadadf9cde2cb245b0681"></a><!-- doxytag: member="libp11.h::PKCS11_SYMBOL_NOT_FOUND_ERROR" ref="a94ef5ec24d3aadadf9cde2cb245b0681" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_SYMBOL_NOT_FOUND_ERROR</b>&nbsp;&nbsp;&nbsp;(PKCS11_ERR_BASE+3)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f15a9e0a2604ad1ce66bbad2f4d73e1"></a><!-- doxytag: member="libp11.h::PKCS11_NOT_SUPPORTED" ref="a9f15a9e0a2604ad1ce66bbad2f4d73e1" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_NOT_SUPPORTED</b>&nbsp;&nbsp;&nbsp;(PKCS11_ERR_BASE+4)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d55b4ec6308fddbe4dec92fb35d3754"></a><!-- doxytag: member="libp11.h::PKCS11_NO_SESSION" ref="a5d55b4ec6308fddbe4dec92fb35d3754" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_NO_SESSION</b>&nbsp;&nbsp;&nbsp;(PKCS11_ERR_BASE+5)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a11d719ccb9f023a92aecac25adfb8ea1"></a><!-- doxytag: member="libp11.h::PKCS11_KEYGEN_FAILED" ref="a11d719ccb9f023a92aecac25adfb8ea1" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_KEYGEN_FAILED</b>&nbsp;&nbsp;&nbsp;(PKCS11_ERR_BASE+6)</td></tr>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2739b52617b9de6366d0ff5942d50a3c"></a><!-- doxytag: member="libp11.h::PKCS11_KEY" ref="a2739b52617b9de6366d0ff5942d50a3c" args="" -->
typedef struct <a class="el" href="structPKCS11__key__st.html">PKCS11_key_st</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PKCS11 key object (public or private). <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a022695b6b9ac716e3a6c013c4a69ad5f"></a><!-- doxytag: member="libp11.h::PKCS11_CERT" ref="a022695b6b9ac716e3a6c013c4a69ad5f" args="" -->
typedef struct <a class="el" href="structPKCS11__cert__st.html">PKCS11_cert_st</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a022695b6b9ac716e3a6c013c4a69ad5f">PKCS11_CERT</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PKCS11 certificate object. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00e358ca0e95d6845a5f4f3e64d9edc3"></a><!-- doxytag: member="libp11.h::PKCS11_TOKEN" ref="a00e358ca0e95d6845a5f4f3e64d9edc3" args="" -->
typedef struct <a class="el" href="structPKCS11__token__st.html">PKCS11_token_st</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a00e358ca0e95d6845a5f4f3e64d9edc3">PKCS11_TOKEN</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PKCS11 token: smart card or USB key. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61c0040c249eadb219fbadb5a02bd1c6"></a><!-- doxytag: member="libp11.h::PKCS11_SLOT" ref="a61c0040c249eadb219fbadb5a02bd1c6" args="" -->
typedef struct <a class="el" href="structPKCS11__slot__st.html">PKCS11_slot_st</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PKCS11 slot: card reader. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac0a9aa96d0ea1b27c685f766b5eb395"></a><!-- doxytag: member="libp11.h::PKCS11_CTX" ref="aac0a9aa96d0ea1b27c685f766b5eb395" args="" -->
typedef struct <a class="el" href="structPKCS11__ctx__st.html">PKCS11_ctx_st</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PKCS11 context. <br/></td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structPKCS11__ctx__st.html">PKCS11_CTX</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a49b91ca17a5ef832582ad75b3fa2cf95">PKCS11_CTX_new</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new libp11 context.  <a href="#a49b91ca17a5ef832582ad75b3fa2cf95"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#ab9f413f6367beff7140d4c065e76c032">PKCS11_CTX_init_args</a> (<a class="el" href="structPKCS11__ctx__st.html">PKCS11_CTX</a> *ctx, const char *init_args)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Specify any private PKCS#11 module initializtion args, if necessary.  <a href="#ab9f413f6367beff7140d4c065e76c032"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#acc706b0400ae759a21c8522d6a0b48af">PKCS11_CTX_load</a> (<a class="el" href="structPKCS11__ctx__st.html">PKCS11_CTX</a> *ctx, const char *ident)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load a PKCS#11 module.  <a href="#acc706b0400ae759a21c8522d6a0b48af"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a6a798ab2361de5e5823b58eca38bd464">PKCS11_CTX_unload</a> (<a class="el" href="structPKCS11__ctx__st.html">PKCS11_CTX</a> *ctx)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unload a PKCS#11 module.  <a href="#a6a798ab2361de5e5823b58eca38bd464"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a13f672d0022b00601ccf97b8c5856b1e">PKCS11_CTX_free</a> (<a class="el" href="structPKCS11__ctx__st.html">PKCS11_CTX</a> *ctx)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free a libp11 context.  <a href="#a13f672d0022b00601ccf97b8c5856b1e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#adf4c7d6a3378e442df1d0cb1bd036d7f">PKCS11_open_session</a> (<a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> *slot, int rw)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open a session in RO or RW mode.  <a href="#adf4c7d6a3378e442df1d0cb1bd036d7f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a8e47e93e634e3c6bb900b4bbf81a990c">PKCS11_enumerate_slots</a> (<a class="el" href="structPKCS11__ctx__st.html">PKCS11_CTX</a> *ctx, <a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> **slotsp, unsigned int *nslotsp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a list of all slots.  <a href="#a8e47e93e634e3c6bb900b4bbf81a990c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a07bfde5c325cd03a63db1fcbc05f74fe">PKCS11_get_slotid_from_slot</a> (<a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> *slotp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the slot_id from a slot as it is stored in private.  <a href="#a07bfde5c325cd03a63db1fcbc05f74fe"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#ad67b35aba341a80d5c7f6c8a06eaa762">PKCS11_release_all_slots</a> (<a class="el" href="structPKCS11__ctx__st.html">PKCS11_CTX</a> *ctx, <a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> *slots, unsigned int nslots)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free the list of slots allocated by <a class="el" href="libp11_8h.html#a8e47e93e634e3c6bb900b4bbf81a990c" title="Get a list of all slots.">PKCS11_enumerate_slots()</a>.  <a href="#ad67b35aba341a80d5c7f6c8a06eaa762"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#afe380f5197afb04cf1b1430b50d58eed">PKCS11_find_token</a> (<a class="el" href="structPKCS11__ctx__st.html">PKCS11_CTX</a> *ctx, <a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> *slots, unsigned int nslots)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find the first slot with a token.  <a href="#afe380f5197afb04cf1b1430b50d58eed"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a59e897cb7af9e5e645552f0738fae162">PKCS11_login</a> (<a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> *slot, int so, const char *pin)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Authenticate to the card.  <a href="#a59e897cb7af9e5e645552f0738fae162"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#afeec15512293e545c9984d8f7fdeef51">PKCS11_logout</a> (<a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> *slot)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">De-authenticate from the card.  <a href="#afeec15512293e545c9984d8f7fdeef51"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae85ad7c87c4c3a1cdb5f5681fba3124c"></a><!-- doxytag: member="libp11.h::PKCS11_enumerate_keys" ref="ae85ad7c87c4c3a1cdb5f5681fba3124c" args="(PKCS11_TOKEN *, PKCS11_KEY **, unsigned int *)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_enumerate_keys</b> (<a class="el" href="structPKCS11__token__st.html">PKCS11_TOKEN</a> *, <a class="el" href="structPKCS11__key__st.html">PKCS11_KEY</a> **, unsigned int *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7595daab1ead2ca6017391d8b7cc2802"></a><!-- doxytag: member="libp11.h::PKCS11_get_key_type" ref="a7595daab1ead2ca6017391d8b7cc2802" args="(PKCS11_KEY *)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_get_key_type</b> (<a class="el" href="structPKCS11__key__st.html">PKCS11_KEY</a> *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d55c38b6915b2fb0f263d2955db855c"></a><!-- doxytag: member="libp11.h::PKCS11_get_key_size" ref="a7d55c38b6915b2fb0f263d2955db855c" args="(const PKCS11_KEY *)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_get_key_size</b> (const <a class="el" href="structPKCS11__key__st.html">PKCS11_KEY</a> *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1855e1e080cf984b9f8d3a630321c51e"></a><!-- doxytag: member="libp11.h::PKCS11_get_key_modulus" ref="a1855e1e080cf984b9f8d3a630321c51e" args="(PKCS11_KEY *, BIGNUM **)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_get_key_modulus</b> (<a class="el" href="structPKCS11__key__st.html">PKCS11_KEY</a> *, BIGNUM **)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1bdddef4c5ee60fcc89eef16fedefeb1"></a><!-- doxytag: member="libp11.h::PKCS11_get_key_exponent" ref="a1bdddef4c5ee60fcc89eef16fedefeb1" args="(PKCS11_KEY *, BIGNUM **)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_get_key_exponent</b> (<a class="el" href="structPKCS11__key__st.html">PKCS11_KEY</a> *, BIGNUM **)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">EVP_PKEY *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a030d908a0b000fa101409ba24a784d18">PKCS11_get_private_key</a> (<a class="el" href="structPKCS11__key__st.html">PKCS11_KEY</a> *key)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a EVP_PKEY object for the private key.  <a href="#a030d908a0b000fa101409ba24a784d18"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">EVP_PKEY *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a4875d0a8867b3ccc821517a55b48991d">PKCS11_get_public_key</a> (<a class="el" href="structPKCS11__key__st.html">PKCS11_KEY</a> *key)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a EVP_PKEY object with the public key.  <a href="#a4875d0a8867b3ccc821517a55b48991d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b7cd01d43b4ce8b2bf0dad15cb8741e"></a><!-- doxytag: member="libp11.h::PKCS11_find_certificate" ref="a7b7cd01d43b4ce8b2bf0dad15cb8741e" args="(PKCS11_KEY *)" -->
<a class="el" href="structPKCS11__cert__st.html">PKCS11_CERT</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_find_certificate</b> (<a class="el" href="structPKCS11__key__st.html">PKCS11_KEY</a> *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8441f8eb4dd4e4d90f2fadd6391790a"></a><!-- doxytag: member="libp11.h::PKCS11_find_key" ref="aa8441f8eb4dd4e4d90f2fadd6391790a" args="(PKCS11_CERT *)" -->
<a class="el" href="structPKCS11__key__st.html">PKCS11_KEY</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_find_key</b> (<a class="el" href="structPKCS11__cert__st.html">PKCS11_CERT</a> *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adea60d38a76b42f3d4c6d13481c9ad1a"></a><!-- doxytag: member="libp11.h::PKCS11_enumerate_certs" ref="adea60d38a76b42f3d4c6d13481c9ad1a" args="(PKCS11_TOKEN *, PKCS11_CERT **, unsigned int *)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_enumerate_certs</b> (<a class="el" href="structPKCS11__token__st.html">PKCS11_TOKEN</a> *, <a class="el" href="structPKCS11__cert__st.html">PKCS11_CERT</a> **, unsigned int *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a766d89edea4624ddd47cf8c0fb001ab6">PKCS11_init_token</a> (<a class="el" href="structPKCS11__token__st.html">PKCS11_TOKEN</a> *token, const char *pin, const char *label)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a token.  <a href="#a766d89edea4624ddd47cf8c0fb001ab6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a3918c1e173faee47e9126047af0fbf0d">PKCS11_init_pin</a> (<a class="el" href="structPKCS11__token__st.html">PKCS11_TOKEN</a> *token, const char *pin)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize the user PIN on a token.  <a href="#a3918c1e173faee47e9126047af0fbf0d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a2e1e08029004500ceb7b45c621d4e019">PKCS11_change_pin</a> (<a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> *slot, const char *old_pin, const char *new_pin)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change the user PIN on a token.  <a href="#a2e1e08029004500ceb7b45c621d4e019"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a48f81883c2d557099c102553544e9edc">PKCS11_generate_key</a> (<a class="el" href="structPKCS11__token__st.html">PKCS11_TOKEN</a> *token, int algorithm, unsigned int bits, char *label, unsigned char *id, size_t id_len)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generate and store a private key on the token.  <a href="#a48f81883c2d557099c102553544e9edc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#af85502d566c59c60a5542fbc38b5d430">PKCS11_store_private_key</a> (<a class="el" href="structPKCS11__token__st.html">PKCS11_TOKEN</a> *token, EVP_PKEY *pk, char *label, unsigned char *id, size_t id_len)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Store private key on a token.  <a href="#af85502d566c59c60a5542fbc38b5d430"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a0cb818884d9422e6ddce77a21ea43af1">PKCS11_store_public_key</a> (<a class="el" href="structPKCS11__token__st.html">PKCS11_TOKEN</a> *token, EVP_PKEY *pk, char *label, unsigned char *id, size_t id_len)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Store public key on a token.  <a href="#a0cb818884d9422e6ddce77a21ea43af1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a3bcd902b6b42b4f011bdafb2a299fbc7">PKCS11_store_certificate</a> (<a class="el" href="structPKCS11__token__st.html">PKCS11_TOKEN</a> *token, X509 *x509, char *label, unsigned char *id, size_t id_len, <a class="el" href="structPKCS11__cert__st.html">PKCS11_CERT</a> **ret_cert)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Store certificate on a token.  <a href="#a3bcd902b6b42b4f011bdafb2a299fbc7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee750b448e17c0d02d54b4987d48c986"></a><!-- doxytag: member="libp11.h::PKCS11_sign" ref="aee750b448e17c0d02d54b4987d48c986" args="(int type, const unsigned char *m, unsigned int m_len, unsigned char *sigret, unsigned int *siglen, const PKCS11_KEY *key)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_sign</b> (int type, const unsigned char *m, unsigned int m_len, unsigned char *sigret, unsigned int *siglen, const <a class="el" href="structPKCS11__key__st.html">PKCS11_KEY</a> *key)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a366d4a16f929882745388014f04308"></a><!-- doxytag: member="libp11.h::PKCS11_private_encrypt" ref="a6a366d4a16f929882745388014f04308" args="(int flen, const unsigned char *from, unsigned char *to, const PKCS11_KEY *rsa, int padding)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_private_encrypt</b> (int flen, const unsigned char *from, unsigned char *to, const <a class="el" href="structPKCS11__key__st.html">PKCS11_KEY</a> *rsa, int padding)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#ae341c01eccd0ff12fca3233a92829812">PKCS11_private_decrypt</a> (int flen, const unsigned char *from, unsigned char *to, <a class="el" href="structPKCS11__key__st.html">PKCS11_KEY</a> *key, int padding)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decrypts data using the private key.  <a href="#ae341c01eccd0ff12fca3233a92829812"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9723f782d047771ab7eeca8151be6501"></a><!-- doxytag: member="libp11.h::PKCS11_verify" ref="a9723f782d047771ab7eeca8151be6501" args="(int type, const unsigned char *m, unsigned int m_len, unsigned char *signature, unsigned int siglen, PKCS11_KEY *key)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_verify</b> (int type, const unsigned char *m, unsigned int m_len, unsigned char *signature, unsigned int siglen, <a class="el" href="structPKCS11__key__st.html">PKCS11_KEY</a> *key)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1be54a7458351b3b4ff1076981f14002"></a><!-- doxytag: member="libp11.h::PKCS11_seed_random" ref="a1be54a7458351b3b4ff1076981f14002" args="(PKCS11_SLOT *, const unsigned char *s, unsigned int s_len)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_seed_random</b> (<a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> *, const unsigned char *s, unsigned int s_len)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afaccc61a03f8566632c3659e09464757"></a><!-- doxytag: member="libp11.h::PKCS11_generate_random" ref="afaccc61a03f8566632c3659e09464757" args="(PKCS11_SLOT *, unsigned char *r, unsigned int r_len)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_generate_random</b> (<a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> *, unsigned char *r, unsigned int r_len)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bbfab0de63fd5625ad55381a2fcf7b0"></a><!-- doxytag: member="libp11.h::PKCS11_get_rsa_method" ref="a7bbfab0de63fd5625ad55381a2fcf7b0" args="(void)" -->
RSA_METHOD *&nbsp;</td><td class="memItemRight" valign="bottom"><b>PKCS11_get_rsa_method</b> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#afd178da387c9784af8fd23f45091a901">ERR_load_PKCS11_strings</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load PKCS11 error strings.  <a href="#afd178da387c9784af8fd23f45091a901"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>libp11 header file </p>

<p>Definition in file <a class="el" href="libp11_8h_source.html">libp11.h</a>.</p>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="afd178da387c9784af8fd23f45091a901"></a><!-- doxytag: member="libp11.h::ERR_load_PKCS11_strings" ref="afd178da387c9784af8fd23f45091a901" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ERR_load_PKCS11_strings </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Load PKCS11 error strings. </p>
<p>Call this function to be able to use ERR_reason_error_string(ERR_get_error()) to get an textual version of the latest error code </p>

</div>
</div>
<a class="anchor" id="a2e1e08029004500ceb7b45c621d4e019"></a><!-- doxytag: member="libp11.h::PKCS11_change_pin" ref="a2e1e08029004500ceb7b45c621d4e019" args="(PKCS11_SLOT *slot, const char *old_pin, const char *new_pin)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int PKCS11_change_pin </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> *&nbsp;</td>
          <td class="paramname"> <em>slot</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>old_pin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>new_pin</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Change the user PIN on a 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>slot</em>&nbsp;</td><td>slot returned by <a class="el" href="libp11_8h.html#afe380f5197afb04cf1b1430b50d58eed" title="Find the first slot with a token.">PKCS11_find_token()</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>old_pin</em>&nbsp;</td><td>old PIN value </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>new_pin</em>&nbsp;</td><td>new PIN value </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>success </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>error </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a13f672d0022b00601ccf97b8c5856b1e"></a><!-- doxytag: member="libp11.h::PKCS11_CTX_free" ref="a13f672d0022b00601ccf97b8c5856b1e" args="(PKCS11_CTX *ctx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void PKCS11_CTX_free </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__ctx__st.html">PKCS11_CTX</a> *&nbsp;</td>
          <td class="paramname"> <em>ctx</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Free a libp11 context. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>context allocated by <a class="el" href="libp11_8h.html#a49b91ca17a5ef832582ad75b3fa2cf95" title="Create a new libp11 context.">PKCS11_CTX_new()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ab9f413f6367beff7140d4c065e76c032"></a><!-- doxytag: member="libp11.h::PKCS11_CTX_init_args" ref="ab9f413f6367beff7140d4c065e76c032" args="(PKCS11_CTX *ctx, const char *init_args)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void PKCS11_CTX_init_args </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__ctx__st.html">PKCS11_CTX</a> *&nbsp;</td>
          <td class="paramname"> <em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>init_args</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Specify any private PKCS#11 module initializtion args, if necessary. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>none </dd></dl>

</div>
</div>
<a class="anchor" id="acc706b0400ae759a21c8522d6a0b48af"></a><!-- doxytag: member="libp11.h::PKCS11_CTX_load" ref="acc706b0400ae759a21c8522d6a0b48af" args="(PKCS11_CTX *ctx, const char *ident)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int PKCS11_CTX_load </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__ctx__st.html">PKCS11_CTX</a> *&nbsp;</td>
          <td class="paramname"> <em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>ident</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Load a PKCS#11 module. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>context allocated by <a class="el" href="libp11_8h.html#a49b91ca17a5ef832582ad75b3fa2cf95" title="Create a new libp11 context.">PKCS11_CTX_new()</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ident</em>&nbsp;</td><td>PKCS#11 library filename </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>success </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>error </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a49b91ca17a5ef832582ad75b3fa2cf95"></a><!-- doxytag: member="libp11.h::PKCS11_CTX_new" ref="a49b91ca17a5ef832582ad75b3fa2cf95" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structPKCS11__ctx__st.html">PKCS11_CTX</a>* PKCS11_CTX_new </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new libp11 context. </p>
<p>This should be the first function called in the use of libp11 </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>an allocated context </dd></dl>

</div>
</div>
<a class="anchor" id="a6a798ab2361de5e5823b58eca38bd464"></a><!-- doxytag: member="libp11.h::PKCS11_CTX_unload" ref="a6a798ab2361de5e5823b58eca38bd464" args="(PKCS11_CTX *ctx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void PKCS11_CTX_unload </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__ctx__st.html">PKCS11_CTX</a> *&nbsp;</td>
          <td class="paramname"> <em>ctx</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Unload a PKCS#11 module. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>context allocated by <a class="el" href="libp11_8h.html#a49b91ca17a5ef832582ad75b3fa2cf95" title="Create a new libp11 context.">PKCS11_CTX_new()</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a8e47e93e634e3c6bb900b4bbf81a990c"></a><!-- doxytag: member="libp11.h::PKCS11_enumerate_slots" ref="a8e47e93e634e3c6bb900b4bbf81a990c" args="(PKCS11_CTX *ctx, PKCS11_SLOT **slotsp, unsigned int *nslotsp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int PKCS11_enumerate_slots </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__ctx__st.html">PKCS11_CTX</a> *&nbsp;</td>
          <td class="paramname"> <em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> **&nbsp;</td>
          <td class="paramname"> <em>slotsp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int *&nbsp;</td>
          <td class="paramname"> <em>nslotsp</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 a list of all slots. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>context allocated by <a class="el" href="libp11_8h.html#a49b91ca17a5ef832582ad75b3fa2cf95" title="Create a new libp11 context.">PKCS11_CTX_new()</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>slotsp</em>&nbsp;</td><td>pointer on a list of slots </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nslotsp</em>&nbsp;</td><td>size of the allocated list </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>success </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>error </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="afe380f5197afb04cf1b1430b50d58eed"></a><!-- doxytag: member="libp11.h::PKCS11_find_token" ref="afe380f5197afb04cf1b1430b50d58eed" args="(PKCS11_CTX *ctx, PKCS11_SLOT *slots, unsigned int nslots)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a>* PKCS11_find_token </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__ctx__st.html">PKCS11_CTX</a> *&nbsp;</td>
          <td class="paramname"> <em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> *&nbsp;</td>
          <td class="paramname"> <em>slots</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>nslots</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Find the first slot with a 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>ctx</em>&nbsp;</td><td>context allocated by <a class="el" href="libp11_8h.html#a49b91ca17a5ef832582ad75b3fa2cf95" title="Create a new libp11 context.">PKCS11_CTX_new()</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>slots</em>&nbsp;</td><td>list of slots allocated by <a class="el" href="libp11_8h.html#a8e47e93e634e3c6bb900b4bbf81a990c" title="Get a list of all slots.">PKCS11_enumerate_slots()</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nslots</em>&nbsp;</td><td>size of the list </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>!=NULL</em>&nbsp;</td><td>pointer on a slot structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>NULL</em>&nbsp;</td><td>error </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a48f81883c2d557099c102553544e9edc"></a><!-- doxytag: member="libp11.h::PKCS11_generate_key" ref="a48f81883c2d557099c102553544e9edc" args="(PKCS11_TOKEN *token, int algorithm, unsigned int bits, char *label, unsigned char *id, size_t id_len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int PKCS11_generate_key </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__token__st.html">PKCS11_TOKEN</a> *&nbsp;</td>
          <td class="paramname"> <em>token</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>algorithm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>bits</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>label</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&nbsp;</td>
          <td class="paramname"> <em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>id_len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Generate and store a private key on the 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</em>&nbsp;</td><td>token returned by <a class="el" href="libp11_8h.html#afe380f5197afb04cf1b1430b50d58eed" title="Find the first slot with a token.">PKCS11_find_token()</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>algorithm</em>&nbsp;</td><td>EVP_PKEY_RSA </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>bits</em>&nbsp;</td><td>size of the modulus in bits </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>label</em>&nbsp;</td><td>label for this key </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>bytes to use as id value </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>id_len</em>&nbsp;</td><td>length of id value. </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>success </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>error </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a030d908a0b000fa101409ba24a784d18"></a><!-- doxytag: member="libp11.h::PKCS11_get_private_key" ref="a030d908a0b000fa101409ba24a784d18" args="(PKCS11_KEY *key)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EVP_PKEY* PKCS11_get_private_key </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__key__st.html">PKCS11_KEY</a> *&nbsp;</td>
          <td class="paramname"> <em>key</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns a EVP_PKEY object for the private key. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>PKCS11_KEY object </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>!=NULL</em>&nbsp;</td><td>reference to EVP_PKEY object. The returned EVP_PKEY object should be treated as const and must not be freed. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>NULL</em>&nbsp;</td><td>error </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a4875d0a8867b3ccc821517a55b48991d"></a><!-- doxytag: member="libp11.h::PKCS11_get_public_key" ref="a4875d0a8867b3ccc821517a55b48991d" args="(PKCS11_KEY *key)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">EVP_PKEY* PKCS11_get_public_key </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__key__st.html">PKCS11_KEY</a> *&nbsp;</td>
          <td class="paramname"> <em>key</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns a EVP_PKEY object with the public key. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>PKCS11_KEY object </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>!=NULL</em>&nbsp;</td><td>reference to EVP_PKEY object. The returned EVP_PKEY object should be treated as const and must not be freed. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>NULL</em>&nbsp;</td><td>error </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a07bfde5c325cd03a63db1fcbc05f74fe"></a><!-- doxytag: member="libp11.h::PKCS11_get_slotid_from_slot" ref="a07bfde5c325cd03a63db1fcbc05f74fe" args="(PKCS11_SLOT *slotp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned long PKCS11_get_slotid_from_slot </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> *&nbsp;</td>
          <td class="paramname"> <em>slotp</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the slot_id from a slot as it is stored in private. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>slotp</em>&nbsp;</td><td>pointer on a slot </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>the</em>&nbsp;</td><td>slotid </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a3918c1e173faee47e9126047af0fbf0d"></a><!-- doxytag: member="libp11.h::PKCS11_init_pin" ref="a3918c1e173faee47e9126047af0fbf0d" args="(PKCS11_TOKEN *token, const char *pin)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int PKCS11_init_pin </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__token__st.html">PKCS11_TOKEN</a> *&nbsp;</td>
          <td class="paramname"> <em>token</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>pin</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Initialize the user PIN on a 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</em>&nbsp;</td><td>token descriptor (in general slot-&gt;token) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pin</em>&nbsp;</td><td>new user PIN value </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>success </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>error </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a766d89edea4624ddd47cf8c0fb001ab6"></a><!-- doxytag: member="libp11.h::PKCS11_init_token" ref="a766d89edea4624ddd47cf8c0fb001ab6" args="(PKCS11_TOKEN *token, const char *pin, const char *label)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int PKCS11_init_token </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__token__st.html">PKCS11_TOKEN</a> *&nbsp;</td>
          <td class="paramname"> <em>token</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>pin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>label</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Initialize a 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</em>&nbsp;</td><td>token descriptor (in general slot-&gt;token) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pin</em>&nbsp;</td><td>Security Officer PIN value </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>label</em>&nbsp;</td><td>new name of the token </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>success </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>error </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a59e897cb7af9e5e645552f0738fae162"></a><!-- doxytag: member="libp11.h::PKCS11_login" ref="a59e897cb7af9e5e645552f0738fae162" args="(PKCS11_SLOT *slot, int so, const char *pin)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int PKCS11_login </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> *&nbsp;</td>
          <td class="paramname"> <em>slot</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>so</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>pin</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Authenticate to the card. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>slot</em>&nbsp;</td><td>slot returned by <a class="el" href="libp11_8h.html#afe380f5197afb04cf1b1430b50d58eed" title="Find the first slot with a token.">PKCS11_find_token()</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>so</em>&nbsp;</td><td>login as CKU_SO if != 0, otherwise login as CKU_USER </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pin</em>&nbsp;</td><td>PIN value </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>success </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>error </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="afeec15512293e545c9984d8f7fdeef51"></a><!-- doxytag: member="libp11.h::PKCS11_logout" ref="afeec15512293e545c9984d8f7fdeef51" args="(PKCS11_SLOT *slot)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int PKCS11_logout </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> *&nbsp;</td>
          <td class="paramname"> <em>slot</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>De-authenticate from the card. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>slot</em>&nbsp;</td><td>slot returned by <a class="el" href="libp11_8h.html#afe380f5197afb04cf1b1430b50d58eed" title="Find the first slot with a token.">PKCS11_find_token()</a> </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>success </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>error </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="adf4c7d6a3378e442df1d0cb1bd036d7f"></a><!-- doxytag: member="libp11.h::PKCS11_open_session" ref="adf4c7d6a3378e442df1d0cb1bd036d7f" args="(PKCS11_SLOT *slot, int rw)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int PKCS11_open_session </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> *&nbsp;</td>
          <td class="paramname"> <em>slot</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>rw</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Open a session in RO or RW mode. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>slot</em>&nbsp;</td><td>slot descriptor returned by <a class="el" href="libp11_8h.html#afe380f5197afb04cf1b1430b50d58eed" title="Find the first slot with a token.">PKCS11_find_token()</a> or <a class="el" href="libp11_8h.html#a8e47e93e634e3c6bb900b4bbf81a990c" title="Get a list of all slots.">PKCS11_enumerate_slots()</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rw</em>&nbsp;</td><td>open in read/write mode is mode != 0, otherwise in read only mode </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>success </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>error </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ae341c01eccd0ff12fca3233a92829812"></a><!-- doxytag: member="libp11.h::PKCS11_private_decrypt" ref="ae341c01eccd0ff12fca3233a92829812" args="(int flen, const unsigned char *from, unsigned char *to, PKCS11_KEY *key, int padding)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int PKCS11_private_decrypt </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>flen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&nbsp;</td>
          <td class="paramname"> <em>from</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&nbsp;</td>
          <td class="paramname"> <em>to</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structPKCS11__key__st.html">PKCS11_KEY</a> *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>padding</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Decrypts data using the private key. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>flen</em>&nbsp;</td><td>length of the encrypted data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>from</em>&nbsp;</td><td>encrypted data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>to</em>&nbsp;</td><td>output buffer (MUST be a least flen bytes long) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>private key object </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>padding</em>&nbsp;</td><td>padding algorithm to be used </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the length of the decrypted data or 0 if an error occurred </dd></dl>

</div>
</div>
<a class="anchor" id="ad67b35aba341a80d5c7f6c8a06eaa762"></a><!-- doxytag: member="libp11.h::PKCS11_release_all_slots" ref="ad67b35aba341a80d5c7f6c8a06eaa762" args="(PKCS11_CTX *ctx, PKCS11_SLOT *slots, unsigned int nslots)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void PKCS11_release_all_slots </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__ctx__st.html">PKCS11_CTX</a> *&nbsp;</td>
          <td class="paramname"> <em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structPKCS11__slot__st.html">PKCS11_SLOT</a> *&nbsp;</td>
          <td class="paramname"> <em>slots</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>nslots</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Free the list of slots allocated by <a class="el" href="libp11_8h.html#a8e47e93e634e3c6bb900b4bbf81a990c" title="Get a list of all slots.">PKCS11_enumerate_slots()</a>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</td><td>context allocated by <a class="el" href="libp11_8h.html#a49b91ca17a5ef832582ad75b3fa2cf95" title="Create a new libp11 context.">PKCS11_CTX_new()</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>slots</em>&nbsp;</td><td>list of slots allocated by <a class="el" href="libp11_8h.html#a8e47e93e634e3c6bb900b4bbf81a990c" title="Get a list of all slots.">PKCS11_enumerate_slots()</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nslots</em>&nbsp;</td><td>size of the list </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a3bcd902b6b42b4f011bdafb2a299fbc7"></a><!-- doxytag: member="libp11.h::PKCS11_store_certificate" ref="a3bcd902b6b42b4f011bdafb2a299fbc7" args="(PKCS11_TOKEN *token, X509 *x509, char *label, unsigned char *id, size_t id_len, PKCS11_CERT **ret_cert)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int PKCS11_store_certificate </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__token__st.html">PKCS11_TOKEN</a> *&nbsp;</td>
          <td class="paramname"> <em>token</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">X509 *&nbsp;</td>
          <td class="paramname"> <em>x509</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>label</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&nbsp;</td>
          <td class="paramname"> <em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>id_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structPKCS11__cert__st.html">PKCS11_CERT</a> **&nbsp;</td>
          <td class="paramname"> <em>ret_cert</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Store certificate on a 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</em>&nbsp;</td><td>token returned by <a class="el" href="libp11_8h.html#afe380f5197afb04cf1b1430b50d58eed" title="Find the first slot with a token.">PKCS11_find_token()</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>x509</em>&nbsp;</td><td>x509 certificate object </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>label</em>&nbsp;</td><td>label for this certificate </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>bytes to use as id value </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>id_len</em>&nbsp;</td><td>length of id value. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ret_cert</em>&nbsp;</td><td>put new PKCS11_CERT object here </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>success </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>error </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="af85502d566c59c60a5542fbc38b5d430"></a><!-- doxytag: member="libp11.h::PKCS11_store_private_key" ref="af85502d566c59c60a5542fbc38b5d430" args="(PKCS11_TOKEN *token, EVP_PKEY *pk, char *label, unsigned char *id, size_t id_len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int PKCS11_store_private_key </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__token__st.html">PKCS11_TOKEN</a> *&nbsp;</td>
          <td class="paramname"> <em>token</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">EVP_PKEY *&nbsp;</td>
          <td class="paramname"> <em>pk</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>label</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&nbsp;</td>
          <td class="paramname"> <em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>id_len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Store private key on a 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</em>&nbsp;</td><td>token returned by <a class="el" href="libp11_8h.html#afe380f5197afb04cf1b1430b50d58eed" title="Find the first slot with a token.">PKCS11_find_token()</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pk</em>&nbsp;</td><td>private key </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>label</em>&nbsp;</td><td>label for this key </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>bytes to use as id value </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>id_len</em>&nbsp;</td><td>length of id value. </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>success </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>error </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a0cb818884d9422e6ddce77a21ea43af1"></a><!-- doxytag: member="libp11.h::PKCS11_store_public_key" ref="a0cb818884d9422e6ddce77a21ea43af1" args="(PKCS11_TOKEN *token, EVP_PKEY *pk, char *label, unsigned char *id, size_t id_len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int PKCS11_store_public_key </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPKCS11__token__st.html">PKCS11_TOKEN</a> *&nbsp;</td>
          <td class="paramname"> <em>token</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">EVP_PKEY *&nbsp;</td>
          <td class="paramname"> <em>pk</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>label</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&nbsp;</td>
          <td class="paramname"> <em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>id_len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Store public key on a 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</em>&nbsp;</td><td>token returned by <a class="el" href="libp11_8h.html#afe380f5197afb04cf1b1430b50d58eed" title="Find the first slot with a token.">PKCS11_find_token()</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pk</em>&nbsp;</td><td>private key </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>label</em>&nbsp;</td><td>label for this key </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</td><td>bytes to use as id value </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>id_len</em>&nbsp;</td><td>length of id value. </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>success </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>error </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div>
<hr>
<table width="100%"><tr><td>libp11, Copyright (C) 2005 Olaf Kirch &lt;okir@lst.de&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>