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&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 </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"> </td></tr> 34<tr class="memitem:gaacbd636f3053c560782d83251f42b71a"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 36<tr class="memitem:gab13d28bf986e3b66c05e7e33799be07b"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 38<tr class="memitem:ga618f32b35fa6f679cc5f32fb8abdbe85"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 40<tr class="memitem:gaedaf18507474021a8d092ca6ac90a1ad"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 42<tr class="memitem:ga8dfb6d8d72f6a71caffaf11b9d847921"><td class="memItemLeft" align="right" valign="top">int </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"> </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">◆ </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 </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 </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 * </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 * </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 </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 * </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 </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 </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 </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 </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 * </td> 118 <td class="paramname"><em>signed_data</em> </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">◆ </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 </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 </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 </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 * </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 </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 * </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 * </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 * </td> 200 <td class="paramname"><em>content</em> </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">◆ </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 </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 </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 </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 * </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 </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 * </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 </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 * </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 * </td> 291 <td class="paramname"><em>content</em> </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">◆ </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 * </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 * </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 * </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 * </td> 348 <td class="paramname"><em>have_data</em> </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">◆ </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 </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 </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 </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 * </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 </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 * </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 </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 * </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 * </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 * </td> 435 <td class="paramname"><em>signer_certs</em> </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">◆ </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 * </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 * </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 * </td> 495 <td class="paramname"><em>res</em> </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 <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