xref: /netbsd-src/crypto/external/bsd/heimdal/dist/doc/doxyout/hx509/html/group__hx509__cms.html (revision dd75ac5b443e967e26b4d18cc8cd5eb98512bfbf)
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 CMS/pkcs7 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&amp;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 CMS/pkcs7 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:ga59a1f6dc31e384a0d378c8179f2be9c3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cms.html#ga59a1f6dc31e384a0d378c8179f2be9c3">hx509_cms_wrap_ContentInfo</a> (const heim_oid *oid, const heim_octet_string *buf, heim_octet_string *res)</td></tr>
33<tr class="separator:ga59a1f6dc31e384a0d378c8179f2be9c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
34<tr class="memitem:gaacbd636f3053c560782d83251f42b71a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cms.html#gaacbd636f3053c560782d83251f42b71a">hx509_cms_unwrap_ContentInfo</a> (const heim_octet_string *in, heim_oid *oid, heim_octet_string *out, int *have_data)</td></tr>
35<tr class="separator:gaacbd636f3053c560782d83251f42b71a"><td class="memSeparator" colspan="2">&#160;</td></tr>
36<tr class="memitem:gab13d28bf986e3b66c05e7e33799be07b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cms.html#gab13d28bf986e3b66c05e7e33799be07b">hx509_cms_unenvelope</a> (hx509_context context, hx509_certs certs, int flags, const void *data, size_t length, const heim_octet_string *encryptedContent, time_t time_now, heim_oid *contentType, heim_octet_string *content)</td></tr>
37<tr class="separator:gab13d28bf986e3b66c05e7e33799be07b"><td class="memSeparator" colspan="2">&#160;</td></tr>
38<tr class="memitem:ga618f32b35fa6f679cc5f32fb8abdbe85"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cms.html#ga618f32b35fa6f679cc5f32fb8abdbe85">hx509_cms_envelope_1</a> (hx509_context context, int flags, hx509_cert cert, const void *data, size_t length, const heim_oid *encryption_type, const heim_oid *contentType, heim_octet_string *content)</td></tr>
39<tr class="separator:ga618f32b35fa6f679cc5f32fb8abdbe85"><td class="memSeparator" colspan="2">&#160;</td></tr>
40<tr class="memitem:gaedaf18507474021a8d092ca6ac90a1ad"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cms.html#gaedaf18507474021a8d092ca6ac90a1ad">hx509_cms_verify_signed</a> (hx509_context context, hx509_verify_ctx ctx, unsigned int flags, const void *data, size_t length, const heim_octet_string *signedContent, hx509_certs pool, heim_oid *contentType, heim_octet_string *content, hx509_certs *signer_certs)</td></tr>
41<tr class="separator:gaedaf18507474021a8d092ca6ac90a1ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
42<tr class="memitem:ga8dfb6d8d72f6a71caffaf11b9d847921"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cms.html#ga8dfb6d8d72f6a71caffaf11b9d847921">hx509_cms_create_signed_1</a> (hx509_context context, int flags, const heim_oid *eContentType, const void *data, size_t length, const AlgorithmIdentifier *digest_alg, hx509_cert cert, hx509_peer_info peer, hx509_certs anchors, hx509_certs pool, heim_octet_string *signed_data)</td></tr>
43<tr class="separator:ga8dfb6d8d72f6a71caffaf11b9d847921"><td class="memSeparator" colspan="2">&#160;</td></tr>
44</table>
45<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
46<p>See the <a class="el" href="page_cms.html">CMS/PKCS7 message functions.</a> for description and examples. </p>
47<h2 class="groupheader">Function Documentation</h2>
48<a id="ga8dfb6d8d72f6a71caffaf11b9d847921"></a>
49<h2 class="memtitle"><span class="permalink"><a href="#ga8dfb6d8d72f6a71caffaf11b9d847921">&#9670;&nbsp;</a></span>hx509_cms_create_signed_1()</h2>
50
51<div class="memitem">
52<div class="memproto">
53      <table class="memname">
54        <tr>
55          <td class="memname">int hx509_cms_create_signed_1 </td>
56          <td>(</td>
57          <td class="paramtype">hx509_context&#160;</td>
58          <td class="paramname"><em>context</em>, </td>
59        </tr>
60        <tr>
61          <td class="paramkey"></td>
62          <td></td>
63          <td class="paramtype">int&#160;</td>
64          <td class="paramname"><em>flags</em>, </td>
65        </tr>
66        <tr>
67          <td class="paramkey"></td>
68          <td></td>
69          <td class="paramtype">const heim_oid *&#160;</td>
70          <td class="paramname"><em>eContentType</em>, </td>
71        </tr>
72        <tr>
73          <td class="paramkey"></td>
74          <td></td>
75          <td class="paramtype">const void *&#160;</td>
76          <td class="paramname"><em>data</em>, </td>
77        </tr>
78        <tr>
79          <td class="paramkey"></td>
80          <td></td>
81          <td class="paramtype">size_t&#160;</td>
82          <td class="paramname"><em>length</em>, </td>
83        </tr>
84        <tr>
85          <td class="paramkey"></td>
86          <td></td>
87          <td class="paramtype">const AlgorithmIdentifier *&#160;</td>
88          <td class="paramname"><em>digest_alg</em>, </td>
89        </tr>
90        <tr>
91          <td class="paramkey"></td>
92          <td></td>
93          <td class="paramtype">hx509_cert&#160;</td>
94          <td class="paramname"><em>cert</em>, </td>
95        </tr>
96        <tr>
97          <td class="paramkey"></td>
98          <td></td>
99          <td class="paramtype">hx509_peer_info&#160;</td>
100          <td class="paramname"><em>peer</em>, </td>
101        </tr>
102        <tr>
103          <td class="paramkey"></td>
104          <td></td>
105          <td class="paramtype">hx509_certs&#160;</td>
106          <td class="paramname"><em>anchors</em>, </td>
107        </tr>
108        <tr>
109          <td class="paramkey"></td>
110          <td></td>
111          <td class="paramtype">hx509_certs&#160;</td>
112          <td class="paramname"><em>pool</em>, </td>
113        </tr>
114        <tr>
115          <td class="paramkey"></td>
116          <td></td>
117          <td class="paramtype">heim_octet_string *&#160;</td>
118          <td class="paramname"><em>signed_data</em>&#160;</td>
119        </tr>
120        <tr>
121          <td></td>
122          <td>)</td>
123          <td></td><td></td>
124        </tr>
125      </table>
126</div><div class="memdoc">
127<p>Decode SignedData and verify that the signature is correct.</p>
128<dl class="params"><dt>Parameters</dt><dd>
129  <table class="params">
130    <tr><td class="paramname">context</td><td>A hx509 context. </td></tr>
131    <tr><td class="paramname">flags</td><td></td></tr>
132    <tr><td class="paramname">eContentType</td><td>the type of the data. </td></tr>
133    <tr><td class="paramname">data</td><td>data to sign </td></tr>
134    <tr><td class="paramname">length</td><td>length of the data that data point to. </td></tr>
135    <tr><td class="paramname">digest_alg</td><td>digest algorithm to use, use NULL to get the default or the peer determined algorithm. </td></tr>
136    <tr><td class="paramname">cert</td><td>certificate to use for sign the data. </td></tr>
137    <tr><td class="paramname">peer</td><td>info about the peer the message to send the message to, like what digest algorithm to use. </td></tr>
138    <tr><td class="paramname">anchors</td><td>trust anchors that the client will use, used to polulate the certificates included in the message </td></tr>
139    <tr><td class="paramname">pool</td><td>certificates to use in try to build the path to the trust anchors. </td></tr>
140    <tr><td class="paramname">signed_data</td><td>the output of the function, free with der_free_octet_string().</td></tr>
141  </table>
142  </dd>
143</dl>
144<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 error code. </dd></dl>
145
146</div>
147</div>
148<a id="ga618f32b35fa6f679cc5f32fb8abdbe85"></a>
149<h2 class="memtitle"><span class="permalink"><a href="#ga618f32b35fa6f679cc5f32fb8abdbe85">&#9670;&nbsp;</a></span>hx509_cms_envelope_1()</h2>
150
151<div class="memitem">
152<div class="memproto">
153      <table class="memname">
154        <tr>
155          <td class="memname">int hx509_cms_envelope_1 </td>
156          <td>(</td>
157          <td class="paramtype">hx509_context&#160;</td>
158          <td class="paramname"><em>context</em>, </td>
159        </tr>
160        <tr>
161          <td class="paramkey"></td>
162          <td></td>
163          <td class="paramtype">int&#160;</td>
164          <td class="paramname"><em>flags</em>, </td>
165        </tr>
166        <tr>
167          <td class="paramkey"></td>
168          <td></td>
169          <td class="paramtype">hx509_cert&#160;</td>
170          <td class="paramname"><em>cert</em>, </td>
171        </tr>
172        <tr>
173          <td class="paramkey"></td>
174          <td></td>
175          <td class="paramtype">const void *&#160;</td>
176          <td class="paramname"><em>data</em>, </td>
177        </tr>
178        <tr>
179          <td class="paramkey"></td>
180          <td></td>
181          <td class="paramtype">size_t&#160;</td>
182          <td class="paramname"><em>length</em>, </td>
183        </tr>
184        <tr>
185          <td class="paramkey"></td>
186          <td></td>
187          <td class="paramtype">const heim_oid *&#160;</td>
188          <td class="paramname"><em>encryption_type</em>, </td>
189        </tr>
190        <tr>
191          <td class="paramkey"></td>
192          <td></td>
193          <td class="paramtype">const heim_oid *&#160;</td>
194          <td class="paramname"><em>contentType</em>, </td>
195        </tr>
196        <tr>
197          <td class="paramkey"></td>
198          <td></td>
199          <td class="paramtype">heim_octet_string *&#160;</td>
200          <td class="paramname"><em>content</em>&#160;</td>
201        </tr>
202        <tr>
203          <td></td>
204          <td>)</td>
205          <td></td><td></td>
206        </tr>
207      </table>
208</div><div class="memdoc">
209<p>Encrypt end encode EnvelopedData.</p>
210<p>Encrypt and encode EnvelopedData. The data is encrypted with a random key and the the random key is encrypted with the certificates private key. This limits what private key type can be used to RSA.</p>
211<dl class="params"><dt>Parameters</dt><dd>
212  <table class="params">
213    <tr><td class="paramname">context</td><td>A hx509 context. </td></tr>
214    <tr><td class="paramname">flags</td><td>flags to control the behavior.<ul>
215<li>HX509_CMS_EV_NO_KU_CHECK - Don't check KU on certificate</li>
216<li>HX509_CMS_EV_ALLOW_WEAK - Allow weak crytpo</li>
217<li>HX509_CMS_EV_ID_NAME - prefer issuer name and serial number </li>
218</ul>
219</td></tr>
220    <tr><td class="paramname">cert</td><td>Certificate to encrypt the EnvelopedData encryption key with. </td></tr>
221    <tr><td class="paramname">data</td><td>pointer the data to encrypt. </td></tr>
222    <tr><td class="paramname">length</td><td>length of the data that data point to. </td></tr>
223    <tr><td class="paramname">encryption_type</td><td>Encryption cipher to use for the bulk data, use NULL to get default. </td></tr>
224    <tr><td class="paramname">contentType</td><td>type of the data that is encrypted </td></tr>
225    <tr><td class="paramname">content</td><td>the output of the function, free with der_free_octet_string().</td></tr>
226  </table>
227  </dd>
228</dl>
229<dl class="section return"><dt>Returns</dt><dd>an hx509 error code. </dd></dl>
230
231</div>
232</div>
233<a id="gab13d28bf986e3b66c05e7e33799be07b"></a>
234<h2 class="memtitle"><span class="permalink"><a href="#gab13d28bf986e3b66c05e7e33799be07b">&#9670;&nbsp;</a></span>hx509_cms_unenvelope()</h2>
235
236<div class="memitem">
237<div class="memproto">
238      <table class="memname">
239        <tr>
240          <td class="memname">int hx509_cms_unenvelope </td>
241          <td>(</td>
242          <td class="paramtype">hx509_context&#160;</td>
243          <td class="paramname"><em>context</em>, </td>
244        </tr>
245        <tr>
246          <td class="paramkey"></td>
247          <td></td>
248          <td class="paramtype">hx509_certs&#160;</td>
249          <td class="paramname"><em>certs</em>, </td>
250        </tr>
251        <tr>
252          <td class="paramkey"></td>
253          <td></td>
254          <td class="paramtype">int&#160;</td>
255          <td class="paramname"><em>flags</em>, </td>
256        </tr>
257        <tr>
258          <td class="paramkey"></td>
259          <td></td>
260          <td class="paramtype">const void *&#160;</td>
261          <td class="paramname"><em>data</em>, </td>
262        </tr>
263        <tr>
264          <td class="paramkey"></td>
265          <td></td>
266          <td class="paramtype">size_t&#160;</td>
267          <td class="paramname"><em>length</em>, </td>
268        </tr>
269        <tr>
270          <td class="paramkey"></td>
271          <td></td>
272          <td class="paramtype">const heim_octet_string *&#160;</td>
273          <td class="paramname"><em>encryptedContent</em>, </td>
274        </tr>
275        <tr>
276          <td class="paramkey"></td>
277          <td></td>
278          <td class="paramtype">time_t&#160;</td>
279          <td class="paramname"><em>time_now</em>, </td>
280        </tr>
281        <tr>
282          <td class="paramkey"></td>
283          <td></td>
284          <td class="paramtype">heim_oid *&#160;</td>
285          <td class="paramname"><em>contentType</em>, </td>
286        </tr>
287        <tr>
288          <td class="paramkey"></td>
289          <td></td>
290          <td class="paramtype">heim_octet_string *&#160;</td>
291          <td class="paramname"><em>content</em>&#160;</td>
292        </tr>
293        <tr>
294          <td></td>
295          <td>)</td>
296          <td></td><td></td>
297        </tr>
298      </table>
299</div><div class="memdoc">
300<p>Decode and unencrypt EnvelopedData.</p>
301<p>Extract data and parameteres from from the EnvelopedData. Also supports using detached EnvelopedData.</p>
302<dl class="params"><dt>Parameters</dt><dd>
303  <table class="params">
304    <tr><td class="paramname">context</td><td>A hx509 context. </td></tr>
305    <tr><td class="paramname">certs</td><td>Certificate that can decrypt the EnvelopedData encryption key. </td></tr>
306    <tr><td class="paramname">flags</td><td>HX509_CMS_UE flags to control the behavior. </td></tr>
307    <tr><td class="paramname">data</td><td>pointer the structure the contains the DER/BER encoded EnvelopedData stucture. </td></tr>
308    <tr><td class="paramname">length</td><td>length of the data that data point to. </td></tr>
309    <tr><td class="paramname">encryptedContent</td><td>in case of detached signature, this contains the actual encrypted data, othersize its should be NULL. </td></tr>
310    <tr><td class="paramname">time_now</td><td>set the current time, if zero the library uses now as the date. </td></tr>
311    <tr><td class="paramname">contentType</td><td>output type oid, should be freed with der_free_oid(). </td></tr>
312    <tr><td class="paramname">content</td><td>the data, free with der_free_octet_string().</td></tr>
313  </table>
314  </dd>
315</dl>
316<dl class="section return"><dt>Returns</dt><dd>an hx509 error code. </dd></dl>
317
318</div>
319</div>
320<a id="gaacbd636f3053c560782d83251f42b71a"></a>
321<h2 class="memtitle"><span class="permalink"><a href="#gaacbd636f3053c560782d83251f42b71a">&#9670;&nbsp;</a></span>hx509_cms_unwrap_ContentInfo()</h2>
322
323<div class="memitem">
324<div class="memproto">
325      <table class="memname">
326        <tr>
327          <td class="memname">int hx509_cms_unwrap_ContentInfo </td>
328          <td>(</td>
329          <td class="paramtype">const heim_octet_string *&#160;</td>
330          <td class="paramname"><em>in</em>, </td>
331        </tr>
332        <tr>
333          <td class="paramkey"></td>
334          <td></td>
335          <td class="paramtype">heim_oid *&#160;</td>
336          <td class="paramname"><em>oid</em>, </td>
337        </tr>
338        <tr>
339          <td class="paramkey"></td>
340          <td></td>
341          <td class="paramtype">heim_octet_string *&#160;</td>
342          <td class="paramname"><em>out</em>, </td>
343        </tr>
344        <tr>
345          <td class="paramkey"></td>
346          <td></td>
347          <td class="paramtype">int *&#160;</td>
348          <td class="paramname"><em>have_data</em>&#160;</td>
349        </tr>
350        <tr>
351          <td></td>
352          <td>)</td>
353          <td></td><td></td>
354        </tr>
355      </table>
356</div><div class="memdoc">
357<p>Decode an ContentInfo and unwrap data and oid it.</p>
358<dl class="params"><dt>Parameters</dt><dd>
359  <table class="params">
360    <tr><td class="paramname">in</td><td>the encoded buffer. </td></tr>
361    <tr><td class="paramname">oid</td><td>type of the content. </td></tr>
362    <tr><td class="paramname">out</td><td>data to be wrapped. </td></tr>
363    <tr><td class="paramname">have_data</td><td>since the data is optional, this flags show dthe diffrence between no data and the zero length data.</td></tr>
364  </table>
365  </dd>
366</dl>
367<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 error code. </dd></dl>
368
369</div>
370</div>
371<a id="gaedaf18507474021a8d092ca6ac90a1ad"></a>
372<h2 class="memtitle"><span class="permalink"><a href="#gaedaf18507474021a8d092ca6ac90a1ad">&#9670;&nbsp;</a></span>hx509_cms_verify_signed()</h2>
373
374<div class="memitem">
375<div class="memproto">
376      <table class="memname">
377        <tr>
378          <td class="memname">int hx509_cms_verify_signed </td>
379          <td>(</td>
380          <td class="paramtype">hx509_context&#160;</td>
381          <td class="paramname"><em>context</em>, </td>
382        </tr>
383        <tr>
384          <td class="paramkey"></td>
385          <td></td>
386          <td class="paramtype">hx509_verify_ctx&#160;</td>
387          <td class="paramname"><em>ctx</em>, </td>
388        </tr>
389        <tr>
390          <td class="paramkey"></td>
391          <td></td>
392          <td class="paramtype">unsigned int&#160;</td>
393          <td class="paramname"><em>flags</em>, </td>
394        </tr>
395        <tr>
396          <td class="paramkey"></td>
397          <td></td>
398          <td class="paramtype">const void *&#160;</td>
399          <td class="paramname"><em>data</em>, </td>
400        </tr>
401        <tr>
402          <td class="paramkey"></td>
403          <td></td>
404          <td class="paramtype">size_t&#160;</td>
405          <td class="paramname"><em>length</em>, </td>
406        </tr>
407        <tr>
408          <td class="paramkey"></td>
409          <td></td>
410          <td class="paramtype">const heim_octet_string *&#160;</td>
411          <td class="paramname"><em>signedContent</em>, </td>
412        </tr>
413        <tr>
414          <td class="paramkey"></td>
415          <td></td>
416          <td class="paramtype">hx509_certs&#160;</td>
417          <td class="paramname"><em>pool</em>, </td>
418        </tr>
419        <tr>
420          <td class="paramkey"></td>
421          <td></td>
422          <td class="paramtype">heim_oid *&#160;</td>
423          <td class="paramname"><em>contentType</em>, </td>
424        </tr>
425        <tr>
426          <td class="paramkey"></td>
427          <td></td>
428          <td class="paramtype">heim_octet_string *&#160;</td>
429          <td class="paramname"><em>content</em>, </td>
430        </tr>
431        <tr>
432          <td class="paramkey"></td>
433          <td></td>
434          <td class="paramtype">hx509_certs *&#160;</td>
435          <td class="paramname"><em>signer_certs</em>&#160;</td>
436        </tr>
437        <tr>
438          <td></td>
439          <td>)</td>
440          <td></td><td></td>
441        </tr>
442      </table>
443</div><div class="memdoc">
444<p>Decode SignedData and verify that the signature is correct.</p>
445<dl class="params"><dt>Parameters</dt><dd>
446  <table class="params">
447    <tr><td class="paramname">context</td><td>A hx509 context. </td></tr>
448    <tr><td class="paramname">ctx</td><td>a hx509 verify context. </td></tr>
449    <tr><td class="paramname">flags</td><td>to control the behaivor of the function.<ul>
450<li>HX509_CMS_VS_NO_KU_CHECK - Don't check KeyUsage</li>
451<li>HX509_CMS_VS_ALLOW_DATA_OID_MISMATCH - allow oid mismatch</li>
452<li>HX509_CMS_VS_ALLOW_ZERO_SIGNER - no signer, see below. </li>
453</ul>
454</td></tr>
455    <tr><td class="paramname">data</td><td>pointer to CMS SignedData encoded data. </td></tr>
456    <tr><td class="paramname">length</td><td>length of the data that data point to. </td></tr>
457    <tr><td class="paramname">signedContent</td><td>external data used for signature. </td></tr>
458    <tr><td class="paramname">pool</td><td>certificate pool to build certificates paths. </td></tr>
459    <tr><td class="paramname">contentType</td><td>free with der_free_oid(). </td></tr>
460    <tr><td class="paramname">content</td><td>the output of the function, free with der_free_octet_string(). </td></tr>
461    <tr><td class="paramname">signer_certs</td><td>list of the cerficates used to sign this request, free with <a class="el" href="group__hx509__keyset.html#gaa3df96cfe4137beaea7e7b87b95dbe3f">hx509_certs_free()</a>.</td></tr>
462  </table>
463  </dd>
464</dl>
465<dl class="section return"><dt>Returns</dt><dd>an hx509 error code. </dd></dl>
466<p>If HX509_CMS_VS_NO_KU_CHECK is set, allow more liberal search for matching certificates by not considering KeyUsage bits on the certificates.</p>
467<p>If HX509_CMS_VS_ALLOW_DATA_OID_MISMATCH, allow encapContentInfo mismatch with the oid in signedAttributes (or if no signedAttributes where use, pkcs7-data oid). This is only needed to work with broken CMS implementations that doesn't follow CMS signedAttributes rules.</p>
468<p>If HX509_CMS_VS_NO_VALIDATE flags is set, do not verify the signing certificates and leave that up to the caller.</p>
469<p>If HX509_CMS_VS_ALLOW_ZERO_SIGNER is set, allow empty SignerInfo (no signatures). If SignedData have no signatures, the function will return 0 with signer_certs set to NULL. Zero signers is allowed by the standard, but since its only useful in corner cases, it make into a flag that the caller have to turn on.</p>
470
471</div>
472</div>
473<a id="ga59a1f6dc31e384a0d378c8179f2be9c3"></a>
474<h2 class="memtitle"><span class="permalink"><a href="#ga59a1f6dc31e384a0d378c8179f2be9c3">&#9670;&nbsp;</a></span>hx509_cms_wrap_ContentInfo()</h2>
475
476<div class="memitem">
477<div class="memproto">
478      <table class="memname">
479        <tr>
480          <td class="memname">int hx509_cms_wrap_ContentInfo </td>
481          <td>(</td>
482          <td class="paramtype">const heim_oid *&#160;</td>
483          <td class="paramname"><em>oid</em>, </td>
484        </tr>
485        <tr>
486          <td class="paramkey"></td>
487          <td></td>
488          <td class="paramtype">const heim_octet_string *&#160;</td>
489          <td class="paramname"><em>buf</em>, </td>
490        </tr>
491        <tr>
492          <td class="paramkey"></td>
493          <td></td>
494          <td class="paramtype">heim_octet_string *&#160;</td>
495          <td class="paramname"><em>res</em>&#160;</td>
496        </tr>
497        <tr>
498          <td></td>
499          <td>)</td>
500          <td></td><td></td>
501        </tr>
502      </table>
503</div><div class="memdoc">
504<p>Wrap data and oid in a ContentInfo and encode it.</p>
505<dl class="params"><dt>Parameters</dt><dd>
506  <table class="params">
507    <tr><td class="paramname">oid</td><td>type of the content. </td></tr>
508    <tr><td class="paramname">buf</td><td>data to be wrapped. If a NULL pointer is passed in, the optional content field in the ContentInfo is not going be filled in. </td></tr>
509    <tr><td class="paramname">res</td><td>the encoded buffer, the result should be freed with der_free_octet_string().</td></tr>
510  </table>
511  </dd>
512</dl>
513<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 error code. </dd></dl>
514
515</div>
516</div>
517</div><!-- contents -->
518<hr size="1"><address style="text-align: right;"><small>
519Generated on Tue Nov 15 2022 14:04:25 for Heimdal x509 library by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.9.1</small></address>
520</body>
521</html>
522