1226031Sstas<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2226031Sstas<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 3226031Sstas<title>Heimdalx509library: hx509 certificate store functions</title> 4226031Sstas<link href="doxygen.css" rel="stylesheet" type="text/css"> 5226031Sstas<link href="tabs.css" rel="stylesheet" type="text/css"> 6226031Sstas</head><body> 7226031Sstas<p> 8226031Sstas<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a> 9226031Sstas</p> 10226031Sstas<!-- end of header marker --> 11226031Sstas<!-- Generated by Doxygen 1.5.6 --> 12226031Sstas<div class="navigation" id="top"> 13226031Sstas <div class="tabs"> 14226031Sstas <ul> 15226031Sstas <li><a href="index.html"><span>Main Page</span></a></li> 16226031Sstas <li><a href="pages.html"><span>Related Pages</span></a></li> 17226031Sstas <li><a href="modules.html"><span>Modules</span></a></li> 18226031Sstas </ul> 19226031Sstas </div> 20226031Sstas</div> 21226031Sstas<div class="contents"> 22226031Sstas<h1>hx509 certificate store functions</h1><table border="0" cellpadding="0" cellspacing="0"> 23226031Sstas<tr><td></td></tr> 24226031Sstas<tr><td colspan="2"><br><h2>Functions</h2></td></tr> 25226031Sstas<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g38cec16ab23ae65a6113f6e323a38032">hx509_certs_init</a> (hx509_context context, const char *name, int flags, hx509_lock lock, hx509_certs *certs)</td></tr> 26226031Sstas 27226031Sstas<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g1dbde45fbffbaf909cd99b339f8641bd">hx509_certs_store</a> (hx509_context context, hx509_certs certs, int flags, hx509_lock lock)</td></tr> 28226031Sstas 29226031Sstas<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#ga3df96cfe4137beaea7e7b87b95dbe3f">hx509_certs_free</a> (hx509_certs *certs)</td></tr> 30226031Sstas 31226031Sstas<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g8734f5269e166329c0b66d546187a4a9">hx509_certs_start_seq</a> (hx509_context context, hx509_certs certs, hx509_cursor *cursor)</td></tr> 32226031Sstas 33226031Sstas<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g63c38b4729df8a074f191db831ac9db7">hx509_certs_next_cert</a> (hx509_context context, hx509_certs certs, hx509_cursor cursor, hx509_cert *cert)</td></tr> 34226031Sstas 35226031Sstas<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g9f05c59f97dcfade924a72fe82cf9a16">hx509_certs_end_seq</a> (hx509_context context, hx509_certs certs, hx509_cursor cursor)</td></tr> 36226031Sstas 37226031Sstas<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g4ba1d8deb9545c59b8f6bde86585014b">hx509_certs_iter_f</a> (hx509_context context, hx509_certs certs, int(*func)(hx509_context, void *, hx509_cert), void *ctx)</td></tr> 38226031Sstas 39226031Sstas<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#gee9789b91e1b425c17ddd6a5c1f2a834">hx509_ci_print_names</a> (hx509_context context, void *ctx, hx509_cert c)</td></tr> 40226031Sstas 41226031Sstas<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g4ebe1ee219223b590bdf3e58dc2182da">hx509_certs_add</a> (hx509_context context, hx509_certs certs, hx509_cert cert)</td></tr> 42226031Sstas 43226031Sstas<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g5f0c737b4dddb2a8c7bbab05b04ceb7a">hx509_certs_find</a> (hx509_context context, hx509_certs certs, const hx509_query *q, hx509_cert *r)</td></tr> 44226031Sstas 45226031Sstas<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g1a7b21b477dc3a43286fd1ff96163609">hx509_certs_filter</a> (hx509_context context, hx509_certs certs, const hx509_query *q, hx509_certs *result)</td></tr> 46226031Sstas 47226031Sstas<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g201bbf3425e451337abb26589202d9fe">hx509_certs_merge</a> (hx509_context context, hx509_certs to, hx509_certs from)</td></tr> 48226031Sstas 49226031Sstas<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g5aa16e2f2d1bd1349e0586fdb53b85e6">hx509_certs_append</a> (hx509_context context, hx509_certs to, hx509_lock lock, const char *name)</td></tr> 50226031Sstas 51226031Sstas<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g0457faff2ddddfbae50fa62ec1369072">hx509_get_one_cert</a> (hx509_context context, hx509_certs certs, hx509_cert *c)</td></tr> 52226031Sstas 53226031Sstas<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#g82fc84cff0a174d58e763ffe2c2a0aad">hx509_certs_info</a> (hx509_context context, hx509_certs certs, int(*func)(void *, const char *), void *ctx)</td></tr> 54226031Sstas 55226031Sstas</table> 56226031Sstas<hr><a name="_details"></a><h2>Detailed Description</h2> 57226031SstasSee the <a class="el" href="page_keyset.html">Certificate store operations</a> for description and examples. <hr><h2>Function Documentation</h2> 58226031Sstas<a class="anchor" name="g4ebe1ee219223b590bdf3e58dc2182da"></a><!-- doxytag: member="keyset.c::hx509_certs_add" ref="g4ebe1ee219223b590bdf3e58dc2182da" args="(hx509_context context, hx509_certs certs, hx509_cert cert)" --> 59226031Sstas<div class="memitem"> 60226031Sstas<div class="memproto"> 61226031Sstas <table class="memname"> 62226031Sstas <tr> 63226031Sstas <td class="memname">int hx509_certs_add </td> 64226031Sstas <td>(</td> 65226031Sstas <td class="paramtype">hx509_context </td> 66226031Sstas <td class="paramname"> <em>context</em>, </td> 67226031Sstas </tr> 68226031Sstas <tr> 69226031Sstas <td class="paramkey"></td> 70226031Sstas <td></td> 71226031Sstas <td class="paramtype">hx509_certs </td> 72226031Sstas <td class="paramname"> <em>certs</em>, </td> 73226031Sstas </tr> 74226031Sstas <tr> 75226031Sstas <td class="paramkey"></td> 76226031Sstas <td></td> 77226031Sstas <td class="paramtype">hx509_cert </td> 78226031Sstas <td class="paramname"> <em>cert</em></td><td> </td> 79226031Sstas </tr> 80226031Sstas <tr> 81226031Sstas <td></td> 82226031Sstas <td>)</td> 83226031Sstas <td></td><td></td><td></td> 84226031Sstas </tr> 85226031Sstas </table> 86226031Sstas</div> 87226031Sstas<div class="memdoc"> 88226031Sstas 89226031Sstas<p> 90226031SstasAdd a certificate to the certificiate store.<p> 91226031SstasThe receiving keyset certs will either increase reference counter of the cert or make a deep copy, either way, the caller needs to free the cert itself.<p> 92226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 93226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 94226031Sstas <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr> 95226031Sstas <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to add the certificate to. </td></tr> 96226031Sstas <tr><td valign="top"></td><td valign="top"><em>cert</em> </td><td>certificate to add.</td></tr> 97226031Sstas </table> 98226031Sstas</dl> 99226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl> 100226031Sstas 101226031Sstas</div> 102226031Sstas</div><p> 103226031Sstas<a class="anchor" name="g5aa16e2f2d1bd1349e0586fdb53b85e6"></a><!-- doxytag: member="keyset.c::hx509_certs_append" ref="g5aa16e2f2d1bd1349e0586fdb53b85e6" args="(hx509_context context, hx509_certs to, hx509_lock lock, const char *name)" --> 104226031Sstas<div class="memitem"> 105226031Sstas<div class="memproto"> 106226031Sstas <table class="memname"> 107226031Sstas <tr> 108226031Sstas <td class="memname">int hx509_certs_append </td> 109226031Sstas <td>(</td> 110226031Sstas <td class="paramtype">hx509_context </td> 111226031Sstas <td class="paramname"> <em>context</em>, </td> 112226031Sstas </tr> 113226031Sstas <tr> 114226031Sstas <td class="paramkey"></td> 115226031Sstas <td></td> 116226031Sstas <td class="paramtype">hx509_certs </td> 117226031Sstas <td class="paramname"> <em>to</em>, </td> 118226031Sstas </tr> 119226031Sstas <tr> 120226031Sstas <td class="paramkey"></td> 121226031Sstas <td></td> 122226031Sstas <td class="paramtype">hx509_lock </td> 123226031Sstas <td class="paramname"> <em>lock</em>, </td> 124226031Sstas </tr> 125226031Sstas <tr> 126226031Sstas <td class="paramkey"></td> 127226031Sstas <td></td> 128226031Sstas <td class="paramtype">const char * </td> 129226031Sstas <td class="paramname"> <em>name</em></td><td> </td> 130226031Sstas </tr> 131226031Sstas <tr> 132226031Sstas <td></td> 133226031Sstas <td>)</td> 134226031Sstas <td></td><td></td><td></td> 135226031Sstas </tr> 136226031Sstas </table> 137226031Sstas</div> 138226031Sstas<div class="memdoc"> 139226031Sstas 140226031Sstas<p> 141226031SstasSame a <a class="el" href="group__hx509__keyset.html#g201bbf3425e451337abb26589202d9fe">hx509_certs_merge()</a> but use a lock and name to describe the from source.<p> 142226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 143226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 144226031Sstas <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr> 145226031Sstas <tr><td valign="top"></td><td valign="top"><em>to</em> </td><td>the store to merge into. </td></tr> 146226031Sstas <tr><td valign="top"></td><td valign="top"><em>lock</em> </td><td>a lock that unlocks the certificates store, use NULL to select no password/certifictes/prompt lock (see <a class="el" href="page_lock.html">Locking and unlocking certificates and encrypted data.</a>). </td></tr> 147226031Sstas <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>name of the source store</td></tr> 148226031Sstas </table> 149226031Sstas</dl> 150226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl> 151226031Sstas 152226031Sstas</div> 153226031Sstas</div><p> 154226031Sstas<a class="anchor" name="g9f05c59f97dcfade924a72fe82cf9a16"></a><!-- doxytag: member="keyset.c::hx509_certs_end_seq" ref="g9f05c59f97dcfade924a72fe82cf9a16" args="(hx509_context context, hx509_certs certs, hx509_cursor cursor)" --> 155226031Sstas<div class="memitem"> 156226031Sstas<div class="memproto"> 157226031Sstas <table class="memname"> 158226031Sstas <tr> 159226031Sstas <td class="memname">int hx509_certs_end_seq </td> 160226031Sstas <td>(</td> 161226031Sstas <td class="paramtype">hx509_context </td> 162226031Sstas <td class="paramname"> <em>context</em>, </td> 163226031Sstas </tr> 164226031Sstas <tr> 165226031Sstas <td class="paramkey"></td> 166226031Sstas <td></td> 167226031Sstas <td class="paramtype">hx509_certs </td> 168226031Sstas <td class="paramname"> <em>certs</em>, </td> 169226031Sstas </tr> 170226031Sstas <tr> 171226031Sstas <td class="paramkey"></td> 172226031Sstas <td></td> 173226031Sstas <td class="paramtype">hx509_cursor </td> 174226031Sstas <td class="paramname"> <em>cursor</em></td><td> </td> 175226031Sstas </tr> 176226031Sstas <tr> 177226031Sstas <td></td> 178226031Sstas <td>)</td> 179226031Sstas <td></td><td></td><td></td> 180226031Sstas </tr> 181226031Sstas </table> 182226031Sstas</div> 183226031Sstas<div class="memdoc"> 184226031Sstas 185226031Sstas<p> 186226031SstasEnd the iteration over certificates.<p> 187226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 188226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 189226031Sstas <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr> 190226031Sstas <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to iterate over. </td></tr> 191226031Sstas <tr><td valign="top"></td><td valign="top"><em>cursor</em> </td><td>cursor that will keep track of progress, freed.</td></tr> 192226031Sstas </table> 193226031Sstas</dl> 194226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl> 195226031Sstas 196226031Sstas</div> 197226031Sstas</div><p> 198226031Sstas<a class="anchor" name="g1a7b21b477dc3a43286fd1ff96163609"></a><!-- doxytag: member="keyset.c::hx509_certs_filter" ref="g1a7b21b477dc3a43286fd1ff96163609" args="(hx509_context context, hx509_certs certs, const hx509_query *q, hx509_certs *result)" --> 199226031Sstas<div class="memitem"> 200226031Sstas<div class="memproto"> 201226031Sstas <table class="memname"> 202226031Sstas <tr> 203226031Sstas <td class="memname">int hx509_certs_filter </td> 204226031Sstas <td>(</td> 205226031Sstas <td class="paramtype">hx509_context </td> 206226031Sstas <td class="paramname"> <em>context</em>, </td> 207226031Sstas </tr> 208226031Sstas <tr> 209226031Sstas <td class="paramkey"></td> 210226031Sstas <td></td> 211226031Sstas <td class="paramtype">hx509_certs </td> 212226031Sstas <td class="paramname"> <em>certs</em>, </td> 213226031Sstas </tr> 214226031Sstas <tr> 215226031Sstas <td class="paramkey"></td> 216226031Sstas <td></td> 217226031Sstas <td class="paramtype">const hx509_query * </td> 218226031Sstas <td class="paramname"> <em>q</em>, </td> 219226031Sstas </tr> 220226031Sstas <tr> 221226031Sstas <td class="paramkey"></td> 222226031Sstas <td></td> 223226031Sstas <td class="paramtype">hx509_certs * </td> 224226031Sstas <td class="paramname"> <em>result</em></td><td> </td> 225226031Sstas </tr> 226226031Sstas <tr> 227226031Sstas <td></td> 228226031Sstas <td>)</td> 229226031Sstas <td></td><td></td><td></td> 230226031Sstas </tr> 231226031Sstas </table> 232226031Sstas</div> 233226031Sstas<div class="memdoc"> 234226031Sstas 235226031Sstas<p> 236226031SstasFilter certificate matching the query.<p> 237226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 238226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 239226031Sstas <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr> 240226031Sstas <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to search. </td></tr> 241226031Sstas <tr><td valign="top"></td><td valign="top"><em>q</em> </td><td>query allocated with <a class="el" href="group__hx509__query.html">hx509 query functions</a> functions. </td></tr> 242226031Sstas <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>the filtered certificate store, caller must free with <a class="el" href="group__hx509__keyset.html#ga3df96cfe4137beaea7e7b87b95dbe3f">hx509_certs_free()</a>.</td></tr> 243226031Sstas </table> 244226031Sstas</dl> 245226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl> 246226031Sstas 247226031Sstas<p> 248226031SstasReturn HX509_CERT_NOT_FOUND if no certificate in certs matched the query. 249226031Sstas</div> 250226031Sstas</div><p> 251226031Sstas<a class="anchor" name="g5f0c737b4dddb2a8c7bbab05b04ceb7a"></a><!-- doxytag: member="keyset.c::hx509_certs_find" ref="g5f0c737b4dddb2a8c7bbab05b04ceb7a" args="(hx509_context context, hx509_certs certs, const hx509_query *q, hx509_cert *r)" --> 252226031Sstas<div class="memitem"> 253226031Sstas<div class="memproto"> 254226031Sstas <table class="memname"> 255226031Sstas <tr> 256226031Sstas <td class="memname">int hx509_certs_find </td> 257226031Sstas <td>(</td> 258226031Sstas <td class="paramtype">hx509_context </td> 259226031Sstas <td class="paramname"> <em>context</em>, </td> 260226031Sstas </tr> 261226031Sstas <tr> 262226031Sstas <td class="paramkey"></td> 263226031Sstas <td></td> 264226031Sstas <td class="paramtype">hx509_certs </td> 265226031Sstas <td class="paramname"> <em>certs</em>, </td> 266226031Sstas </tr> 267226031Sstas <tr> 268226031Sstas <td class="paramkey"></td> 269226031Sstas <td></td> 270226031Sstas <td class="paramtype">const hx509_query * </td> 271226031Sstas <td class="paramname"> <em>q</em>, </td> 272226031Sstas </tr> 273226031Sstas <tr> 274226031Sstas <td class="paramkey"></td> 275226031Sstas <td></td> 276226031Sstas <td class="paramtype">hx509_cert * </td> 277226031Sstas <td class="paramname"> <em>r</em></td><td> </td> 278226031Sstas </tr> 279226031Sstas <tr> 280226031Sstas <td></td> 281226031Sstas <td>)</td> 282226031Sstas <td></td><td></td><td></td> 283226031Sstas </tr> 284226031Sstas </table> 285226031Sstas</div> 286226031Sstas<div class="memdoc"> 287226031Sstas 288226031Sstas<p> 289226031SstasFind a certificate matching the query.<p> 290226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 291226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 292226031Sstas <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr> 293226031Sstas <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to search. </td></tr> 294226031Sstas <tr><td valign="top"></td><td valign="top"><em>q</em> </td><td>query allocated with <a class="el" href="group__hx509__query.html">hx509 query functions</a> functions. </td></tr> 295226031Sstas <tr><td valign="top"></td><td valign="top"><em>r</em> </td><td>return certificate (or NULL on error), should be freed with <a class="el" href="group__hx509__cert.html#gd2f9bb0ddc4babb26a8ccd983db8c948">hx509_cert_free()</a>.</td></tr> 296226031Sstas </table> 297226031Sstas</dl> 298226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl> 299226031Sstas 300226031Sstas<p> 301226031SstasReturn HX509_CERT_NOT_FOUND if no certificate in certs matched the query. 302226031Sstas</div> 303226031Sstas</div><p> 304226031Sstas<a class="anchor" name="ga3df96cfe4137beaea7e7b87b95dbe3f"></a><!-- doxytag: member="keyset.c::hx509_certs_free" ref="ga3df96cfe4137beaea7e7b87b95dbe3f" args="(hx509_certs *certs)" --> 305226031Sstas<div class="memitem"> 306226031Sstas<div class="memproto"> 307226031Sstas <table class="memname"> 308226031Sstas <tr> 309226031Sstas <td class="memname">void hx509_certs_free </td> 310226031Sstas <td>(</td> 311226031Sstas <td class="paramtype">hx509_certs * </td> 312226031Sstas <td class="paramname"> <em>certs</em> </td> 313226031Sstas <td> ) </td> 314226031Sstas <td></td> 315226031Sstas </tr> 316226031Sstas </table> 317226031Sstas</div> 318226031Sstas<div class="memdoc"> 319226031Sstas 320226031Sstas<p> 321226031SstasFree a certificate store.<p> 322226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 323226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 324226031Sstas <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to free. </td></tr> 325226031Sstas </table> 326226031Sstas</dl> 327226031Sstas 328226031Sstas</div> 329226031Sstas</div><p> 330226031Sstas<a class="anchor" name="g82fc84cff0a174d58e763ffe2c2a0aad"></a><!-- doxytag: member="keyset.c::hx509_certs_info" ref="g82fc84cff0a174d58e763ffe2c2a0aad" args="(hx509_context context, hx509_certs certs, int(*func)(void *, const char *), void *ctx)" --> 331226031Sstas<div class="memitem"> 332226031Sstas<div class="memproto"> 333226031Sstas <table class="memname"> 334226031Sstas <tr> 335226031Sstas <td class="memname">int hx509_certs_info </td> 336226031Sstas <td>(</td> 337226031Sstas <td class="paramtype">hx509_context </td> 338226031Sstas <td class="paramname"> <em>context</em>, </td> 339226031Sstas </tr> 340226031Sstas <tr> 341226031Sstas <td class="paramkey"></td> 342226031Sstas <td></td> 343226031Sstas <td class="paramtype">hx509_certs </td> 344226031Sstas <td class="paramname"> <em>certs</em>, </td> 345226031Sstas </tr> 346226031Sstas <tr> 347226031Sstas <td class="paramkey"></td> 348226031Sstas <td></td> 349226031Sstas <td class="paramtype">int(*)(void *, const char *) </td> 350226031Sstas <td class="paramname"> <em>func</em>, </td> 351226031Sstas </tr> 352226031Sstas <tr> 353226031Sstas <td class="paramkey"></td> 354226031Sstas <td></td> 355226031Sstas <td class="paramtype">void * </td> 356226031Sstas <td class="paramname"> <em>ctx</em></td><td> </td> 357226031Sstas </tr> 358226031Sstas <tr> 359226031Sstas <td></td> 360226031Sstas <td>)</td> 361226031Sstas <td></td><td></td><td></td> 362226031Sstas </tr> 363226031Sstas </table> 364226031Sstas</div> 365226031Sstas<div class="memdoc"> 366226031Sstas 367226031Sstas<p> 368226031SstasPrint some info about the certificate store.<p> 369226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 370226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 371226031Sstas <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr> 372226031Sstas <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to print information about. </td></tr> 373226031Sstas <tr><td valign="top"></td><td valign="top"><em>func</em> </td><td>function that will get each line of the information, if NULL is used the data is printed on a FILE descriptor that should be passed in ctx, if ctx also is NULL, stdout is used. </td></tr> 374226031Sstas <tr><td valign="top"></td><td valign="top"><em>ctx</em> </td><td>parameter to func.</td></tr> 375226031Sstas </table> 376226031Sstas</dl> 377226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl> 378226031Sstas 379226031Sstas</div> 380226031Sstas</div><p> 381226031Sstas<a class="anchor" name="g38cec16ab23ae65a6113f6e323a38032"></a><!-- doxytag: member="keyset.c::hx509_certs_init" ref="g38cec16ab23ae65a6113f6e323a38032" args="(hx509_context context, const char *name, int flags, hx509_lock lock, hx509_certs *certs)" --> 382226031Sstas<div class="memitem"> 383226031Sstas<div class="memproto"> 384226031Sstas <table class="memname"> 385226031Sstas <tr> 386226031Sstas <td class="memname">int hx509_certs_init </td> 387226031Sstas <td>(</td> 388226031Sstas <td class="paramtype">hx509_context </td> 389226031Sstas <td class="paramname"> <em>context</em>, </td> 390226031Sstas </tr> 391226031Sstas <tr> 392226031Sstas <td class="paramkey"></td> 393226031Sstas <td></td> 394226031Sstas <td class="paramtype">const char * </td> 395226031Sstas <td class="paramname"> <em>name</em>, </td> 396226031Sstas </tr> 397226031Sstas <tr> 398226031Sstas <td class="paramkey"></td> 399226031Sstas <td></td> 400226031Sstas <td class="paramtype">int </td> 401226031Sstas <td class="paramname"> <em>flags</em>, </td> 402226031Sstas </tr> 403226031Sstas <tr> 404226031Sstas <td class="paramkey"></td> 405226031Sstas <td></td> 406226031Sstas <td class="paramtype">hx509_lock </td> 407226031Sstas <td class="paramname"> <em>lock</em>, </td> 408226031Sstas </tr> 409226031Sstas <tr> 410226031Sstas <td class="paramkey"></td> 411226031Sstas <td></td> 412226031Sstas <td class="paramtype">hx509_certs * </td> 413226031Sstas <td class="paramname"> <em>certs</em></td><td> </td> 414226031Sstas </tr> 415226031Sstas <tr> 416226031Sstas <td></td> 417226031Sstas <td>)</td> 418226031Sstas <td></td><td></td><td></td> 419226031Sstas </tr> 420226031Sstas </table> 421226031Sstas</div> 422226031Sstas<div class="memdoc"> 423226031Sstas 424226031Sstas<p> 425226031SstasOpen or creates a new hx509 certificate store.<p> 426226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 427226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 428226031Sstas <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>A hx509 context </td></tr> 429226031Sstas <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>name of the store, format is TYPE:type-specific-string, if NULL is used the MEMORY store is used. </td></tr> 430226031Sstas <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>list of flags:<ul> 431226031Sstas<li>HX509_CERTS_CREATE create a new keystore of the specific TYPE.</li><li>HX509_CERTS_UNPROTECT_ALL fails if any private key failed to be extracted. </li></ul> 432226031Sstas</td></tr> 433226031Sstas <tr><td valign="top"></td><td valign="top"><em>lock</em> </td><td>a lock that unlocks the certificates store, use NULL to select no password/certifictes/prompt lock (see <a class="el" href="page_lock.html">Locking and unlocking certificates and encrypted data.</a>). </td></tr> 434226031Sstas <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>return pointer, free with <a class="el" href="group__hx509__keyset.html#ga3df96cfe4137beaea7e7b87b95dbe3f">hx509_certs_free()</a>. </td></tr> 435226031Sstas </table> 436226031Sstas</dl> 437226031Sstas 438226031Sstas</div> 439226031Sstas</div><p> 440226031Sstas<a class="anchor" name="g4ba1d8deb9545c59b8f6bde86585014b"></a><!-- doxytag: member="keyset.c::hx509_certs_iter_f" ref="g4ba1d8deb9545c59b8f6bde86585014b" args="(hx509_context context, hx509_certs certs, int(*func)(hx509_context, void *, hx509_cert), void *ctx)" --> 441226031Sstas<div class="memitem"> 442226031Sstas<div class="memproto"> 443226031Sstas <table class="memname"> 444226031Sstas <tr> 445226031Sstas <td class="memname">int hx509_certs_iter_f </td> 446226031Sstas <td>(</td> 447226031Sstas <td class="paramtype">hx509_context </td> 448226031Sstas <td class="paramname"> <em>context</em>, </td> 449226031Sstas </tr> 450226031Sstas <tr> 451226031Sstas <td class="paramkey"></td> 452226031Sstas <td></td> 453226031Sstas <td class="paramtype">hx509_certs </td> 454226031Sstas <td class="paramname"> <em>certs</em>, </td> 455226031Sstas </tr> 456226031Sstas <tr> 457226031Sstas <td class="paramkey"></td> 458226031Sstas <td></td> 459226031Sstas <td class="paramtype">int(*)(hx509_context, void *, hx509_cert) </td> 460226031Sstas <td class="paramname"> <em>func</em>, </td> 461226031Sstas </tr> 462226031Sstas <tr> 463226031Sstas <td class="paramkey"></td> 464226031Sstas <td></td> 465226031Sstas <td class="paramtype">void * </td> 466226031Sstas <td class="paramname"> <em>ctx</em></td><td> </td> 467226031Sstas </tr> 468226031Sstas <tr> 469226031Sstas <td></td> 470226031Sstas <td>)</td> 471226031Sstas <td></td><td></td><td></td> 472226031Sstas </tr> 473226031Sstas </table> 474226031Sstas</div> 475226031Sstas<div class="memdoc"> 476226031Sstas 477226031Sstas<p> 478226031SstasIterate over all certificates in a keystore and call an function for each fo them.<p> 479226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 480226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 481226031Sstas <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr> 482226031Sstas <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to iterate over. </td></tr> 483226031Sstas <tr><td valign="top"></td><td valign="top"><em>func</em> </td><td>function to call for each certificate. The function should return non-zero to abort the iteration, that value is passed back to the caller of <a class="el" href="group__hx509__keyset.html#g4ba1d8deb9545c59b8f6bde86585014b">hx509_certs_iter_f()</a>. </td></tr> 484226031Sstas <tr><td valign="top"></td><td valign="top"><em>ctx</em> </td><td>context variable that will passed to the function.</td></tr> 485226031Sstas </table> 486226031Sstas</dl> 487226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl> 488226031Sstas 489226031Sstas</div> 490226031Sstas</div><p> 491226031Sstas<a class="anchor" name="g201bbf3425e451337abb26589202d9fe"></a><!-- doxytag: member="keyset.c::hx509_certs_merge" ref="g201bbf3425e451337abb26589202d9fe" args="(hx509_context context, hx509_certs to, hx509_certs from)" --> 492226031Sstas<div class="memitem"> 493226031Sstas<div class="memproto"> 494226031Sstas <table class="memname"> 495226031Sstas <tr> 496226031Sstas <td class="memname">int hx509_certs_merge </td> 497226031Sstas <td>(</td> 498226031Sstas <td class="paramtype">hx509_context </td> 499226031Sstas <td class="paramname"> <em>context</em>, </td> 500226031Sstas </tr> 501226031Sstas <tr> 502226031Sstas <td class="paramkey"></td> 503226031Sstas <td></td> 504226031Sstas <td class="paramtype">hx509_certs </td> 505226031Sstas <td class="paramname"> <em>to</em>, </td> 506226031Sstas </tr> 507226031Sstas <tr> 508226031Sstas <td class="paramkey"></td> 509226031Sstas <td></td> 510226031Sstas <td class="paramtype">hx509_certs </td> 511226031Sstas <td class="paramname"> <em>from</em></td><td> </td> 512226031Sstas </tr> 513226031Sstas <tr> 514226031Sstas <td></td> 515226031Sstas <td>)</td> 516226031Sstas <td></td><td></td><td></td> 517226031Sstas </tr> 518226031Sstas </table> 519226031Sstas</div> 520226031Sstas<div class="memdoc"> 521226031Sstas 522226031Sstas<p> 523226031SstasMerge a certificate store into another. The from store is keep intact.<p> 524226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 525226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 526226031Sstas <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr> 527226031Sstas <tr><td valign="top"></td><td valign="top"><em>to</em> </td><td>the store to merge into. </td></tr> 528226031Sstas <tr><td valign="top"></td><td valign="top"><em>from</em> </td><td>the store to copy the object from.</td></tr> 529226031Sstas </table> 530226031Sstas</dl> 531226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl> 532226031Sstas 533226031Sstas</div> 534226031Sstas</div><p> 535226031Sstas<a class="anchor" name="g63c38b4729df8a074f191db831ac9db7"></a><!-- doxytag: member="keyset.c::hx509_certs_next_cert" ref="g63c38b4729df8a074f191db831ac9db7" args="(hx509_context context, hx509_certs certs, hx509_cursor cursor, hx509_cert *cert)" --> 536226031Sstas<div class="memitem"> 537226031Sstas<div class="memproto"> 538226031Sstas <table class="memname"> 539226031Sstas <tr> 540226031Sstas <td class="memname">int hx509_certs_next_cert </td> 541226031Sstas <td>(</td> 542226031Sstas <td class="paramtype">hx509_context </td> 543226031Sstas <td class="paramname"> <em>context</em>, </td> 544226031Sstas </tr> 545226031Sstas <tr> 546226031Sstas <td class="paramkey"></td> 547226031Sstas <td></td> 548226031Sstas <td class="paramtype">hx509_certs </td> 549226031Sstas <td class="paramname"> <em>certs</em>, </td> 550226031Sstas </tr> 551226031Sstas <tr> 552226031Sstas <td class="paramkey"></td> 553226031Sstas <td></td> 554226031Sstas <td class="paramtype">hx509_cursor </td> 555226031Sstas <td class="paramname"> <em>cursor</em>, </td> 556226031Sstas </tr> 557226031Sstas <tr> 558226031Sstas <td class="paramkey"></td> 559226031Sstas <td></td> 560226031Sstas <td class="paramtype">hx509_cert * </td> 561226031Sstas <td class="paramname"> <em>cert</em></td><td> </td> 562226031Sstas </tr> 563226031Sstas <tr> 564226031Sstas <td></td> 565226031Sstas <td>)</td> 566226031Sstas <td></td><td></td><td></td> 567226031Sstas </tr> 568226031Sstas </table> 569226031Sstas</div> 570226031Sstas<div class="memdoc"> 571226031Sstas 572226031Sstas<p> 573226031SstasGet next ceritificate from the certificate keystore pointed out by cursor.<p> 574226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 575226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 576226031Sstas <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr> 577226031Sstas <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to iterate over. </td></tr> 578226031Sstas <tr><td valign="top"></td><td valign="top"><em>cursor</em> </td><td>cursor that keeps track of progress. </td></tr> 579226031Sstas <tr><td valign="top"></td><td valign="top"><em>cert</em> </td><td>return certificate next in store, NULL if the store contains no more certificates. Free with <a class="el" href="group__hx509__cert.html#gd2f9bb0ddc4babb26a8ccd983db8c948">hx509_cert_free()</a>.</td></tr> 580226031Sstas </table> 581226031Sstas</dl> 582226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl> 583226031Sstas 584226031Sstas</div> 585226031Sstas</div><p> 586226031Sstas<a class="anchor" name="g8734f5269e166329c0b66d546187a4a9"></a><!-- doxytag: member="keyset.c::hx509_certs_start_seq" ref="g8734f5269e166329c0b66d546187a4a9" args="(hx509_context context, hx509_certs certs, hx509_cursor *cursor)" --> 587226031Sstas<div class="memitem"> 588226031Sstas<div class="memproto"> 589226031Sstas <table class="memname"> 590226031Sstas <tr> 591226031Sstas <td class="memname">int hx509_certs_start_seq </td> 592226031Sstas <td>(</td> 593226031Sstas <td class="paramtype">hx509_context </td> 594226031Sstas <td class="paramname"> <em>context</em>, </td> 595226031Sstas </tr> 596226031Sstas <tr> 597226031Sstas <td class="paramkey"></td> 598226031Sstas <td></td> 599226031Sstas <td class="paramtype">hx509_certs </td> 600226031Sstas <td class="paramname"> <em>certs</em>, </td> 601226031Sstas </tr> 602226031Sstas <tr> 603226031Sstas <td class="paramkey"></td> 604226031Sstas <td></td> 605226031Sstas <td class="paramtype">hx509_cursor * </td> 606226031Sstas <td class="paramname"> <em>cursor</em></td><td> </td> 607226031Sstas </tr> 608226031Sstas <tr> 609226031Sstas <td></td> 610226031Sstas <td>)</td> 611226031Sstas <td></td><td></td><td></td> 612226031Sstas </tr> 613226031Sstas </table> 614226031Sstas</div> 615226031Sstas<div class="memdoc"> 616226031Sstas 617226031Sstas<p> 618226031SstasStart the integration<p> 619226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 620226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 621226031Sstas <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr> 622226031Sstas <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to iterate over </td></tr> 623226031Sstas <tr><td valign="top"></td><td valign="top"><em>cursor</em> </td><td>cursor that will keep track of progress, free with <a class="el" href="group__hx509__keyset.html#g9f05c59f97dcfade924a72fe82cf9a16">hx509_certs_end_seq()</a>.</td></tr> 624226031Sstas </table> 625226031Sstas</dl> 626226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. HX509_UNSUPPORTED_OPERATION is returned if the certificate store doesn't support the iteration operation. </dd></dl> 627226031Sstas 628226031Sstas</div> 629226031Sstas</div><p> 630226031Sstas<a class="anchor" name="g1dbde45fbffbaf909cd99b339f8641bd"></a><!-- doxytag: member="keyset.c::hx509_certs_store" ref="g1dbde45fbffbaf909cd99b339f8641bd" args="(hx509_context context, hx509_certs certs, int flags, hx509_lock lock)" --> 631226031Sstas<div class="memitem"> 632226031Sstas<div class="memproto"> 633226031Sstas <table class="memname"> 634226031Sstas <tr> 635226031Sstas <td class="memname">int hx509_certs_store </td> 636226031Sstas <td>(</td> 637226031Sstas <td class="paramtype">hx509_context </td> 638226031Sstas <td class="paramname"> <em>context</em>, </td> 639226031Sstas </tr> 640226031Sstas <tr> 641226031Sstas <td class="paramkey"></td> 642226031Sstas <td></td> 643226031Sstas <td class="paramtype">hx509_certs </td> 644226031Sstas <td class="paramname"> <em>certs</em>, </td> 645226031Sstas </tr> 646226031Sstas <tr> 647226031Sstas <td class="paramkey"></td> 648226031Sstas <td></td> 649226031Sstas <td class="paramtype">int </td> 650226031Sstas <td class="paramname"> <em>flags</em>, </td> 651226031Sstas </tr> 652226031Sstas <tr> 653226031Sstas <td class="paramkey"></td> 654226031Sstas <td></td> 655226031Sstas <td class="paramtype">hx509_lock </td> 656226031Sstas <td class="paramname"> <em>lock</em></td><td> </td> 657226031Sstas </tr> 658226031Sstas <tr> 659226031Sstas <td></td> 660226031Sstas <td>)</td> 661226031Sstas <td></td><td></td><td></td> 662226031Sstas </tr> 663226031Sstas </table> 664226031Sstas</div> 665226031Sstas<div class="memdoc"> 666226031Sstas 667226031Sstas<p> 668226031SstasWrite the certificate store to stable storage.<p> 669226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 670226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 671226031Sstas <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>A hx509 context. </td></tr> 672226031Sstas <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>a certificate store to store. </td></tr> 673226031Sstas <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>currently unused, use 0. </td></tr> 674226031Sstas <tr><td valign="top"></td><td valign="top"><em>lock</em> </td><td>a lock that unlocks the certificates store, use NULL to select no password/certifictes/prompt lock (see <a class="el" href="page_lock.html">Locking and unlocking certificates and encrypted data.</a>).</td></tr> 675226031Sstas </table> 676226031Sstas</dl> 677226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. HX509_UNSUPPORTED_OPERATION if the certificate store doesn't support the store operation. </dd></dl> 678226031Sstas 679226031Sstas</div> 680226031Sstas</div><p> 681226031Sstas<a class="anchor" name="gee9789b91e1b425c17ddd6a5c1f2a834"></a><!-- doxytag: member="keyset.c::hx509_ci_print_names" ref="gee9789b91e1b425c17ddd6a5c1f2a834" args="(hx509_context context, void *ctx, hx509_cert c)" --> 682226031Sstas<div class="memitem"> 683226031Sstas<div class="memproto"> 684226031Sstas <table class="memname"> 685226031Sstas <tr> 686226031Sstas <td class="memname">int hx509_ci_print_names </td> 687226031Sstas <td>(</td> 688226031Sstas <td class="paramtype">hx509_context </td> 689226031Sstas <td class="paramname"> <em>context</em>, </td> 690226031Sstas </tr> 691226031Sstas <tr> 692226031Sstas <td class="paramkey"></td> 693226031Sstas <td></td> 694226031Sstas <td class="paramtype">void * </td> 695226031Sstas <td class="paramname"> <em>ctx</em>, </td> 696226031Sstas </tr> 697226031Sstas <tr> 698226031Sstas <td class="paramkey"></td> 699226031Sstas <td></td> 700226031Sstas <td class="paramtype">hx509_cert </td> 701226031Sstas <td class="paramname"> <em>c</em></td><td> </td> 702226031Sstas </tr> 703226031Sstas <tr> 704226031Sstas <td></td> 705226031Sstas <td>)</td> 706226031Sstas <td></td><td></td><td></td> 707226031Sstas </tr> 708226031Sstas </table> 709226031Sstas</div> 710226031Sstas<div class="memdoc"> 711226031Sstas 712226031Sstas<p> 713226031SstasIterate over all certificates in a keystore and call an function for each fo them.<p> 714226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 715226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 716226031Sstas <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr> 717226031Sstas <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to iterate over. </td></tr> 718226031Sstas <tr><td valign="top"></td><td valign="top"><em>func</em> </td><td>function to call for each certificate. The function should return non-zero to abort the iteration, that value is passed back to the caller of hx509_certs_iter().</td></tr> 719226031Sstas </table> 720226031Sstas</dl> 721226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. Function to use to <a class="el" href="group__hx509__keyset.html#g4ba1d8deb9545c59b8f6bde86585014b">hx509_certs_iter_f()</a> as a function argument, the ctx variable to <a class="el" href="group__hx509__keyset.html#g4ba1d8deb9545c59b8f6bde86585014b">hx509_certs_iter_f()</a> should be a FILE file descriptor.</dd></dl> 722226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 723226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 724226031Sstas <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr> 725226031Sstas <tr><td valign="top"></td><td valign="top"><em>ctx</em> </td><td>used by <a class="el" href="group__hx509__keyset.html#g4ba1d8deb9545c59b8f6bde86585014b">hx509_certs_iter_f()</a>. </td></tr> 726226031Sstas <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>a certificate</td></tr> 727226031Sstas </table> 728226031Sstas</dl> 729226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl> 730226031Sstas 731226031Sstas</div> 732226031Sstas</div><p> 733226031Sstas<a class="anchor" name="g0457faff2ddddfbae50fa62ec1369072"></a><!-- doxytag: member="keyset.c::hx509_get_one_cert" ref="g0457faff2ddddfbae50fa62ec1369072" args="(hx509_context context, hx509_certs certs, hx509_cert *c)" --> 734226031Sstas<div class="memitem"> 735226031Sstas<div class="memproto"> 736226031Sstas <table class="memname"> 737226031Sstas <tr> 738226031Sstas <td class="memname">int hx509_get_one_cert </td> 739226031Sstas <td>(</td> 740226031Sstas <td class="paramtype">hx509_context </td> 741226031Sstas <td class="paramname"> <em>context</em>, </td> 742226031Sstas </tr> 743226031Sstas <tr> 744226031Sstas <td class="paramkey"></td> 745226031Sstas <td></td> 746226031Sstas <td class="paramtype">hx509_certs </td> 747226031Sstas <td class="paramname"> <em>certs</em>, </td> 748226031Sstas </tr> 749226031Sstas <tr> 750226031Sstas <td class="paramkey"></td> 751226031Sstas <td></td> 752226031Sstas <td class="paramtype">hx509_cert * </td> 753226031Sstas <td class="paramname"> <em>c</em></td><td> </td> 754226031Sstas </tr> 755226031Sstas <tr> 756226031Sstas <td></td> 757226031Sstas <td>)</td> 758226031Sstas <td></td><td></td><td></td> 759226031Sstas </tr> 760226031Sstas </table> 761226031Sstas</div> 762226031Sstas<div class="memdoc"> 763226031Sstas 764226031Sstas<p> 765226031SstasGet one random certificate from the certificate store.<p> 766226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 767226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 768226031Sstas <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr> 769226031Sstas <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>a certificate store to get the certificate from. </td></tr> 770226031Sstas <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>return certificate, should be freed with <a class="el" href="group__hx509__cert.html#gd2f9bb0ddc4babb26a8ccd983db8c948">hx509_cert_free()</a>.</td></tr> 771226031Sstas </table> 772226031Sstas</dl> 773226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl> 774226031Sstas 775226031Sstas</div> 776226031Sstas</div><p> 777226031Sstas</div> 778226031Sstas<hr size="1"><address style="text-align: right;"><small> 779234027SstasGenerated on Wed Jan 11 14:07:40 2012 for Heimdalx509library by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address> 780226031Sstas</body> 781226031Sstas</html> 782