1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3 <title>Heimdalx509library: hx509 certificate store functions</title>
4 <link href="doxygen.css" rel="stylesheet" type="text/css">
5 <link href="tabs.css" rel="stylesheet" type="text/css">
8 <a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
10 <!-- end of header marker -->
11 <!-- Generated by Doxygen 1.5.6 -->
12 <div class="navigation" id="top">
15 <li><a href="index.html"><span>Main Page</span></a></li>
16 <li><a href="pages.html"><span>Related Pages</span></a></li>
17 <li><a href="modules.html"><span>Modules</span></a></li>
21 <div class="contents">
22 <h1>hx509 certificate store functions</h1><table border="0" cellpadding="0" cellspacing="0">
24 <tr><td colspan="2"><br><h2>Functions</h2></td></tr>
25 <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>
27 <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>
29 <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>
31 <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>
33 <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>
35 <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>
37 <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>
39 <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>
41 <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>
43 <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>
45 <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>
47 <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>
49 <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>
51 <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>
53 <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>
56 <hr><a name="_details"></a><h2>Detailed Description</h2>
57 See the <a class="el" href="page_keyset.html">Certificate store operations</a> for description and examples. <hr><h2>Function Documentation</h2>
58 <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)" -->
60 <div class="memproto">
61 <table class="memname">
63 <td class="memname">int hx509_certs_add </td>
65 <td class="paramtype">hx509_context </td>
66 <td class="paramname"> <em>context</em>, </td>
69 <td class="paramkey"></td>
71 <td class="paramtype">hx509_certs </td>
72 <td class="paramname"> <em>certs</em>, </td>
75 <td class="paramkey"></td>
77 <td class="paramtype">hx509_cert </td>
78 <td class="paramname"> <em>cert</em></td><td> </td>
83 <td></td><td></td><td></td>
90 Add a certificate to the certificiate store.<p>
91 The 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>
92 <dl compact><dt><b>Parameters:</b></dt><dd>
93 <table border="0" cellspacing="2" cellpadding="0">
94 <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr>
95 <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to add the certificate to. </td></tr>
96 <tr><td valign="top"></td><td valign="top"><em>cert</em> </td><td>certificate to add.</td></tr>
99 <dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
103 <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)" -->
104 <div class="memitem">
105 <div class="memproto">
106 <table class="memname">
108 <td class="memname">int hx509_certs_append </td>
110 <td class="paramtype">hx509_context </td>
111 <td class="paramname"> <em>context</em>, </td>
114 <td class="paramkey"></td>
116 <td class="paramtype">hx509_certs </td>
117 <td class="paramname"> <em>to</em>, </td>
120 <td class="paramkey"></td>
122 <td class="paramtype">hx509_lock </td>
123 <td class="paramname"> <em>lock</em>, </td>
126 <td class="paramkey"></td>
128 <td class="paramtype">const char * </td>
129 <td class="paramname"> <em>name</em></td><td> </td>
134 <td></td><td></td><td></td>
141 Same 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>
142 <dl compact><dt><b>Parameters:</b></dt><dd>
143 <table border="0" cellspacing="2" cellpadding="0">
144 <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr>
145 <tr><td valign="top"></td><td valign="top"><em>to</em> </td><td>the store to merge into. </td></tr>
146 <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>
147 <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>name of the source store</td></tr>
150 <dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
154 <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)" -->
155 <div class="memitem">
156 <div class="memproto">
157 <table class="memname">
159 <td class="memname">int hx509_certs_end_seq </td>
161 <td class="paramtype">hx509_context </td>
162 <td class="paramname"> <em>context</em>, </td>
165 <td class="paramkey"></td>
167 <td class="paramtype">hx509_certs </td>
168 <td class="paramname"> <em>certs</em>, </td>
171 <td class="paramkey"></td>
173 <td class="paramtype">hx509_cursor </td>
174 <td class="paramname"> <em>cursor</em></td><td> </td>
179 <td></td><td></td><td></td>
186 End the iteration over certificates.<p>
187 <dl compact><dt><b>Parameters:</b></dt><dd>
188 <table border="0" cellspacing="2" cellpadding="0">
189 <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr>
190 <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to iterate over. </td></tr>
191 <tr><td valign="top"></td><td valign="top"><em>cursor</em> </td><td>cursor that will keep track of progress, freed.</td></tr>
194 <dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
198 <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)" -->
199 <div class="memitem">
200 <div class="memproto">
201 <table class="memname">
203 <td class="memname">int hx509_certs_filter </td>
205 <td class="paramtype">hx509_context </td>
206 <td class="paramname"> <em>context</em>, </td>
209 <td class="paramkey"></td>
211 <td class="paramtype">hx509_certs </td>
212 <td class="paramname"> <em>certs</em>, </td>
215 <td class="paramkey"></td>
217 <td class="paramtype">const hx509_query * </td>
218 <td class="paramname"> <em>q</em>, </td>
221 <td class="paramkey"></td>
223 <td class="paramtype">hx509_certs * </td>
224 <td class="paramname"> <em>result</em></td><td> </td>
229 <td></td><td></td><td></td>
236 Filter certificate matching the query.<p>
237 <dl compact><dt><b>Parameters:</b></dt><dd>
238 <table border="0" cellspacing="2" cellpadding="0">
239 <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr>
240 <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to search. </td></tr>
241 <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>
242 <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>
245 <dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
248 Return HX509_CERT_NOT_FOUND if no certificate in certs matched the query.
251 <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)" -->
252 <div class="memitem">
253 <div class="memproto">
254 <table class="memname">
256 <td class="memname">int hx509_certs_find </td>
258 <td class="paramtype">hx509_context </td>
259 <td class="paramname"> <em>context</em>, </td>
262 <td class="paramkey"></td>
264 <td class="paramtype">hx509_certs </td>
265 <td class="paramname"> <em>certs</em>, </td>
268 <td class="paramkey"></td>
270 <td class="paramtype">const hx509_query * </td>
271 <td class="paramname"> <em>q</em>, </td>
274 <td class="paramkey"></td>
276 <td class="paramtype">hx509_cert * </td>
277 <td class="paramname"> <em>r</em></td><td> </td>
282 <td></td><td></td><td></td>
289 Find a certificate matching the query.<p>
290 <dl compact><dt><b>Parameters:</b></dt><dd>
291 <table border="0" cellspacing="2" cellpadding="0">
292 <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr>
293 <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to search. </td></tr>
294 <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>
295 <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>
298 <dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
301 Return HX509_CERT_NOT_FOUND if no certificate in certs matched the query.
304 <a class="anchor" name="ga3df96cfe4137beaea7e7b87b95dbe3f"></a><!-- doxytag: member="keyset.c::hx509_certs_free" ref="ga3df96cfe4137beaea7e7b87b95dbe3f" args="(hx509_certs *certs)" -->
305 <div class="memitem">
306 <div class="memproto">
307 <table class="memname">
309 <td class="memname">void hx509_certs_free </td>
311 <td class="paramtype">hx509_certs * </td>
312 <td class="paramname"> <em>certs</em> </td>
313 <td> ) </td>
321 Free a certificate store.<p>
322 <dl compact><dt><b>Parameters:</b></dt><dd>
323 <table border="0" cellspacing="2" cellpadding="0">
324 <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to free. </td></tr>
330 <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)" -->
331 <div class="memitem">
332 <div class="memproto">
333 <table class="memname">
335 <td class="memname">int hx509_certs_info </td>
337 <td class="paramtype">hx509_context </td>
338 <td class="paramname"> <em>context</em>, </td>
341 <td class="paramkey"></td>
343 <td class="paramtype">hx509_certs </td>
344 <td class="paramname"> <em>certs</em>, </td>
347 <td class="paramkey"></td>
349 <td class="paramtype">int(*)(void *, const char *) </td>
350 <td class="paramname"> <em>func</em>, </td>
353 <td class="paramkey"></td>
355 <td class="paramtype">void * </td>
356 <td class="paramname"> <em>ctx</em></td><td> </td>
361 <td></td><td></td><td></td>
368 Print some info about the certificate store.<p>
369 <dl compact><dt><b>Parameters:</b></dt><dd>
370 <table border="0" cellspacing="2" cellpadding="0">
371 <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr>
372 <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to print information about. </td></tr>
373 <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>
374 <tr><td valign="top"></td><td valign="top"><em>ctx</em> </td><td>parameter to func.</td></tr>
377 <dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
381 <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)" -->
382 <div class="memitem">
383 <div class="memproto">
384 <table class="memname">
386 <td class="memname">int hx509_certs_init </td>
388 <td class="paramtype">hx509_context </td>
389 <td class="paramname"> <em>context</em>, </td>
392 <td class="paramkey"></td>
394 <td class="paramtype">const char * </td>
395 <td class="paramname"> <em>name</em>, </td>
398 <td class="paramkey"></td>
400 <td class="paramtype">int </td>
401 <td class="paramname"> <em>flags</em>, </td>
404 <td class="paramkey"></td>
406 <td class="paramtype">hx509_lock </td>
407 <td class="paramname"> <em>lock</em>, </td>
410 <td class="paramkey"></td>
412 <td class="paramtype">hx509_certs * </td>
413 <td class="paramname"> <em>certs</em></td><td> </td>
418 <td></td><td></td><td></td>
425 Open or creates a new hx509 certificate store.<p>
426 <dl compact><dt><b>Parameters:</b></dt><dd>
427 <table border="0" cellspacing="2" cellpadding="0">
428 <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>A hx509 context </td></tr>
429 <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>
430 <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>list of flags:<ul>
431 <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>
433 <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>
434 <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>
440 <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)" -->
441 <div class="memitem">
442 <div class="memproto">
443 <table class="memname">
445 <td class="memname">int hx509_certs_iter_f </td>
447 <td class="paramtype">hx509_context </td>
448 <td class="paramname"> <em>context</em>, </td>
451 <td class="paramkey"></td>
453 <td class="paramtype">hx509_certs </td>
454 <td class="paramname"> <em>certs</em>, </td>
457 <td class="paramkey"></td>
459 <td class="paramtype">int(*)(hx509_context, void *, hx509_cert) </td>
460 <td class="paramname"> <em>func</em>, </td>
463 <td class="paramkey"></td>
465 <td class="paramtype">void * </td>
466 <td class="paramname"> <em>ctx</em></td><td> </td>
471 <td></td><td></td><td></td>
478 Iterate over all certificates in a keystore and call an function for each fo them.<p>
479 <dl compact><dt><b>Parameters:</b></dt><dd>
480 <table border="0" cellspacing="2" cellpadding="0">
481 <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr>
482 <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to iterate over. </td></tr>
483 <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>
484 <tr><td valign="top"></td><td valign="top"><em>ctx</em> </td><td>context variable that will passed to the function.</td></tr>
487 <dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
491 <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)" -->
492 <div class="memitem">
493 <div class="memproto">
494 <table class="memname">
496 <td class="memname">int hx509_certs_merge </td>
498 <td class="paramtype">hx509_context </td>
499 <td class="paramname"> <em>context</em>, </td>
502 <td class="paramkey"></td>
504 <td class="paramtype">hx509_certs </td>
505 <td class="paramname"> <em>to</em>, </td>
508 <td class="paramkey"></td>
510 <td class="paramtype">hx509_certs </td>
511 <td class="paramname"> <em>from</em></td><td> </td>
516 <td></td><td></td><td></td>
523 Merge a certificate store into another. The from store is keep intact.<p>
524 <dl compact><dt><b>Parameters:</b></dt><dd>
525 <table border="0" cellspacing="2" cellpadding="0">
526 <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr>
527 <tr><td valign="top"></td><td valign="top"><em>to</em> </td><td>the store to merge into. </td></tr>
528 <tr><td valign="top"></td><td valign="top"><em>from</em> </td><td>the store to copy the object from.</td></tr>
531 <dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
535 <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)" -->
536 <div class="memitem">
537 <div class="memproto">
538 <table class="memname">
540 <td class="memname">int hx509_certs_next_cert </td>
542 <td class="paramtype">hx509_context </td>
543 <td class="paramname"> <em>context</em>, </td>
546 <td class="paramkey"></td>
548 <td class="paramtype">hx509_certs </td>
549 <td class="paramname"> <em>certs</em>, </td>
552 <td class="paramkey"></td>
554 <td class="paramtype">hx509_cursor </td>
555 <td class="paramname"> <em>cursor</em>, </td>
558 <td class="paramkey"></td>
560 <td class="paramtype">hx509_cert * </td>
561 <td class="paramname"> <em>cert</em></td><td> </td>
566 <td></td><td></td><td></td>
573 Get next ceritificate from the certificate keystore pointed out by cursor.<p>
574 <dl compact><dt><b>Parameters:</b></dt><dd>
575 <table border="0" cellspacing="2" cellpadding="0">
576 <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr>
577 <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to iterate over. </td></tr>
578 <tr><td valign="top"></td><td valign="top"><em>cursor</em> </td><td>cursor that keeps track of progress. </td></tr>
579 <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>
582 <dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
586 <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)" -->
587 <div class="memitem">
588 <div class="memproto">
589 <table class="memname">
591 <td class="memname">int hx509_certs_start_seq </td>
593 <td class="paramtype">hx509_context </td>
594 <td class="paramname"> <em>context</em>, </td>
597 <td class="paramkey"></td>
599 <td class="paramtype">hx509_certs </td>
600 <td class="paramname"> <em>certs</em>, </td>
603 <td class="paramkey"></td>
605 <td class="paramtype">hx509_cursor * </td>
606 <td class="paramname"> <em>cursor</em></td><td> </td>
611 <td></td><td></td><td></td>
618 Start the integration<p>
619 <dl compact><dt><b>Parameters:</b></dt><dd>
620 <table border="0" cellspacing="2" cellpadding="0">
621 <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr>
622 <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to iterate over </td></tr>
623 <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>
626 <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>
630 <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)" -->
631 <div class="memitem">
632 <div class="memproto">
633 <table class="memname">
635 <td class="memname">int hx509_certs_store </td>
637 <td class="paramtype">hx509_context </td>
638 <td class="paramname"> <em>context</em>, </td>
641 <td class="paramkey"></td>
643 <td class="paramtype">hx509_certs </td>
644 <td class="paramname"> <em>certs</em>, </td>
647 <td class="paramkey"></td>
649 <td class="paramtype">int </td>
650 <td class="paramname"> <em>flags</em>, </td>
653 <td class="paramkey"></td>
655 <td class="paramtype">hx509_lock </td>
656 <td class="paramname"> <em>lock</em></td><td> </td>
661 <td></td><td></td><td></td>
668 Write the certificate store to stable storage.<p>
669 <dl compact><dt><b>Parameters:</b></dt><dd>
670 <table border="0" cellspacing="2" cellpadding="0">
671 <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>A hx509 context. </td></tr>
672 <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>a certificate store to store. </td></tr>
673 <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>currently unused, use 0. </td></tr>
674 <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>
677 <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>
681 <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)" -->
682 <div class="memitem">
683 <div class="memproto">
684 <table class="memname">
686 <td class="memname">int hx509_ci_print_names </td>
688 <td class="paramtype">hx509_context </td>
689 <td class="paramname"> <em>context</em>, </td>
692 <td class="paramkey"></td>
694 <td class="paramtype">void * </td>
695 <td class="paramname"> <em>ctx</em>, </td>
698 <td class="paramkey"></td>
700 <td class="paramtype">hx509_cert </td>
701 <td class="paramname"> <em>c</em></td><td> </td>
706 <td></td><td></td><td></td>
713 Iterate over all certificates in a keystore and call an function for each fo them.<p>
714 <dl compact><dt><b>Parameters:</b></dt><dd>
715 <table border="0" cellspacing="2" cellpadding="0">
716 <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr>
717 <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>certificate store to iterate over. </td></tr>
718 <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>
721 <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>
722 <dl compact><dt><b>Parameters:</b></dt><dd>
723 <table border="0" cellspacing="2" cellpadding="0">
724 <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr>
725 <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>
726 <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>a certificate</td></tr>
729 <dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
733 <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)" -->
734 <div class="memitem">
735 <div class="memproto">
736 <table class="memname">
738 <td class="memname">int hx509_get_one_cert </td>
740 <td class="paramtype">hx509_context </td>
741 <td class="paramname"> <em>context</em>, </td>
744 <td class="paramkey"></td>
746 <td class="paramtype">hx509_certs </td>
747 <td class="paramname"> <em>certs</em>, </td>
750 <td class="paramkey"></td>
752 <td class="paramtype">hx509_cert * </td>
753 <td class="paramname"> <em>c</em></td><td> </td>
758 <td></td><td></td><td></td>
765 Get one random certificate from the certificate store.<p>
766 <dl compact><dt><b>Parameters:</b></dt><dd>
767 <table border="0" cellspacing="2" cellpadding="0">
768 <tr><td valign="top"></td><td valign="top"><em>context</em> </td><td>a hx509 context. </td></tr>
769 <tr><td valign="top"></td><td valign="top"><em>certs</em> </td><td>a certificate store to get the certificate from. </td></tr>
770 <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>
773 <dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns an hx509 error code. </dd></dl>
778 <hr size="1"><address style="text-align: right;"><small>
779 Generated 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>