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&nbsp;Page</span></a></li>
16226031Sstas      <li><a href="pages.html"><span>Related&nbsp;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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</td>
78226031Sstas          <td class="paramname"> <em>cert</em></td><td>&nbsp;</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>&nbsp;</td><td>a hx509 context. </td></tr>
95226031Sstas    <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to add the certificate to. </td></tr>
96226031Sstas    <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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 *&nbsp;</td>
129226031Sstas          <td class="paramname"> <em>name</em></td><td>&nbsp;</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>&nbsp;</td><td>a hx509 context. </td></tr>
145226031Sstas    <tr><td valign="top"></td><td valign="top"><em>to</em>&nbsp;</td><td>the store to merge into. </td></tr>
146226031Sstas    <tr><td valign="top"></td><td valign="top"><em>lock</em>&nbsp;</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>&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</td>
174226031Sstas          <td class="paramname"> <em>cursor</em></td><td>&nbsp;</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>&nbsp;</td><td>a hx509 context. </td></tr>
190226031Sstas    <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to iterate over. </td></tr>
191226031Sstas    <tr><td valign="top"></td><td valign="top"><em>cursor</em>&nbsp;</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&nbsp;</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&nbsp;</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 *&nbsp;</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 *&nbsp;</td>
224226031Sstas          <td class="paramname"> <em>result</em></td><td>&nbsp;</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>&nbsp;</td><td>a hx509 context. </td></tr>
240226031Sstas    <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to search. </td></tr>
241226031Sstas    <tr><td valign="top"></td><td valign="top"><em>q</em>&nbsp;</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>&nbsp;</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&nbsp;</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&nbsp;</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 *&nbsp;</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 *&nbsp;</td>
277226031Sstas          <td class="paramname"> <em>r</em></td><td>&nbsp;</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>&nbsp;</td><td>a hx509 context. </td></tr>
293226031Sstas    <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to search. </td></tr>
294226031Sstas    <tr><td valign="top"></td><td valign="top"><em>q</em>&nbsp;</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>&nbsp;</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 *&nbsp;</td>
312226031Sstas          <td class="paramname"> <em>certs</em>          </td>
313226031Sstas          <td>&nbsp;)&nbsp;</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>&nbsp;</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&nbsp;</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&nbsp;</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 *)&nbsp;</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 *&nbsp;</td>
356226031Sstas          <td class="paramname"> <em>ctx</em></td><td>&nbsp;</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>&nbsp;</td><td>a hx509 context. </td></tr>
372226031Sstas    <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to print information about. </td></tr>
373226031Sstas    <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</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>&nbsp;</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&nbsp;</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 *&nbsp;</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&nbsp;</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&nbsp;</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 *&nbsp;</td>
413226031Sstas          <td class="paramname"> <em>certs</em></td><td>&nbsp;</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>&nbsp;</td><td>A hx509 context </td></tr>
429226031Sstas    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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&nbsp;</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&nbsp;</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)&nbsp;</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 *&nbsp;</td>
466226031Sstas          <td class="paramname"> <em>ctx</em></td><td>&nbsp;</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>&nbsp;</td><td>a hx509 context. </td></tr>
482226031Sstas    <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to iterate over. </td></tr>
483226031Sstas    <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</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>&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</td>
511226031Sstas          <td class="paramname"> <em>from</em></td><td>&nbsp;</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>&nbsp;</td><td>a hx509 context. </td></tr>
527226031Sstas    <tr><td valign="top"></td><td valign="top"><em>to</em>&nbsp;</td><td>the store to merge into. </td></tr>
528226031Sstas    <tr><td valign="top"></td><td valign="top"><em>from</em>&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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 *&nbsp;</td>
561226031Sstas          <td class="paramname"> <em>cert</em></td><td>&nbsp;</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>&nbsp;</td><td>a hx509 context. </td></tr>
577226031Sstas    <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to iterate over. </td></tr>
578226031Sstas    <tr><td valign="top"></td><td valign="top"><em>cursor</em>&nbsp;</td><td>cursor that keeps track of progress. </td></tr>
579226031Sstas    <tr><td valign="top"></td><td valign="top"><em>cert</em>&nbsp;</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&nbsp;</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&nbsp;</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 *&nbsp;</td>
606226031Sstas          <td class="paramname"> <em>cursor</em></td><td>&nbsp;</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>&nbsp;</td><td>a hx509 context. </td></tr>
622226031Sstas    <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to iterate over </td></tr>
623226031Sstas    <tr><td valign="top"></td><td valign="top"><em>cursor</em>&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</td>
656226031Sstas          <td class="paramname"> <em>lock</em></td><td>&nbsp;</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>&nbsp;</td><td>A hx509 context. </td></tr>
672226031Sstas    <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>a certificate store to store. </td></tr>
673226031Sstas    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>currently unused, use 0. </td></tr>
674226031Sstas    <tr><td valign="top"></td><td valign="top"><em>lock</em>&nbsp;</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&nbsp;</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 *&nbsp;</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&nbsp;</td>
701226031Sstas          <td class="paramname"> <em>c</em></td><td>&nbsp;</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>&nbsp;</td><td>a hx509 context. </td></tr>
717226031Sstas    <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>certificate store to iterate over. </td></tr>
718226031Sstas    <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</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>&nbsp;</td><td>a hx509 context. </td></tr>
725226031Sstas    <tr><td valign="top"></td><td valign="top"><em>ctx</em>&nbsp;</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>&nbsp;</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&nbsp;</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&nbsp;</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 *&nbsp;</td>
753226031Sstas          <td class="paramname"> <em>c</em></td><td>&nbsp;</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>&nbsp;</td><td>a hx509 context. </td></tr>
769226031Sstas    <tr><td valign="top"></td><td valign="top"><em>certs</em>&nbsp;</td><td>a certificate store to get the certificate from. </td></tr>
770226031Sstas    <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</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&nbsp;<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