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>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"> 6</head><body> 7<p> 8<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a> 9</p> 10<!-- end of header marker --> 11<!-- Generated by Doxygen 1.9.1 --> 12<script type="text/javascript" src="menudata.js"></script> 13<script type="text/javascript" src="menu.js"></script> 14<script type="text/javascript"> 15/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16$(function() { 17 initMenu('',false,false,'search.php','Search'); 18}); 19/* @license-end */</script> 20<div id="main-nav"></div> 21</div><!-- top --> 22<div class="header"> 23 <div class="summary"> 24<a href="#func-members">Functions</a> </div> 25 <div class="headertitle"> 26<div class="title">hx509 certificate store functions</div> </div> 27</div><!--header--> 28<div class="contents"> 29<table class="memberdecls"> 30<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> 31Functions</h2></td></tr> 32<tr class="memitem:ga38cec16ab23ae65a6113f6e323a38032"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#ga38cec16ab23ae65a6113f6e323a38032">hx509_certs_init</a> (hx509_context context, const char *name, int flags, hx509_lock lock, hx509_certs *certs)</td></tr> 33<tr class="separator:ga38cec16ab23ae65a6113f6e323a38032"><td class="memSeparator" colspan="2"> </td></tr> 34<tr class="memitem:ga1dbde45fbffbaf909cd99b339f8641bd"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#ga1dbde45fbffbaf909cd99b339f8641bd">hx509_certs_store</a> (hx509_context context, hx509_certs certs, int flags, hx509_lock lock)</td></tr> 35<tr class="separator:ga1dbde45fbffbaf909cd99b339f8641bd"><td class="memSeparator" colspan="2"> </td></tr> 36<tr class="memitem:gaa3df96cfe4137beaea7e7b87b95dbe3f"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#gaa3df96cfe4137beaea7e7b87b95dbe3f">hx509_certs_free</a> (hx509_certs *certs)</td></tr> 37<tr class="separator:gaa3df96cfe4137beaea7e7b87b95dbe3f"><td class="memSeparator" colspan="2"> </td></tr> 38<tr class="memitem:ga8734f5269e166329c0b66d546187a4a9"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#ga8734f5269e166329c0b66d546187a4a9">hx509_certs_start_seq</a> (hx509_context context, hx509_certs certs, hx509_cursor *cursor)</td></tr> 39<tr class="separator:ga8734f5269e166329c0b66d546187a4a9"><td class="memSeparator" colspan="2"> </td></tr> 40<tr class="memitem:ga63c38b4729df8a074f191db831ac9db7"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#ga63c38b4729df8a074f191db831ac9db7">hx509_certs_next_cert</a> (hx509_context context, hx509_certs certs, hx509_cursor cursor, hx509_cert *cert)</td></tr> 41<tr class="separator:ga63c38b4729df8a074f191db831ac9db7"><td class="memSeparator" colspan="2"> </td></tr> 42<tr class="memitem:ga9f05c59f97dcfade924a72fe82cf9a16"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#ga9f05c59f97dcfade924a72fe82cf9a16">hx509_certs_end_seq</a> (hx509_context context, hx509_certs certs, hx509_cursor cursor)</td></tr> 43<tr class="separator:ga9f05c59f97dcfade924a72fe82cf9a16"><td class="memSeparator" colspan="2"> </td></tr> 44<tr class="memitem:ga4ba1d8deb9545c59b8f6bde86585014b"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#ga4ba1d8deb9545c59b8f6bde86585014b">hx509_certs_iter_f</a> (hx509_context context, hx509_certs certs, int(*func)(hx509_context, void *, hx509_cert), void *ctx)</td></tr> 45<tr class="separator:ga4ba1d8deb9545c59b8f6bde86585014b"><td class="memSeparator" colspan="2"> </td></tr> 46<tr class="memitem:gaee9789b91e1b425c17ddd6a5c1f2a834"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#gaee9789b91e1b425c17ddd6a5c1f2a834">hx509_ci_print_names</a> (hx509_context context, void *ctx, hx509_cert c)</td></tr> 47<tr class="separator:gaee9789b91e1b425c17ddd6a5c1f2a834"><td class="memSeparator" colspan="2"> </td></tr> 48<tr class="memitem:ga4ebe1ee219223b590bdf3e58dc2182da"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#ga4ebe1ee219223b590bdf3e58dc2182da">hx509_certs_add</a> (hx509_context context, hx509_certs certs, hx509_cert cert)</td></tr> 49<tr class="separator:ga4ebe1ee219223b590bdf3e58dc2182da"><td class="memSeparator" colspan="2"> </td></tr> 50<tr class="memitem:ga5f0c737b4dddb2a8c7bbab05b04ceb7a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#ga5f0c737b4dddb2a8c7bbab05b04ceb7a">hx509_certs_find</a> (hx509_context context, hx509_certs certs, const hx509_query *q, hx509_cert *r)</td></tr> 51<tr class="separator:ga5f0c737b4dddb2a8c7bbab05b04ceb7a"><td class="memSeparator" colspan="2"> </td></tr> 52<tr class="memitem:ga1a7b21b477dc3a43286fd1ff96163609"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#ga1a7b21b477dc3a43286fd1ff96163609">hx509_certs_filter</a> (hx509_context context, hx509_certs certs, const hx509_query *q, hx509_certs *result)</td></tr> 53<tr class="separator:ga1a7b21b477dc3a43286fd1ff96163609"><td class="memSeparator" colspan="2"> </td></tr> 54<tr class="memitem:ga201bbf3425e451337abb26589202d9fe"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#ga201bbf3425e451337abb26589202d9fe">hx509_certs_merge</a> (hx509_context context, hx509_certs to, hx509_certs from)</td></tr> 55<tr class="separator:ga201bbf3425e451337abb26589202d9fe"><td class="memSeparator" colspan="2"> </td></tr> 56<tr class="memitem:ga5aa16e2f2d1bd1349e0586fdb53b85e6"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#ga5aa16e2f2d1bd1349e0586fdb53b85e6">hx509_certs_append</a> (hx509_context context, hx509_certs to, hx509_lock lock, const char *name)</td></tr> 57<tr class="separator:ga5aa16e2f2d1bd1349e0586fdb53b85e6"><td class="memSeparator" colspan="2"> </td></tr> 58<tr class="memitem:ga0457faff2ddddfbae50fa62ec1369072"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#ga0457faff2ddddfbae50fa62ec1369072">hx509_get_one_cert</a> (hx509_context context, hx509_certs certs, hx509_cert *c)</td></tr> 59<tr class="separator:ga0457faff2ddddfbae50fa62ec1369072"><td class="memSeparator" colspan="2"> </td></tr> 60<tr class="memitem:ga82fc84cff0a174d58e763ffe2c2a0aad"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__keyset.html#ga82fc84cff0a174d58e763ffe2c2a0aad">hx509_certs_info</a> (hx509_context context, hx509_certs certs, int(*func)(void *, const char *), void *ctx)</td></tr> 61<tr class="separator:ga82fc84cff0a174d58e763ffe2c2a0aad"><td class="memSeparator" colspan="2"> </td></tr> 62</table> 63<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> 64<p>See the <a class="el" href="page_keyset.html">Certificate store operations</a> for description and examples. </p> 65<h2 class="groupheader">Function Documentation</h2> 66<a id="ga4ebe1ee219223b590bdf3e58dc2182da"></a> 67<h2 class="memtitle"><span class="permalink"><a href="#ga4ebe1ee219223b590bdf3e58dc2182da">◆ </a></span>hx509_certs_add()</h2> 68 69<div class="memitem"> 70<div class="memproto"> 71 <table class="memname"> 72 <tr> 73 <td class="memname">int hx509_certs_add </td> 74 <td>(</td> 75 <td class="paramtype">hx509_context </td> 76 <td class="paramname"><em>context</em>, </td> 77 </tr> 78 <tr> 79 <td class="paramkey"></td> 80 <td></td> 81 <td class="paramtype">hx509_certs </td> 82 <td class="paramname"><em>certs</em>, </td> 83 </tr> 84 <tr> 85 <td class="paramkey"></td> 86 <td></td> 87 <td class="paramtype">hx509_cert </td> 88 <td class="paramname"><em>cert</em> </td> 89 </tr> 90 <tr> 91 <td></td> 92 <td>)</td> 93 <td></td><td></td> 94 </tr> 95 </table> 96</div><div class="memdoc"> 97<p>Add a certificate to the certificiate store.</p> 98<p>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> 99<dl class="params"><dt>Parameters</dt><dd> 100 <table class="params"> 101 <tr><td class="paramname">context</td><td>a hx509 context. </td></tr> 102 <tr><td class="paramname">certs</td><td>certificate store to add the certificate to. </td></tr> 103 <tr><td class="paramname">cert</td><td>certificate to add.</td></tr> 104 </table> 105 </dd> 106</dl> 107<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 error code. </dd></dl> 108 109</div> 110</div> 111<a id="ga5aa16e2f2d1bd1349e0586fdb53b85e6"></a> 112<h2 class="memtitle"><span class="permalink"><a href="#ga5aa16e2f2d1bd1349e0586fdb53b85e6">◆ </a></span>hx509_certs_append()</h2> 113 114<div class="memitem"> 115<div class="memproto"> 116 <table class="memname"> 117 <tr> 118 <td class="memname">int hx509_certs_append </td> 119 <td>(</td> 120 <td class="paramtype">hx509_context </td> 121 <td class="paramname"><em>context</em>, </td> 122 </tr> 123 <tr> 124 <td class="paramkey"></td> 125 <td></td> 126 <td class="paramtype">hx509_certs </td> 127 <td class="paramname"><em>to</em>, </td> 128 </tr> 129 <tr> 130 <td class="paramkey"></td> 131 <td></td> 132 <td class="paramtype">hx509_lock </td> 133 <td class="paramname"><em>lock</em>, </td> 134 </tr> 135 <tr> 136 <td class="paramkey"></td> 137 <td></td> 138 <td class="paramtype">const char * </td> 139 <td class="paramname"><em>name</em> </td> 140 </tr> 141 <tr> 142 <td></td> 143 <td>)</td> 144 <td></td><td></td> 145 </tr> 146 </table> 147</div><div class="memdoc"> 148<p>Same a <a class="el" href="group__hx509__keyset.html#ga201bbf3425e451337abb26589202d9fe">hx509_certs_merge()</a> but use a lock and name to describe the from source.</p> 149<dl class="params"><dt>Parameters</dt><dd> 150 <table class="params"> 151 <tr><td class="paramname">context</td><td>a hx509 context. </td></tr> 152 <tr><td class="paramname">to</td><td>the store to merge into. </td></tr> 153 <tr><td class="paramname">lock</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> 154 <tr><td class="paramname">name</td><td>name of the source store</td></tr> 155 </table> 156 </dd> 157</dl> 158<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 error code. </dd></dl> 159 160</div> 161</div> 162<a id="ga9f05c59f97dcfade924a72fe82cf9a16"></a> 163<h2 class="memtitle"><span class="permalink"><a href="#ga9f05c59f97dcfade924a72fe82cf9a16">◆ </a></span>hx509_certs_end_seq()</h2> 164 165<div class="memitem"> 166<div class="memproto"> 167 <table class="memname"> 168 <tr> 169 <td class="memname">int hx509_certs_end_seq </td> 170 <td>(</td> 171 <td class="paramtype">hx509_context </td> 172 <td class="paramname"><em>context</em>, </td> 173 </tr> 174 <tr> 175 <td class="paramkey"></td> 176 <td></td> 177 <td class="paramtype">hx509_certs </td> 178 <td class="paramname"><em>certs</em>, </td> 179 </tr> 180 <tr> 181 <td class="paramkey"></td> 182 <td></td> 183 <td class="paramtype">hx509_cursor </td> 184 <td class="paramname"><em>cursor</em> </td> 185 </tr> 186 <tr> 187 <td></td> 188 <td>)</td> 189 <td></td><td></td> 190 </tr> 191 </table> 192</div><div class="memdoc"> 193<p>End the iteration over certificates.</p> 194<dl class="params"><dt>Parameters</dt><dd> 195 <table class="params"> 196 <tr><td class="paramname">context</td><td>a hx509 context. </td></tr> 197 <tr><td class="paramname">certs</td><td>certificate store to iterate over. </td></tr> 198 <tr><td class="paramname">cursor</td><td>cursor that will keep track of progress, freed.</td></tr> 199 </table> 200 </dd> 201</dl> 202<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 error code. </dd></dl> 203 204</div> 205</div> 206<a id="ga1a7b21b477dc3a43286fd1ff96163609"></a> 207<h2 class="memtitle"><span class="permalink"><a href="#ga1a7b21b477dc3a43286fd1ff96163609">◆ </a></span>hx509_certs_filter()</h2> 208 209<div class="memitem"> 210<div class="memproto"> 211 <table class="memname"> 212 <tr> 213 <td class="memname">int hx509_certs_filter </td> 214 <td>(</td> 215 <td class="paramtype">hx509_context </td> 216 <td class="paramname"><em>context</em>, </td> 217 </tr> 218 <tr> 219 <td class="paramkey"></td> 220 <td></td> 221 <td class="paramtype">hx509_certs </td> 222 <td class="paramname"><em>certs</em>, </td> 223 </tr> 224 <tr> 225 <td class="paramkey"></td> 226 <td></td> 227 <td class="paramtype">const hx509_query * </td> 228 <td class="paramname"><em>q</em>, </td> 229 </tr> 230 <tr> 231 <td class="paramkey"></td> 232 <td></td> 233 <td class="paramtype">hx509_certs * </td> 234 <td class="paramname"><em>result</em> </td> 235 </tr> 236 <tr> 237 <td></td> 238 <td>)</td> 239 <td></td><td></td> 240 </tr> 241 </table> 242</div><div class="memdoc"> 243<p>Filter certificate matching the query.</p> 244<dl class="params"><dt>Parameters</dt><dd> 245 <table class="params"> 246 <tr><td class="paramname">context</td><td>a hx509 context. </td></tr> 247 <tr><td class="paramname">certs</td><td>certificate store to search. </td></tr> 248 <tr><td class="paramname">q</td><td>query allocated with <a class="el" href="group__hx509__query.html">hx509 query functions</a> functions. </td></tr> 249 <tr><td class="paramname">result</td><td>the filtered certificate store, caller must free with <a class="el" href="group__hx509__keyset.html#gaa3df96cfe4137beaea7e7b87b95dbe3f">hx509_certs_free()</a>.</td></tr> 250 </table> 251 </dd> 252</dl> 253<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 error code. </dd></dl> 254<p>Return HX509_CERT_NOT_FOUND if no certificate in certs matched the query.</p> 255 256</div> 257</div> 258<a id="ga5f0c737b4dddb2a8c7bbab05b04ceb7a"></a> 259<h2 class="memtitle"><span class="permalink"><a href="#ga5f0c737b4dddb2a8c7bbab05b04ceb7a">◆ </a></span>hx509_certs_find()</h2> 260 261<div class="memitem"> 262<div class="memproto"> 263 <table class="memname"> 264 <tr> 265 <td class="memname">int hx509_certs_find </td> 266 <td>(</td> 267 <td class="paramtype">hx509_context </td> 268 <td class="paramname"><em>context</em>, </td> 269 </tr> 270 <tr> 271 <td class="paramkey"></td> 272 <td></td> 273 <td class="paramtype">hx509_certs </td> 274 <td class="paramname"><em>certs</em>, </td> 275 </tr> 276 <tr> 277 <td class="paramkey"></td> 278 <td></td> 279 <td class="paramtype">const hx509_query * </td> 280 <td class="paramname"><em>q</em>, </td> 281 </tr> 282 <tr> 283 <td class="paramkey"></td> 284 <td></td> 285 <td class="paramtype">hx509_cert * </td> 286 <td class="paramname"><em>r</em> </td> 287 </tr> 288 <tr> 289 <td></td> 290 <td>)</td> 291 <td></td><td></td> 292 </tr> 293 </table> 294</div><div class="memdoc"> 295<p>Find a certificate matching the query.</p> 296<dl class="params"><dt>Parameters</dt><dd> 297 <table class="params"> 298 <tr><td class="paramname">context</td><td>a hx509 context. </td></tr> 299 <tr><td class="paramname">certs</td><td>certificate store to search. </td></tr> 300 <tr><td class="paramname">q</td><td>query allocated with <a class="el" href="group__hx509__query.html">hx509 query functions</a> functions. </td></tr> 301 <tr><td class="paramname">r</td><td>return certificate (or NULL on error), should be freed with <a class="el" href="group__hx509__cert.html#gad2f9bb0ddc4babb26a8ccd983db8c948">hx509_cert_free()</a>.</td></tr> 302 </table> 303 </dd> 304</dl> 305<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 error code. </dd></dl> 306<p>Return HX509_CERT_NOT_FOUND if no certificate in certs matched the query.</p> 307 308</div> 309</div> 310<a id="gaa3df96cfe4137beaea7e7b87b95dbe3f"></a> 311<h2 class="memtitle"><span class="permalink"><a href="#gaa3df96cfe4137beaea7e7b87b95dbe3f">◆ </a></span>hx509_certs_free()</h2> 312 313<div class="memitem"> 314<div class="memproto"> 315 <table class="memname"> 316 <tr> 317 <td class="memname">void hx509_certs_free </td> 318 <td>(</td> 319 <td class="paramtype">hx509_certs * </td> 320 <td class="paramname"><em>certs</em></td><td>)</td> 321 <td></td> 322 </tr> 323 </table> 324</div><div class="memdoc"> 325<p>Free a certificate store.</p> 326<dl class="params"><dt>Parameters</dt><dd> 327 <table class="params"> 328 <tr><td class="paramname">certs</td><td>certificate store to free. </td></tr> 329 </table> 330 </dd> 331</dl> 332 333</div> 334</div> 335<a id="ga82fc84cff0a174d58e763ffe2c2a0aad"></a> 336<h2 class="memtitle"><span class="permalink"><a href="#ga82fc84cff0a174d58e763ffe2c2a0aad">◆ </a></span>hx509_certs_info()</h2> 337 338<div class="memitem"> 339<div class="memproto"> 340 <table class="memname"> 341 <tr> 342 <td class="memname">int hx509_certs_info </td> 343 <td>(</td> 344 <td class="paramtype">hx509_context </td> 345 <td class="paramname"><em>context</em>, </td> 346 </tr> 347 <tr> 348 <td class="paramkey"></td> 349 <td></td> 350 <td class="paramtype">hx509_certs </td> 351 <td class="paramname"><em>certs</em>, </td> 352 </tr> 353 <tr> 354 <td class="paramkey"></td> 355 <td></td> 356 <td class="paramtype">int(*)(void *, const char *) </td> 357 <td class="paramname"><em>func</em>, </td> 358 </tr> 359 <tr> 360 <td class="paramkey"></td> 361 <td></td> 362 <td class="paramtype">void * </td> 363 <td class="paramname"><em>ctx</em> </td> 364 </tr> 365 <tr> 366 <td></td> 367 <td>)</td> 368 <td></td><td></td> 369 </tr> 370 </table> 371</div><div class="memdoc"> 372<p>Print some info about the certificate store.</p> 373<dl class="params"><dt>Parameters</dt><dd> 374 <table class="params"> 375 <tr><td class="paramname">context</td><td>a hx509 context. </td></tr> 376 <tr><td class="paramname">certs</td><td>certificate store to print information about. </td></tr> 377 <tr><td class="paramname">func</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> 378 <tr><td class="paramname">ctx</td><td>parameter to func.</td></tr> 379 </table> 380 </dd> 381</dl> 382<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 error code. </dd></dl> 383 384</div> 385</div> 386<a id="ga38cec16ab23ae65a6113f6e323a38032"></a> 387<h2 class="memtitle"><span class="permalink"><a href="#ga38cec16ab23ae65a6113f6e323a38032">◆ </a></span>hx509_certs_init()</h2> 388 389<div class="memitem"> 390<div class="memproto"> 391 <table class="memname"> 392 <tr> 393 <td class="memname">int hx509_certs_init </td> 394 <td>(</td> 395 <td class="paramtype">hx509_context </td> 396 <td class="paramname"><em>context</em>, </td> 397 </tr> 398 <tr> 399 <td class="paramkey"></td> 400 <td></td> 401 <td class="paramtype">const char * </td> 402 <td class="paramname"><em>name</em>, </td> 403 </tr> 404 <tr> 405 <td class="paramkey"></td> 406 <td></td> 407 <td class="paramtype">int </td> 408 <td class="paramname"><em>flags</em>, </td> 409 </tr> 410 <tr> 411 <td class="paramkey"></td> 412 <td></td> 413 <td class="paramtype">hx509_lock </td> 414 <td class="paramname"><em>lock</em>, </td> 415 </tr> 416 <tr> 417 <td class="paramkey"></td> 418 <td></td> 419 <td class="paramtype">hx509_certs * </td> 420 <td class="paramname"><em>certs</em> </td> 421 </tr> 422 <tr> 423 <td></td> 424 <td>)</td> 425 <td></td><td></td> 426 </tr> 427 </table> 428</div><div class="memdoc"> 429<p>Open or creates a new hx509 certificate store.</p> 430<dl class="params"><dt>Parameters</dt><dd> 431 <table class="params"> 432 <tr><td class="paramname">context</td><td>A hx509 context </td></tr> 433 <tr><td class="paramname">name</td><td>name of the store, format is TYPE:type-specific-string, if NULL is used the MEMORY store is used. </td></tr> 434 <tr><td class="paramname">flags</td><td>list of flags:<ul> 435<li>HX509_CERTS_CREATE create a new keystore of the specific TYPE.</li> 436<li>HX509_CERTS_UNPROTECT_ALL fails if any private key failed to be extracted. </li> 437</ul> 438</td></tr> 439 <tr><td class="paramname">lock</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> 440 <tr><td class="paramname">certs</td><td>return pointer, free with <a class="el" href="group__hx509__keyset.html#gaa3df96cfe4137beaea7e7b87b95dbe3f">hx509_certs_free()</a>.</td></tr> 441 </table> 442 </dd> 443</dl> 444<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 error code. </dd></dl> 445 446</div> 447</div> 448<a id="ga4ba1d8deb9545c59b8f6bde86585014b"></a> 449<h2 class="memtitle"><span class="permalink"><a href="#ga4ba1d8deb9545c59b8f6bde86585014b">◆ </a></span>hx509_certs_iter_f()</h2> 450 451<div class="memitem"> 452<div class="memproto"> 453 <table class="memname"> 454 <tr> 455 <td class="memname">int hx509_certs_iter_f </td> 456 <td>(</td> 457 <td class="paramtype">hx509_context </td> 458 <td class="paramname"><em>context</em>, </td> 459 </tr> 460 <tr> 461 <td class="paramkey"></td> 462 <td></td> 463 <td class="paramtype">hx509_certs </td> 464 <td class="paramname"><em>certs</em>, </td> 465 </tr> 466 <tr> 467 <td class="paramkey"></td> 468 <td></td> 469 <td class="paramtype">int(*)(hx509_context, void *, hx509_cert) </td> 470 <td class="paramname"><em>func</em>, </td> 471 </tr> 472 <tr> 473 <td class="paramkey"></td> 474 <td></td> 475 <td class="paramtype">void * </td> 476 <td class="paramname"><em>ctx</em> </td> 477 </tr> 478 <tr> 479 <td></td> 480 <td>)</td> 481 <td></td><td></td> 482 </tr> 483 </table> 484</div><div class="memdoc"> 485<p>Iterate over all certificates in a keystore and call a function for each of them.</p> 486<dl class="params"><dt>Parameters</dt><dd> 487 <table class="params"> 488 <tr><td class="paramname">context</td><td>a hx509 context. </td></tr> 489 <tr><td class="paramname">certs</td><td>certificate store to iterate over. </td></tr> 490 <tr><td class="paramname">func</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#ga4ba1d8deb9545c59b8f6bde86585014b">hx509_certs_iter_f()</a>. </td></tr> 491 <tr><td class="paramname">ctx</td><td>context variable that will passed to the function.</td></tr> 492 </table> 493 </dd> 494</dl> 495<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 error code. </dd></dl> 496 497</div> 498</div> 499<a id="ga201bbf3425e451337abb26589202d9fe"></a> 500<h2 class="memtitle"><span class="permalink"><a href="#ga201bbf3425e451337abb26589202d9fe">◆ </a></span>hx509_certs_merge()</h2> 501 502<div class="memitem"> 503<div class="memproto"> 504 <table class="memname"> 505 <tr> 506 <td class="memname">int hx509_certs_merge </td> 507 <td>(</td> 508 <td class="paramtype">hx509_context </td> 509 <td class="paramname"><em>context</em>, </td> 510 </tr> 511 <tr> 512 <td class="paramkey"></td> 513 <td></td> 514 <td class="paramtype">hx509_certs </td> 515 <td class="paramname"><em>to</em>, </td> 516 </tr> 517 <tr> 518 <td class="paramkey"></td> 519 <td></td> 520 <td class="paramtype">hx509_certs </td> 521 <td class="paramname"><em>from</em> </td> 522 </tr> 523 <tr> 524 <td></td> 525 <td>)</td> 526 <td></td><td></td> 527 </tr> 528 </table> 529</div><div class="memdoc"> 530<p>Merge a certificate store into another. The from store is keep intact.</p> 531<dl class="params"><dt>Parameters</dt><dd> 532 <table class="params"> 533 <tr><td class="paramname">context</td><td>a hx509 context. </td></tr> 534 <tr><td class="paramname">to</td><td>the store to merge into. </td></tr> 535 <tr><td class="paramname">from</td><td>the store to copy the object from.</td></tr> 536 </table> 537 </dd> 538</dl> 539<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 error code. </dd></dl> 540 541</div> 542</div> 543<a id="ga63c38b4729df8a074f191db831ac9db7"></a> 544<h2 class="memtitle"><span class="permalink"><a href="#ga63c38b4729df8a074f191db831ac9db7">◆ </a></span>hx509_certs_next_cert()</h2> 545 546<div class="memitem"> 547<div class="memproto"> 548 <table class="memname"> 549 <tr> 550 <td class="memname">int hx509_certs_next_cert </td> 551 <td>(</td> 552 <td class="paramtype">hx509_context </td> 553 <td class="paramname"><em>context</em>, </td> 554 </tr> 555 <tr> 556 <td class="paramkey"></td> 557 <td></td> 558 <td class="paramtype">hx509_certs </td> 559 <td class="paramname"><em>certs</em>, </td> 560 </tr> 561 <tr> 562 <td class="paramkey"></td> 563 <td></td> 564 <td class="paramtype">hx509_cursor </td> 565 <td class="paramname"><em>cursor</em>, </td> 566 </tr> 567 <tr> 568 <td class="paramkey"></td> 569 <td></td> 570 <td class="paramtype">hx509_cert * </td> 571 <td class="paramname"><em>cert</em> </td> 572 </tr> 573 <tr> 574 <td></td> 575 <td>)</td> 576 <td></td><td></td> 577 </tr> 578 </table> 579</div><div class="memdoc"> 580<p>Get next ceritificate from the certificate keystore pointed out by cursor.</p> 581<dl class="params"><dt>Parameters</dt><dd> 582 <table class="params"> 583 <tr><td class="paramname">context</td><td>a hx509 context. </td></tr> 584 <tr><td class="paramname">certs</td><td>certificate store to iterate over. </td></tr> 585 <tr><td class="paramname">cursor</td><td>cursor that keeps track of progress. </td></tr> 586 <tr><td class="paramname">cert</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#gad2f9bb0ddc4babb26a8ccd983db8c948">hx509_cert_free()</a>.</td></tr> 587 </table> 588 </dd> 589</dl> 590<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 error code. </dd></dl> 591 592</div> 593</div> 594<a id="ga8734f5269e166329c0b66d546187a4a9"></a> 595<h2 class="memtitle"><span class="permalink"><a href="#ga8734f5269e166329c0b66d546187a4a9">◆ </a></span>hx509_certs_start_seq()</h2> 596 597<div class="memitem"> 598<div class="memproto"> 599 <table class="memname"> 600 <tr> 601 <td class="memname">int hx509_certs_start_seq </td> 602 <td>(</td> 603 <td class="paramtype">hx509_context </td> 604 <td class="paramname"><em>context</em>, </td> 605 </tr> 606 <tr> 607 <td class="paramkey"></td> 608 <td></td> 609 <td class="paramtype">hx509_certs </td> 610 <td class="paramname"><em>certs</em>, </td> 611 </tr> 612 <tr> 613 <td class="paramkey"></td> 614 <td></td> 615 <td class="paramtype">hx509_cursor * </td> 616 <td class="paramname"><em>cursor</em> </td> 617 </tr> 618 <tr> 619 <td></td> 620 <td>)</td> 621 <td></td><td></td> 622 </tr> 623 </table> 624</div><div class="memdoc"> 625<p>Start the integration</p> 626<dl class="params"><dt>Parameters</dt><dd> 627 <table class="params"> 628 <tr><td class="paramname">context</td><td>a hx509 context. </td></tr> 629 <tr><td class="paramname">certs</td><td>certificate store to iterate over </td></tr> 630 <tr><td class="paramname">cursor</td><td>cursor that will keep track of progress, free with <a class="el" href="group__hx509__keyset.html#ga9f05c59f97dcfade924a72fe82cf9a16">hx509_certs_end_seq()</a>.</td></tr> 631 </table> 632 </dd> 633</dl> 634<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 error code. HX509_UNSUPPORTED_OPERATION is returned if the certificate store doesn't support the iteration operation. </dd></dl> 635 636</div> 637</div> 638<a id="ga1dbde45fbffbaf909cd99b339f8641bd"></a> 639<h2 class="memtitle"><span class="permalink"><a href="#ga1dbde45fbffbaf909cd99b339f8641bd">◆ </a></span>hx509_certs_store()</h2> 640 641<div class="memitem"> 642<div class="memproto"> 643 <table class="memname"> 644 <tr> 645 <td class="memname">int hx509_certs_store </td> 646 <td>(</td> 647 <td class="paramtype">hx509_context </td> 648 <td class="paramname"><em>context</em>, </td> 649 </tr> 650 <tr> 651 <td class="paramkey"></td> 652 <td></td> 653 <td class="paramtype">hx509_certs </td> 654 <td class="paramname"><em>certs</em>, </td> 655 </tr> 656 <tr> 657 <td class="paramkey"></td> 658 <td></td> 659 <td class="paramtype">int </td> 660 <td class="paramname"><em>flags</em>, </td> 661 </tr> 662 <tr> 663 <td class="paramkey"></td> 664 <td></td> 665 <td class="paramtype">hx509_lock </td> 666 <td class="paramname"><em>lock</em> </td> 667 </tr> 668 <tr> 669 <td></td> 670 <td>)</td> 671 <td></td><td></td> 672 </tr> 673 </table> 674</div><div class="memdoc"> 675<p>Write the certificate store to stable storage.</p> 676<dl class="params"><dt>Parameters</dt><dd> 677 <table class="params"> 678 <tr><td class="paramname">context</td><td>A hx509 context. </td></tr> 679 <tr><td class="paramname">certs</td><td>a certificate store to store. </td></tr> 680 <tr><td class="paramname">flags</td><td>currently unused, use 0. </td></tr> 681 <tr><td class="paramname">lock</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> 682 </table> 683 </dd> 684</dl> 685<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 error code. HX509_UNSUPPORTED_OPERATION if the certificate store doesn't support the store operation. </dd></dl> 686 687</div> 688</div> 689<a id="gaee9789b91e1b425c17ddd6a5c1f2a834"></a> 690<h2 class="memtitle"><span class="permalink"><a href="#gaee9789b91e1b425c17ddd6a5c1f2a834">◆ </a></span>hx509_ci_print_names()</h2> 691 692<div class="memitem"> 693<div class="memproto"> 694 <table class="memname"> 695 <tr> 696 <td class="memname">int hx509_ci_print_names </td> 697 <td>(</td> 698 <td class="paramtype">hx509_context </td> 699 <td class="paramname"><em>context</em>, </td> 700 </tr> 701 <tr> 702 <td class="paramkey"></td> 703 <td></td> 704 <td class="paramtype">void * </td> 705 <td class="paramname"><em>ctx</em>, </td> 706 </tr> 707 <tr> 708 <td class="paramkey"></td> 709 <td></td> 710 <td class="paramtype">hx509_cert </td> 711 <td class="paramname"><em>c</em> </td> 712 </tr> 713 <tr> 714 <td></td> 715 <td>)</td> 716 <td></td><td></td> 717 </tr> 718 </table> 719</div><div class="memdoc"> 720<p>Function to use to <a class="el" href="group__hx509__keyset.html#ga4ba1d8deb9545c59b8f6bde86585014b">hx509_certs_iter_f()</a> as a function argument, the ctx variable to <a class="el" href="group__hx509__keyset.html#ga4ba1d8deb9545c59b8f6bde86585014b">hx509_certs_iter_f()</a> should be a FILE file descriptor.</p> 721<dl class="params"><dt>Parameters</dt><dd> 722 <table class="params"> 723 <tr><td class="paramname">context</td><td>a hx509 context. </td></tr> 724 <tr><td class="paramname">ctx</td><td>used by <a class="el" href="group__hx509__keyset.html#ga4ba1d8deb9545c59b8f6bde86585014b">hx509_certs_iter_f()</a>. </td></tr> 725 <tr><td class="paramname">c</td><td>a certificate</td></tr> 726 </table> 727 </dd> 728</dl> 729<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 error code. </dd></dl> 730 731</div> 732</div> 733<a id="ga0457faff2ddddfbae50fa62ec1369072"></a> 734<h2 class="memtitle"><span class="permalink"><a href="#ga0457faff2ddddfbae50fa62ec1369072">◆ </a></span>hx509_get_one_cert()</h2> 735 736<div class="memitem"> 737<div class="memproto"> 738 <table class="memname"> 739 <tr> 740 <td class="memname">int hx509_get_one_cert </td> 741 <td>(</td> 742 <td class="paramtype">hx509_context </td> 743 <td class="paramname"><em>context</em>, </td> 744 </tr> 745 <tr> 746 <td class="paramkey"></td> 747 <td></td> 748 <td class="paramtype">hx509_certs </td> 749 <td class="paramname"><em>certs</em>, </td> 750 </tr> 751 <tr> 752 <td class="paramkey"></td> 753 <td></td> 754 <td class="paramtype">hx509_cert * </td> 755 <td class="paramname"><em>c</em> </td> 756 </tr> 757 <tr> 758 <td></td> 759 <td>)</td> 760 <td></td><td></td> 761 </tr> 762 </table> 763</div><div class="memdoc"> 764<p>Get one random certificate from the certificate store.</p> 765<dl class="params"><dt>Parameters</dt><dd> 766 <table class="params"> 767 <tr><td class="paramname">context</td><td>a hx509 context. </td></tr> 768 <tr><td class="paramname">certs</td><td>a certificate store to get the certificate from. </td></tr> 769 <tr><td class="paramname">c</td><td>return certificate, should be freed with <a class="el" href="group__hx509__cert.html#gad2f9bb0ddc4babb26a8ccd983db8c948">hx509_cert_free()</a>.</td></tr> 770 </table> 771 </dd> 772</dl> 773<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 error code. </dd></dl> 774 775</div> 776</div> 777</div><!-- contents --> 778<hr size="1"><address style="text-align: right;"><small> 779Generated on Tue Nov 15 2022 14:04:25 for Heimdal x509 library by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.9.1</small></address> 780</body> 781</html> 782