<!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"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.5"/> <title>libp11: libp11.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">libp11  <span id="projectnumber">0.2.8</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.5 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#nested-classes">Data Structures</a> | <a href="#define-members">Macros</a> | <a href="#typedef-members">Typedefs</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">libp11.h File Reference</div> </div> </div><!--header--> <div class="contents"> <p>libp11 header file <a href="#details">More...</a></p> <div class="textblock"><code>#include <openssl/bio.h></code><br/> <code>#include <openssl/err.h></code><br/> <code>#include <openssl/x509.h></code><br/> </div> <p><a href="libp11_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> Data Structures</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structPKCS11__key__st.html">PKCS11_key_st</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">PKCS11 key object (public or private) <a href="structPKCS11__key__st.html#details">More...</a><br/></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structPKCS11__cert__st.html">PKCS11_cert_st</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">PKCS11 certificate object. <a href="structPKCS11__cert__st.html#details">More...</a><br/></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structPKCS11__token__st.html">PKCS11_token_st</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">PKCS11 token: smart card or USB key. <a href="structPKCS11__token__st.html#details">More...</a><br/></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structPKCS11__slot__st.html">PKCS11_slot_st</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">PKCS11 slot: card reader. <a href="structPKCS11__slot__st.html#details">More...</a><br/></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structPKCS11__ctx__st.html">PKCS11_ctx_st</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">PKCS11 context. <a href="structPKCS11__ctx__st.html#details">More...</a><br/></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> Macros</h2></td></tr> <tr class="memitem:af1fce869f6399677b1bb2fdb95da91f1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1fce869f6399677b1bb2fdb95da91f1"></a> #define </td><td class="memItemRight" valign="bottom"><b>ERR_LIB_PKCS11</b>   ERR_LIB_USER</td></tr> <tr class="separator:af1fce869f6399677b1bb2fdb95da91f1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a42df2a3b76bbe2155427b8bdfedc3885"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a42df2a3b76bbe2155427b8bdfedc3885"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11err</b>(f, r)   ERR_PUT_error(ERR_LIB_PKCS11,(f),(r),__FILE__,__LINE__)</td></tr> <tr class="separator:a42df2a3b76bbe2155427b8bdfedc3885"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4907b061cdb4e09c4bda17f8ca534e4f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4907b061cdb4e09c4bda17f8ca534e4f"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_CTX_LOAD</b>   1</td></tr> <tr class="separator:a4907b061cdb4e09c4bda17f8ca534e4f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa91304afe308c7468a578400b34c6535"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa91304afe308c7468a578400b34c6535"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_ENUM_SLOTS</b>   2</td></tr> <tr class="separator:aa91304afe308c7468a578400b34c6535"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a790779fda6d1f32e5c91ac3ec23c89d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a790779fda6d1f32e5c91ac3ec23c89d1"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_CHECK_TOKEN</b>   3</td></tr> <tr class="separator:a790779fda6d1f32e5c91ac3ec23c89d1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a98262614abd25970db4244fad64b7788"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98262614abd25970db4244fad64b7788"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_OPEN_SESSION</b>   4</td></tr> <tr class="separator:a98262614abd25970db4244fad64b7788"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae29e9a0a63e2a46b49d3dabbfb8fd865"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae29e9a0a63e2a46b49d3dabbfb8fd865"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_LOGIN</b>   5</td></tr> <tr class="separator:ae29e9a0a63e2a46b49d3dabbfb8fd865"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7304a9015a056917eb4215846dbdb4bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7304a9015a056917eb4215846dbdb4bd"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_ENUM_KEYS</b>   6</td></tr> <tr class="separator:a7304a9015a056917eb4215846dbdb4bd"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0e312c6de4ffd44509c51c68bdb90b94"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e312c6de4ffd44509c51c68bdb90b94"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_GET_KEY</b>   7</td></tr> <tr class="separator:a0e312c6de4ffd44509c51c68bdb90b94"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2602a851d353cd45452dc161d6b60ce2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2602a851d353cd45452dc161d6b60ce2"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_RSA_DECRYPT</b>   8</td></tr> <tr class="separator:a2602a851d353cd45452dc161d6b60ce2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae093bb6f393185a5b1a3fdf9a785be6e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae093bb6f393185a5b1a3fdf9a785be6e"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_RSA_ENCRYPT</b>   9</td></tr> <tr class="separator:ae093bb6f393185a5b1a3fdf9a785be6e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a82a233f6db24899a6db06bb4ac4330e2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a82a233f6db24899a6db06bb4ac4330e2"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_RSA_SIGN</b>   10</td></tr> <tr class="separator:a82a233f6db24899a6db06bb4ac4330e2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a36e636672db196046e2cf128b69da55a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36e636672db196046e2cf128b69da55a"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_RSA_VERIFY</b>   11</td></tr> <tr class="separator:a36e636672db196046e2cf128b69da55a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae14a209e6f8cd925bfdb1c74bbe7fa94"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae14a209e6f8cd925bfdb1c74bbe7fa94"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_ENUM_CERTS</b>   12</td></tr> <tr class="separator:ae14a209e6f8cd925bfdb1c74bbe7fa94"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a62e35f261d197eebf8c61b148235a10b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62e35f261d197eebf8c61b148235a10b"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_INIT_TOKEN</b>   13</td></tr> <tr class="separator:a62e35f261d197eebf8c61b148235a10b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1d4b1e9b858ed9832dff660646acb7c1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d4b1e9b858ed9832dff660646acb7c1"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_INIT_PIN</b>   14</td></tr> <tr class="separator:a1d4b1e9b858ed9832dff660646acb7c1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aaf4264d1cf2b6722cd03c6bb5e1dcb43"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf4264d1cf2b6722cd03c6bb5e1dcb43"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_LOGOUT</b>   15</td></tr> <tr class="separator:aaf4264d1cf2b6722cd03c6bb5e1dcb43"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab51d321855201b3d081f8c2aeecc4a07"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab51d321855201b3d081f8c2aeecc4a07"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_STORE_PRIVATE_KEY</b>   16</td></tr> <tr class="separator:ab51d321855201b3d081f8c2aeecc4a07"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a31ee1804140ae58dc69a9f34ed78693b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31ee1804140ae58dc69a9f34ed78693b"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_GENERATE_KEY</b>   17</td></tr> <tr class="separator:a31ee1804140ae58dc69a9f34ed78693b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae449515815b4beec5fe3db8ae95d5b15"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae449515815b4beec5fe3db8ae95d5b15"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_STORE_PUBLIC_KEY</b>   18</td></tr> <tr class="separator:ae449515815b4beec5fe3db8ae95d5b15"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad6173880cf62a8deaf0fbeff24e9482d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad6173880cf62a8deaf0fbeff24e9482d"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_STORE_CERTIFICATE</b>   19</td></tr> <tr class="separator:ad6173880cf62a8deaf0fbeff24e9482d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac650a09ac2d006bb26549f59f5ffb4f5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac650a09ac2d006bb26549f59f5ffb4f5"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_SEED_RANDOM</b>   20</td></tr> <tr class="separator:ac650a09ac2d006bb26549f59f5ffb4f5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:acd214adad3d1a3b7a5288858d7858c99"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acd214adad3d1a3b7a5288858d7858c99"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_GENERATE_RANDOM</b>   21</td></tr> <tr class="separator:acd214adad3d1a3b7a5288858d7858c99"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aef90948a4c7fdcee5c228cdf38b769b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef90948a4c7fdcee5c228cdf38b769b2"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_CHANGE_PIN</b>   22</td></tr> <tr class="separator:aef90948a4c7fdcee5c228cdf38b769b2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9887d2c8269954aa8981d4c29abbd6ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9887d2c8269954aa8981d4c29abbd6ce"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_F_PKCS11_GETATTR</b>   40</td></tr> <tr class="separator:a9887d2c8269954aa8981d4c29abbd6ce"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a06d20afad39a9a630ae7b16590337ff3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06d20afad39a9a630ae7b16590337ff3"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_ERR_BASE</b>   1024</td></tr> <tr class="separator:a06d20afad39a9a630ae7b16590337ff3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:abfd599eb85ed51fa4af3aea3ebf0254b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abfd599eb85ed51fa4af3aea3ebf0254b"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_LOAD_MODULE_ERROR</b>   (PKCS11_ERR_BASE+1)</td></tr> <tr class="separator:abfd599eb85ed51fa4af3aea3ebf0254b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0de4472cf841e6242266fa06efdf1982"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0de4472cf841e6242266fa06efdf1982"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_MODULE_LOADED_ERROR</b>   (PKCS11_ERR_BASE+2)</td></tr> <tr class="separator:a0de4472cf841e6242266fa06efdf1982"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a94ef5ec24d3aadadf9cde2cb245b0681"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94ef5ec24d3aadadf9cde2cb245b0681"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_SYMBOL_NOT_FOUND_ERROR</b>   (PKCS11_ERR_BASE+3)</td></tr> <tr class="separator:a94ef5ec24d3aadadf9cde2cb245b0681"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9f15a9e0a2604ad1ce66bbad2f4d73e1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f15a9e0a2604ad1ce66bbad2f4d73e1"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_NOT_SUPPORTED</b>   (PKCS11_ERR_BASE+4)</td></tr> <tr class="separator:a9f15a9e0a2604ad1ce66bbad2f4d73e1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5d55b4ec6308fddbe4dec92fb35d3754"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d55b4ec6308fddbe4dec92fb35d3754"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_NO_SESSION</b>   (PKCS11_ERR_BASE+5)</td></tr> <tr class="separator:a5d55b4ec6308fddbe4dec92fb35d3754"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a11d719ccb9f023a92aecac25adfb8ea1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a11d719ccb9f023a92aecac25adfb8ea1"></a> #define </td><td class="memItemRight" valign="bottom"><b>PKCS11_KEYGEN_FAILED</b>   (PKCS11_ERR_BASE+6)</td></tr> <tr class="separator:a11d719ccb9f023a92aecac25adfb8ea1"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> Typedefs</h2></td></tr> <tr class="memitem:a2739b52617b9de6366d0ff5942d50a3c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2739b52617b9de6366d0ff5942d50a3c"></a> typedef struct <a class="el" href="structPKCS11__key__st.html">PKCS11_key_st</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a></td></tr> <tr class="memdesc:a2739b52617b9de6366d0ff5942d50a3c"><td class="mdescLeft"> </td><td class="mdescRight">PKCS11 key object (public or private) <br/></td></tr> <tr class="separator:a2739b52617b9de6366d0ff5942d50a3c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a022695b6b9ac716e3a6c013c4a69ad5f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a022695b6b9ac716e3a6c013c4a69ad5f"></a> typedef struct <a class="el" href="structPKCS11__cert__st.html">PKCS11_cert_st</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a022695b6b9ac716e3a6c013c4a69ad5f">PKCS11_CERT</a></td></tr> <tr class="memdesc:a022695b6b9ac716e3a6c013c4a69ad5f"><td class="mdescLeft"> </td><td class="mdescRight">PKCS11 certificate object. <br/></td></tr> <tr class="separator:a022695b6b9ac716e3a6c013c4a69ad5f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a00e358ca0e95d6845a5f4f3e64d9edc3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00e358ca0e95d6845a5f4f3e64d9edc3"></a> typedef struct <a class="el" href="structPKCS11__token__st.html">PKCS11_token_st</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a00e358ca0e95d6845a5f4f3e64d9edc3">PKCS11_TOKEN</a></td></tr> <tr class="memdesc:a00e358ca0e95d6845a5f4f3e64d9edc3"><td class="mdescLeft"> </td><td class="mdescRight">PKCS11 token: smart card or USB key. <br/></td></tr> <tr class="separator:a00e358ca0e95d6845a5f4f3e64d9edc3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a61c0040c249eadb219fbadb5a02bd1c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61c0040c249eadb219fbadb5a02bd1c6"></a> typedef struct <a class="el" href="structPKCS11__slot__st.html">PKCS11_slot_st</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a></td></tr> <tr class="memdesc:a61c0040c249eadb219fbadb5a02bd1c6"><td class="mdescLeft"> </td><td class="mdescRight">PKCS11 slot: card reader. <br/></td></tr> <tr class="separator:a61c0040c249eadb219fbadb5a02bd1c6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aac0a9aa96d0ea1b27c685f766b5eb395"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac0a9aa96d0ea1b27c685f766b5eb395"></a> typedef struct <a class="el" href="structPKCS11__ctx__st.html">PKCS11_ctx_st</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a></td></tr> <tr class="memdesc:aac0a9aa96d0ea1b27c685f766b5eb395"><td class="mdescLeft"> </td><td class="mdescRight">PKCS11 context. <br/></td></tr> <tr class="separator:aac0a9aa96d0ea1b27c685f766b5eb395"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:a49b91ca17a5ef832582ad75b3fa2cf95"><td class="memItemLeft" align="right" valign="top"><a class="el" href="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a49b91ca17a5ef832582ad75b3fa2cf95">PKCS11_CTX_new</a> (void)</td></tr> <tr class="memdesc:a49b91ca17a5ef832582ad75b3fa2cf95"><td class="mdescLeft"> </td><td class="mdescRight">Create a new libp11 context. <a href="#a49b91ca17a5ef832582ad75b3fa2cf95">More...</a><br/></td></tr> <tr class="separator:a49b91ca17a5ef832582ad75b3fa2cf95"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab9f413f6367beff7140d4c065e76c032"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#ab9f413f6367beff7140d4c065e76c032">PKCS11_CTX_init_args</a> (<a class="el" href="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a> *ctx, const char *init_args)</td></tr> <tr class="memdesc:ab9f413f6367beff7140d4c065e76c032"><td class="mdescLeft"> </td><td class="mdescRight">Specify any private PKCS#11 module initializtion args, if necessary. <a href="#ab9f413f6367beff7140d4c065e76c032">More...</a><br/></td></tr> <tr class="separator:ab9f413f6367beff7140d4c065e76c032"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:acc706b0400ae759a21c8522d6a0b48af"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#acc706b0400ae759a21c8522d6a0b48af">PKCS11_CTX_load</a> (<a class="el" href="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a> *ctx, const char *ident)</td></tr> <tr class="memdesc:acc706b0400ae759a21c8522d6a0b48af"><td class="mdescLeft"> </td><td class="mdescRight">Load a PKCS#11 module. <a href="#acc706b0400ae759a21c8522d6a0b48af">More...</a><br/></td></tr> <tr class="separator:acc706b0400ae759a21c8522d6a0b48af"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6a798ab2361de5e5823b58eca38bd464"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a6a798ab2361de5e5823b58eca38bd464">PKCS11_CTX_unload</a> (<a class="el" href="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a> *ctx)</td></tr> <tr class="memdesc:a6a798ab2361de5e5823b58eca38bd464"><td class="mdescLeft"> </td><td class="mdescRight">Unload a PKCS#11 module. <a href="#a6a798ab2361de5e5823b58eca38bd464">More...</a><br/></td></tr> <tr class="separator:a6a798ab2361de5e5823b58eca38bd464"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a13f672d0022b00601ccf97b8c5856b1e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a13f672d0022b00601ccf97b8c5856b1e">PKCS11_CTX_free</a> (<a class="el" href="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a> *ctx)</td></tr> <tr class="memdesc:a13f672d0022b00601ccf97b8c5856b1e"><td class="mdescLeft"> </td><td class="mdescRight">Free a libp11 context. <a href="#a13f672d0022b00601ccf97b8c5856b1e">More...</a><br/></td></tr> <tr class="separator:a13f672d0022b00601ccf97b8c5856b1e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:adf4c7d6a3378e442df1d0cb1bd036d7f"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#adf4c7d6a3378e442df1d0cb1bd036d7f">PKCS11_open_session</a> (<a class="el" href="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> *slot, int rw)</td></tr> <tr class="memdesc:adf4c7d6a3378e442df1d0cb1bd036d7f"><td class="mdescLeft"> </td><td class="mdescRight">Open a session in RO or RW mode. <a href="#adf4c7d6a3378e442df1d0cb1bd036d7f">More...</a><br/></td></tr> <tr class="separator:adf4c7d6a3378e442df1d0cb1bd036d7f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8e47e93e634e3c6bb900b4bbf81a990c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a8e47e93e634e3c6bb900b4bbf81a990c">PKCS11_enumerate_slots</a> (<a class="el" href="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a> *ctx, <a class="el" href="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> **slotsp, unsigned int *nslotsp)</td></tr> <tr class="memdesc:a8e47e93e634e3c6bb900b4bbf81a990c"><td class="mdescLeft"> </td><td class="mdescRight">Get a list of all slots. <a href="#a8e47e93e634e3c6bb900b4bbf81a990c">More...</a><br/></td></tr> <tr class="separator:a8e47e93e634e3c6bb900b4bbf81a990c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a07bfde5c325cd03a63db1fcbc05f74fe"><td class="memItemLeft" align="right" valign="top">unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a07bfde5c325cd03a63db1fcbc05f74fe">PKCS11_get_slotid_from_slot</a> (<a class="el" href="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> *slotp)</td></tr> <tr class="memdesc:a07bfde5c325cd03a63db1fcbc05f74fe"><td class="mdescLeft"> </td><td class="mdescRight">Get the slot_id from a slot as it is stored in private. <a href="#a07bfde5c325cd03a63db1fcbc05f74fe">More...</a><br/></td></tr> <tr class="separator:a07bfde5c325cd03a63db1fcbc05f74fe"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad67b35aba341a80d5c7f6c8a06eaa762"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#ad67b35aba341a80d5c7f6c8a06eaa762">PKCS11_release_all_slots</a> (<a class="el" href="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a> *ctx, <a class="el" href="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> *slots, unsigned int nslots)</td></tr> <tr class="memdesc:ad67b35aba341a80d5c7f6c8a06eaa762"><td class="mdescLeft"> </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">More...</a><br/></td></tr> <tr class="separator:ad67b35aba341a80d5c7f6c8a06eaa762"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:afe380f5197afb04cf1b1430b50d58eed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#afe380f5197afb04cf1b1430b50d58eed">PKCS11_find_token</a> (<a class="el" href="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a> *ctx, <a class="el" href="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> *slots, unsigned int nslots)</td></tr> <tr class="memdesc:afe380f5197afb04cf1b1430b50d58eed"><td class="mdescLeft"> </td><td class="mdescRight">Find the first slot with a token. <a href="#afe380f5197afb04cf1b1430b50d58eed">More...</a><br/></td></tr> <tr class="separator:afe380f5197afb04cf1b1430b50d58eed"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a59e897cb7af9e5e645552f0738fae162"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a59e897cb7af9e5e645552f0738fae162">PKCS11_login</a> (<a class="el" href="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> *slot, int so, const char *pin)</td></tr> <tr class="memdesc:a59e897cb7af9e5e645552f0738fae162"><td class="mdescLeft"> </td><td class="mdescRight">Authenticate to the card. <a href="#a59e897cb7af9e5e645552f0738fae162">More...</a><br/></td></tr> <tr class="separator:a59e897cb7af9e5e645552f0738fae162"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:afeec15512293e545c9984d8f7fdeef51"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#afeec15512293e545c9984d8f7fdeef51">PKCS11_logout</a> (<a class="el" href="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> *slot)</td></tr> <tr class="memdesc:afeec15512293e545c9984d8f7fdeef51"><td class="mdescLeft"> </td><td class="mdescRight">De-authenticate from the card. <a href="#afeec15512293e545c9984d8f7fdeef51">More...</a><br/></td></tr> <tr class="separator:afeec15512293e545c9984d8f7fdeef51"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae85ad7c87c4c3a1cdb5f5681fba3124c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae85ad7c87c4c3a1cdb5f5681fba3124c"></a> int </td><td class="memItemRight" valign="bottom"><b>PKCS11_enumerate_keys</b> (<a class="el" href="libp11_8h.html#a00e358ca0e95d6845a5f4f3e64d9edc3">PKCS11_TOKEN</a> *, <a class="el" href="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a> **, unsigned int *)</td></tr> <tr class="separator:ae85ad7c87c4c3a1cdb5f5681fba3124c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7595daab1ead2ca6017391d8b7cc2802"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7595daab1ead2ca6017391d8b7cc2802"></a> int </td><td class="memItemRight" valign="bottom"><b>PKCS11_get_key_type</b> (<a class="el" href="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a> *)</td></tr> <tr class="separator:a7595daab1ead2ca6017391d8b7cc2802"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7d55c38b6915b2fb0f263d2955db855c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d55c38b6915b2fb0f263d2955db855c"></a> int </td><td class="memItemRight" valign="bottom"><b>PKCS11_get_key_size</b> (const <a class="el" href="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a> *)</td></tr> <tr class="separator:a7d55c38b6915b2fb0f263d2955db855c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1855e1e080cf984b9f8d3a630321c51e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1855e1e080cf984b9f8d3a630321c51e"></a> int </td><td class="memItemRight" valign="bottom"><b>PKCS11_get_key_modulus</b> (<a class="el" href="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a> *, BIGNUM **)</td></tr> <tr class="separator:a1855e1e080cf984b9f8d3a630321c51e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1bdddef4c5ee60fcc89eef16fedefeb1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1bdddef4c5ee60fcc89eef16fedefeb1"></a> int </td><td class="memItemRight" valign="bottom"><b>PKCS11_get_key_exponent</b> (<a class="el" href="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a> *, BIGNUM **)</td></tr> <tr class="separator:a1bdddef4c5ee60fcc89eef16fedefeb1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a030d908a0b000fa101409ba24a784d18"><td class="memItemLeft" align="right" valign="top">EVP_PKEY * </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a030d908a0b000fa101409ba24a784d18">PKCS11_get_private_key</a> (<a class="el" href="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a> *key)</td></tr> <tr class="memdesc:a030d908a0b000fa101409ba24a784d18"><td class="mdescLeft"> </td><td class="mdescRight">Returns a EVP_PKEY object for the private key. <a href="#a030d908a0b000fa101409ba24a784d18">More...</a><br/></td></tr> <tr class="separator:a030d908a0b000fa101409ba24a784d18"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4875d0a8867b3ccc821517a55b48991d"><td class="memItemLeft" align="right" valign="top">EVP_PKEY * </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a4875d0a8867b3ccc821517a55b48991d">PKCS11_get_public_key</a> (<a class="el" href="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a> *key)</td></tr> <tr class="memdesc:a4875d0a8867b3ccc821517a55b48991d"><td class="mdescLeft"> </td><td class="mdescRight">Returns a EVP_PKEY object with the public key. <a href="#a4875d0a8867b3ccc821517a55b48991d">More...</a><br/></td></tr> <tr class="separator:a4875d0a8867b3ccc821517a55b48991d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7b7cd01d43b4ce8b2bf0dad15cb8741e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b7cd01d43b4ce8b2bf0dad15cb8741e"></a> <a class="el" href="libp11_8h.html#a022695b6b9ac716e3a6c013c4a69ad5f">PKCS11_CERT</a> * </td><td class="memItemRight" valign="bottom"><b>PKCS11_find_certificate</b> (<a class="el" href="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a> *)</td></tr> <tr class="separator:a7b7cd01d43b4ce8b2bf0dad15cb8741e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa8441f8eb4dd4e4d90f2fadd6391790a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8441f8eb4dd4e4d90f2fadd6391790a"></a> <a class="el" href="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a> * </td><td class="memItemRight" valign="bottom"><b>PKCS11_find_key</b> (<a class="el" href="libp11_8h.html#a022695b6b9ac716e3a6c013c4a69ad5f">PKCS11_CERT</a> *)</td></tr> <tr class="separator:aa8441f8eb4dd4e4d90f2fadd6391790a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:adea60d38a76b42f3d4c6d13481c9ad1a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adea60d38a76b42f3d4c6d13481c9ad1a"></a> int </td><td class="memItemRight" valign="bottom"><b>PKCS11_enumerate_certs</b> (<a class="el" href="libp11_8h.html#a00e358ca0e95d6845a5f4f3e64d9edc3">PKCS11_TOKEN</a> *, <a class="el" href="libp11_8h.html#a022695b6b9ac716e3a6c013c4a69ad5f">PKCS11_CERT</a> **, unsigned int *)</td></tr> <tr class="separator:adea60d38a76b42f3d4c6d13481c9ad1a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a766d89edea4624ddd47cf8c0fb001ab6"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a766d89edea4624ddd47cf8c0fb001ab6">PKCS11_init_token</a> (<a class="el" href="libp11_8h.html#a00e358ca0e95d6845a5f4f3e64d9edc3">PKCS11_TOKEN</a> *token, const char *pin, const char *label)</td></tr> <tr class="memdesc:a766d89edea4624ddd47cf8c0fb001ab6"><td class="mdescLeft"> </td><td class="mdescRight">Initialize a token. <a href="#a766d89edea4624ddd47cf8c0fb001ab6">More...</a><br/></td></tr> <tr class="separator:a766d89edea4624ddd47cf8c0fb001ab6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3918c1e173faee47e9126047af0fbf0d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a3918c1e173faee47e9126047af0fbf0d">PKCS11_init_pin</a> (<a class="el" href="libp11_8h.html#a00e358ca0e95d6845a5f4f3e64d9edc3">PKCS11_TOKEN</a> *token, const char *pin)</td></tr> <tr class="memdesc:a3918c1e173faee47e9126047af0fbf0d"><td class="mdescLeft"> </td><td class="mdescRight">Initialize the user PIN on a token. <a href="#a3918c1e173faee47e9126047af0fbf0d">More...</a><br/></td></tr> <tr class="separator:a3918c1e173faee47e9126047af0fbf0d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2e1e08029004500ceb7b45c621d4e019"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a2e1e08029004500ceb7b45c621d4e019">PKCS11_change_pin</a> (<a class="el" href="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> *slot, const char *old_pin, const char *new_pin)</td></tr> <tr class="memdesc:a2e1e08029004500ceb7b45c621d4e019"><td class="mdescLeft"> </td><td class="mdescRight">Change the user PIN on a token. <a href="#a2e1e08029004500ceb7b45c621d4e019">More...</a><br/></td></tr> <tr class="separator:a2e1e08029004500ceb7b45c621d4e019"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a48f81883c2d557099c102553544e9edc"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a48f81883c2d557099c102553544e9edc">PKCS11_generate_key</a> (<a class="el" href="libp11_8h.html#a00e358ca0e95d6845a5f4f3e64d9edc3">PKCS11_TOKEN</a> *token, int algorithm, unsigned int bits, char *label, unsigned char *id, size_t id_len)</td></tr> <tr class="memdesc:a48f81883c2d557099c102553544e9edc"><td class="mdescLeft"> </td><td class="mdescRight">Generate and store a private key on the token. <a href="#a48f81883c2d557099c102553544e9edc">More...</a><br/></td></tr> <tr class="separator:a48f81883c2d557099c102553544e9edc"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af85502d566c59c60a5542fbc38b5d430"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#af85502d566c59c60a5542fbc38b5d430">PKCS11_store_private_key</a> (<a class="el" href="libp11_8h.html#a00e358ca0e95d6845a5f4f3e64d9edc3">PKCS11_TOKEN</a> *token, EVP_PKEY *pk, char *label, unsigned char *id, size_t id_len)</td></tr> <tr class="memdesc:af85502d566c59c60a5542fbc38b5d430"><td class="mdescLeft"> </td><td class="mdescRight">Store private key on a token. <a href="#af85502d566c59c60a5542fbc38b5d430">More...</a><br/></td></tr> <tr class="separator:af85502d566c59c60a5542fbc38b5d430"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0cb818884d9422e6ddce77a21ea43af1"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a0cb818884d9422e6ddce77a21ea43af1">PKCS11_store_public_key</a> (<a class="el" href="libp11_8h.html#a00e358ca0e95d6845a5f4f3e64d9edc3">PKCS11_TOKEN</a> *token, EVP_PKEY *pk, char *label, unsigned char *id, size_t id_len)</td></tr> <tr class="memdesc:a0cb818884d9422e6ddce77a21ea43af1"><td class="mdescLeft"> </td><td class="mdescRight">Store public key on a token. <a href="#a0cb818884d9422e6ddce77a21ea43af1">More...</a><br/></td></tr> <tr class="separator:a0cb818884d9422e6ddce77a21ea43af1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3bcd902b6b42b4f011bdafb2a299fbc7"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#a3bcd902b6b42b4f011bdafb2a299fbc7">PKCS11_store_certificate</a> (<a class="el" href="libp11_8h.html#a00e358ca0e95d6845a5f4f3e64d9edc3">PKCS11_TOKEN</a> *token, X509 *x509, char *label, unsigned char *id, size_t id_len, <a class="el" href="libp11_8h.html#a022695b6b9ac716e3a6c013c4a69ad5f">PKCS11_CERT</a> **ret_cert)</td></tr> <tr class="memdesc:a3bcd902b6b42b4f011bdafb2a299fbc7"><td class="mdescLeft"> </td><td class="mdescRight">Store certificate on a token. <a href="#a3bcd902b6b42b4f011bdafb2a299fbc7">More...</a><br/></td></tr> <tr class="separator:a3bcd902b6b42b4f011bdafb2a299fbc7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aee750b448e17c0d02d54b4987d48c986"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee750b448e17c0d02d54b4987d48c986"></a> int </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="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a> *key)</td></tr> <tr class="separator:aee750b448e17c0d02d54b4987d48c986"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6a366d4a16f929882745388014f04308"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a366d4a16f929882745388014f04308"></a> int </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="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a> *rsa, int padding)</td></tr> <tr class="separator:a6a366d4a16f929882745388014f04308"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae341c01eccd0ff12fca3233a92829812"><td class="memItemLeft" align="right" valign="top">int </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="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a> *key, int padding)</td></tr> <tr class="memdesc:ae341c01eccd0ff12fca3233a92829812"><td class="mdescLeft"> </td><td class="mdescRight">Decrypts data using the private key. <a href="#ae341c01eccd0ff12fca3233a92829812">More...</a><br/></td></tr> <tr class="separator:ae341c01eccd0ff12fca3233a92829812"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9723f782d047771ab7eeca8151be6501"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9723f782d047771ab7eeca8151be6501"></a> int </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="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a> *key)</td></tr> <tr class="separator:a9723f782d047771ab7eeca8151be6501"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1be54a7458351b3b4ff1076981f14002"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1be54a7458351b3b4ff1076981f14002"></a> int </td><td class="memItemRight" valign="bottom"><b>PKCS11_seed_random</b> (<a class="el" href="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> *, const unsigned char *s, unsigned int s_len)</td></tr> <tr class="separator:a1be54a7458351b3b4ff1076981f14002"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:afaccc61a03f8566632c3659e09464757"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afaccc61a03f8566632c3659e09464757"></a> int </td><td class="memItemRight" valign="bottom"><b>PKCS11_generate_random</b> (<a class="el" href="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> *, unsigned char *r, unsigned int r_len)</td></tr> <tr class="separator:afaccc61a03f8566632c3659e09464757"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7bbfab0de63fd5625ad55381a2fcf7b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bbfab0de63fd5625ad55381a2fcf7b0"></a> RSA_METHOD * </td><td class="memItemRight" valign="bottom"><b>PKCS11_get_rsa_method</b> (void)</td></tr> <tr class="separator:a7bbfab0de63fd5625ad55381a2fcf7b0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:afd178da387c9784af8fd23f45091a901"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="libp11_8h.html#afd178da387c9784af8fd23f45091a901">ERR_load_PKCS11_strings</a> (void)</td></tr> <tr class="memdesc:afd178da387c9784af8fd23f45091a901"><td class="mdescLeft"> </td><td class="mdescRight">Load PKCS11 error strings. <a href="#afd178da387c9784af8fd23f45091a901">More...</a><br/></td></tr> <tr class="separator:afd178da387c9784af8fd23f45091a901"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>libp11 header file </p> <p>Definition in file <a class="el" href="libp11_8h_source.html">libp11.h</a>.</p> </div><h2 class="groupheader">Function Documentation</h2> <a class="anchor" id="afd178da387c9784af8fd23f45091a901"></a> <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 </td> <td class="paramname"></td><td>)</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> <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="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> * </td> <td class="paramname"><em>slot</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>old_pin</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>new_pin</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Change the user PIN on a token. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">slot</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 class="paramname">old_pin</td><td>old PIN value </td></tr> <tr><td class="paramname">new_pin</td><td>new PIN value </td></tr> </table> </dd> </dl> <dl class="retval"><dt>Return values</dt><dd> <table class="retval"> <tr><td class="paramname">0</td><td>success </td></tr> <tr><td class="paramname">-1</td><td>error </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a13f672d0022b00601ccf97b8c5856b1e"></a> <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="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a> * </td> <td class="paramname"><em>ctx</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Free a libp11 context. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</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> <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="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a> * </td> <td class="paramname"><em>ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>init_args</em> </td> </tr> <tr> <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="section return"><dt>Returns</dt><dd>none </dd></dl> </div> </div> <a class="anchor" id="acc706b0400ae759a21c8522d6a0b48af"></a> <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="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a> * </td> <td class="paramname"><em>ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>ident</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Load a PKCS#11 module. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</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 class="paramname">ident</td><td>PKCS#11 library filename </td></tr> </table> </dd> </dl> <dl class="retval"><dt>Return values</dt><dd> <table class="retval"> <tr><td class="paramname">0</td><td>success </td></tr> <tr><td class="paramname">-1</td><td>error </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a49b91ca17a5ef832582ad75b3fa2cf95"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a>* PKCS11_CTX_new </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</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="section return"><dt>Returns</dt><dd>an allocated context </dd></dl> </div> </div> <a class="anchor" id="a6a798ab2361de5e5823b58eca38bd464"></a> <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="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a> * </td> <td class="paramname"><em>ctx</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Unload a PKCS#11 module. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</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> <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="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a> * </td> <td class="paramname"><em>ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> ** </td> <td class="paramname"><em>slotsp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned int * </td> <td class="paramname"><em>nslotsp</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Get a list of all slots. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</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 class="paramname">slotsp</td><td>pointer on a list of slots </td></tr> <tr><td class="paramname">nslotsp</td><td>size of the allocated list </td></tr> </table> </dd> </dl> <dl class="retval"><dt>Return values</dt><dd> <table class="retval"> <tr><td class="paramname">0</td><td>success </td></tr> <tr><td class="paramname">-1</td><td>error </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="afe380f5197afb04cf1b1430b50d58eed"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a>* PKCS11_find_token </td> <td>(</td> <td class="paramtype"><a class="el" href="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a> * </td> <td class="paramname"><em>ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> * </td> <td class="paramname"><em>slots</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned int </td> <td class="paramname"><em>nslots</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Find the first slot with a token. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</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 class="paramname">slots</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 class="paramname">nslots</td><td>size of the list </td></tr> </table> </dd> </dl> <dl class="retval"><dt>Return values</dt><dd> <table class="retval"> <tr><td class="paramname">!=NULL</td><td>pointer on a slot structure </td></tr> <tr><td class="paramname">NULL</td><td>error </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a48f81883c2d557099c102553544e9edc"></a> <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="libp11_8h.html#a00e358ca0e95d6845a5f4f3e64d9edc3">PKCS11_TOKEN</a> * </td> <td class="paramname"><em>token</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>algorithm</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned int </td> <td class="paramname"><em>bits</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char * </td> <td class="paramname"><em>label</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned char * </td> <td class="paramname"><em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>id_len</em> </td> </tr> <tr> <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 class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">token</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 class="paramname">algorithm</td><td>EVP_PKEY_RSA </td></tr> <tr><td class="paramname">bits</td><td>size of the modulus in bits </td></tr> <tr><td class="paramname">label</td><td>label for this key </td></tr> <tr><td class="paramname">id</td><td>bytes to use as id value </td></tr> <tr><td class="paramname">id_len</td><td>length of id value. </td></tr> </table> </dd> </dl> <dl class="retval"><dt>Return values</dt><dd> <table class="retval"> <tr><td class="paramname">0</td><td>success </td></tr> <tr><td class="paramname">-1</td><td>error </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a030d908a0b000fa101409ba24a784d18"></a> <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="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a> * </td> <td class="paramname"><em>key</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Returns a EVP_PKEY object for the private key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">key</td><td>PKCS11_KEY object </td></tr> </table> </dd> </dl> <dl class="retval"><dt>Return values</dt><dd> <table class="retval"> <tr><td class="paramname">!=NULL</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 class="paramname">NULL</td><td>error </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a4875d0a8867b3ccc821517a55b48991d"></a> <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="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a> * </td> <td class="paramname"><em>key</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Returns a EVP_PKEY object with the public key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">key</td><td>PKCS11_KEY object </td></tr> </table> </dd> </dl> <dl class="retval"><dt>Return values</dt><dd> <table class="retval"> <tr><td class="paramname">!=NULL</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 class="paramname">NULL</td><td>error </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a07bfde5c325cd03a63db1fcbc05f74fe"></a> <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="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> * </td> <td class="paramname"><em>slotp</em></td><td>)</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 class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">slotp</td><td>pointer on a slot </td></tr> </table> </dd> </dl> <dl class="retval"><dt>Return values</dt><dd> <table class="retval"> <tr><td class="paramname">the</td><td>slotid </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a3918c1e173faee47e9126047af0fbf0d"></a> <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="libp11_8h.html#a00e358ca0e95d6845a5f4f3e64d9edc3">PKCS11_TOKEN</a> * </td> <td class="paramname"><em>token</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>pin</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Initialize the user PIN on a token. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">token</td><td>token descriptor (in general slot->token) </td></tr> <tr><td class="paramname">pin</td><td>new user PIN value </td></tr> </table> </dd> </dl> <dl class="retval"><dt>Return values</dt><dd> <table class="retval"> <tr><td class="paramname">0</td><td>success </td></tr> <tr><td class="paramname">-1</td><td>error </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a766d89edea4624ddd47cf8c0fb001ab6"></a> <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="libp11_8h.html#a00e358ca0e95d6845a5f4f3e64d9edc3">PKCS11_TOKEN</a> * </td> <td class="paramname"><em>token</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>pin</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>label</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Initialize a token. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">token</td><td>token descriptor (in general slot->token) </td></tr> <tr><td class="paramname">pin</td><td>Security Officer PIN value </td></tr> <tr><td class="paramname">label</td><td>new name of the token </td></tr> </table> </dd> </dl> <dl class="retval"><dt>Return values</dt><dd> <table class="retval"> <tr><td class="paramname">0</td><td>success </td></tr> <tr><td class="paramname">-1</td><td>error </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a59e897cb7af9e5e645552f0738fae162"></a> <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="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> * </td> <td class="paramname"><em>slot</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>so</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>pin</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Authenticate to the card. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">slot</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 class="paramname">so</td><td>login as CKU_SO if != 0, otherwise login as CKU_USER </td></tr> <tr><td class="paramname">pin</td><td>PIN value </td></tr> </table> </dd> </dl> <dl class="retval"><dt>Return values</dt><dd> <table class="retval"> <tr><td class="paramname">0</td><td>success </td></tr> <tr><td class="paramname">-1</td><td>error </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="afeec15512293e545c9984d8f7fdeef51"></a> <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="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> * </td> <td class="paramname"><em>slot</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>De-authenticate from the card. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">slot</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 class="retval"><dt>Return values</dt><dd> <table class="retval"> <tr><td class="paramname">0</td><td>success </td></tr> <tr><td class="paramname">-1</td><td>error </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="adf4c7d6a3378e442df1d0cb1bd036d7f"></a> <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="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> * </td> <td class="paramname"><em>slot</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>rw</em> </td> </tr> <tr> <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 class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">slot</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 class="paramname">rw</td><td>open in read/write mode is mode != 0, otherwise in read only mode </td></tr> </table> </dd> </dl> <dl class="retval"><dt>Return values</dt><dd> <table class="retval"> <tr><td class="paramname">0</td><td>success </td></tr> <tr><td class="paramname">-1</td><td>error </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="ae341c01eccd0ff12fca3233a92829812"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int PKCS11_private_decrypt </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>flen</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const unsigned char * </td> <td class="paramname"><em>from</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned char * </td> <td class="paramname"><em>to</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="libp11_8h.html#a2739b52617b9de6366d0ff5942d50a3c">PKCS11_KEY</a> * </td> <td class="paramname"><em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>padding</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Decrypts data using the private key. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">flen</td><td>length of the encrypted data </td></tr> <tr><td class="paramname">from</td><td>encrypted data </td></tr> <tr><td class="paramname">to</td><td>output buffer (MUST be a least flen bytes long) </td></tr> <tr><td class="paramname">key</td><td>private key object </td></tr> <tr><td class="paramname">padding</td><td>padding algorithm to be used </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>the length of the decrypted data or 0 if an error occurred </dd></dl> </div> </div> <a class="anchor" id="ad67b35aba341a80d5c7f6c8a06eaa762"></a> <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="libp11_8h.html#aac0a9aa96d0ea1b27c685f766b5eb395">PKCS11_CTX</a> * </td> <td class="paramname"><em>ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="libp11_8h.html#a61c0040c249eadb219fbadb5a02bd1c6">PKCS11_SLOT</a> * </td> <td class="paramname"><em>slots</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned int </td> <td class="paramname"><em>nslots</em> </td> </tr> <tr> <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 class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</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 class="paramname">slots</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 class="paramname">nslots</td><td>size of the list </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a3bcd902b6b42b4f011bdafb2a299fbc7"></a> <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="libp11_8h.html#a00e358ca0e95d6845a5f4f3e64d9edc3">PKCS11_TOKEN</a> * </td> <td class="paramname"><em>token</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">X509 * </td> <td class="paramname"><em>x509</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char * </td> <td class="paramname"><em>label</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned char * </td> <td class="paramname"><em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>id_len</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="libp11_8h.html#a022695b6b9ac716e3a6c013c4a69ad5f">PKCS11_CERT</a> ** </td> <td class="paramname"><em>ret_cert</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Store certificate on a token. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">token</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 class="paramname">x509</td><td>x509 certificate object </td></tr> <tr><td class="paramname">label</td><td>label for this certificate </td></tr> <tr><td class="paramname">id</td><td>bytes to use as id value </td></tr> <tr><td class="paramname">id_len</td><td>length of id value. </td></tr> <tr><td class="paramname">ret_cert</td><td>put new PKCS11_CERT object here </td></tr> </table> </dd> </dl> <dl class="retval"><dt>Return values</dt><dd> <table class="retval"> <tr><td class="paramname">0</td><td>success </td></tr> <tr><td class="paramname">-1</td><td>error </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="af85502d566c59c60a5542fbc38b5d430"></a> <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="libp11_8h.html#a00e358ca0e95d6845a5f4f3e64d9edc3">PKCS11_TOKEN</a> * </td> <td class="paramname"><em>token</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">EVP_PKEY * </td> <td class="paramname"><em>pk</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char * </td> <td class="paramname"><em>label</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned char * </td> <td class="paramname"><em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>id_len</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Store private key on a token. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">token</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 class="paramname">pk</td><td>private key </td></tr> <tr><td class="paramname">label</td><td>label for this key </td></tr> <tr><td class="paramname">id</td><td>bytes to use as id value </td></tr> <tr><td class="paramname">id_len</td><td>length of id value. </td></tr> </table> </dd> </dl> <dl class="retval"><dt>Return values</dt><dd> <table class="retval"> <tr><td class="paramname">0</td><td>success </td></tr> <tr><td class="paramname">-1</td><td>error </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a0cb818884d9422e6ddce77a21ea43af1"></a> <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="libp11_8h.html#a00e358ca0e95d6845a5f4f3e64d9edc3">PKCS11_TOKEN</a> * </td> <td class="paramname"><em>token</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">EVP_PKEY * </td> <td class="paramname"><em>pk</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char * </td> <td class="paramname"><em>label</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned char * </td> <td class="paramname"><em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>id_len</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Store public key on a token. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">token</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 class="paramname">pk</td><td>private key </td></tr> <tr><td class="paramname">label</td><td>label for this key </td></tr> <tr><td class="paramname">id</td><td>bytes to use as id value </td></tr> <tr><td class="paramname">id_len</td><td>length of id value. </td></tr> </table> </dd> </dl> <dl class="retval"><dt>Return values</dt><dd> <table class="retval"> <tr><td class="paramname">0</td><td>success </td></tr> <tr><td class="paramname">-1</td><td>error </td></tr> </table> </dd> </dl> </div> </div> </div><!-- contents --> <hr> <table width="100%"><tr><td>libp11, Copyright (C) 2005 Olaf Kirch <okir@lst.de></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>