1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 3<title>hx509 certificate functions</title> 4<link href="doxygen.css" rel="stylesheet" type="text/css"> 5<link href="tabs.css" rel="stylesheet" type="text/css"> 6</head><body> 7<p> 8<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a> 9</p> 10<!-- end of header marker --> 11<!-- Generated by Doxygen 1.9.1 --> 12<script type="text/javascript" src="menudata.js"></script> 13<script type="text/javascript" src="menu.js"></script> 14<script type="text/javascript"> 15/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16$(function() { 17 initMenu('',false,false,'search.php','Search'); 18}); 19/* @license-end */</script> 20<div id="main-nav"></div> 21</div><!-- top --> 22<div class="header"> 23 <div class="summary"> 24<a href="#func-members">Functions</a> </div> 25 <div class="headertitle"> 26<div class="title">hx509 certificate 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:ga31c3f5e9a6d7892729c56f0f86a76f4a"><td class="memItemLeft" align="right" valign="top">hx509_cert </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga31c3f5e9a6d7892729c56f0f86a76f4a">hx509_cert_init</a> (hx509_context context, const Certificate *c, heim_error_t *error)</td></tr> 33<tr class="separator:ga31c3f5e9a6d7892729c56f0f86a76f4a"><td class="memSeparator" colspan="2"> </td></tr> 34<tr class="memitem:ga134b62e36ffcf09bbf866a88bc4c5010"><td class="memItemLeft" align="right" valign="top">hx509_cert </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga134b62e36ffcf09bbf866a88bc4c5010">hx509_cert_init_data</a> (hx509_context context, const void *ptr, size_t len, heim_error_t *error)</td></tr> 35<tr class="separator:ga134b62e36ffcf09bbf866a88bc4c5010"><td class="memSeparator" colspan="2"> </td></tr> 36<tr class="memitem:gad2f9bb0ddc4babb26a8ccd983db8c948"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gad2f9bb0ddc4babb26a8ccd983db8c948">hx509_cert_free</a> (hx509_cert cert)</td></tr> 37<tr class="separator:gad2f9bb0ddc4babb26a8ccd983db8c948"><td class="memSeparator" colspan="2"> </td></tr> 38<tr class="memitem:ga1870b485d4e8e53f75690f35f4526fcc"><td class="memItemLeft" align="right" valign="top">hx509_cert </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga1870b485d4e8e53f75690f35f4526fcc">hx509_cert_ref</a> (hx509_cert cert)</td></tr> 39<tr class="separator:ga1870b485d4e8e53f75690f35f4526fcc"><td class="memSeparator" colspan="2"> </td></tr> 40<tr class="memitem:gafb8063ac0396ad60392b8b9554c6b896"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gafb8063ac0396ad60392b8b9554c6b896">hx509_verify_ctx_f_allow_default_trustanchors</a> (hx509_verify_ctx ctx, int boolean)</td></tr> 41<tr class="separator:gafb8063ac0396ad60392b8b9554c6b896"><td class="memSeparator" colspan="2"> </td></tr> 42<tr class="memitem:ga49e7c45c70442dcb81d394093d9cbe29"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga49e7c45c70442dcb81d394093d9cbe29">hx509_cert_find_subjectAltName_otherName</a> (hx509_context context, hx509_cert cert, const heim_oid *oid, hx509_octet_string_list *list)</td></tr> 43<tr class="separator:ga49e7c45c70442dcb81d394093d9cbe29"><td class="memSeparator" colspan="2"> </td></tr> 44<tr class="memitem:gab84ed704b59c7965a598ef9c7c353216"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gab84ed704b59c7965a598ef9c7c353216">hx509_cert_cmp</a> (hx509_cert p, hx509_cert q)</td></tr> 45<tr class="separator:gab84ed704b59c7965a598ef9c7c353216"><td class="memSeparator" colspan="2"> </td></tr> 46<tr class="memitem:ga3c61a21c5a802b2f366c9610ff89fa90"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga3c61a21c5a802b2f366c9610ff89fa90">hx509_cert_get_issuer</a> (hx509_cert p, hx509_name *name)</td></tr> 47<tr class="separator:ga3c61a21c5a802b2f366c9610ff89fa90"><td class="memSeparator" colspan="2"> </td></tr> 48<tr class="memitem:ga9f64bb8083bb535ccba007b723c73619"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga9f64bb8083bb535ccba007b723c73619">hx509_cert_get_subject</a> (hx509_cert p, hx509_name *name)</td></tr> 49<tr class="separator:ga9f64bb8083bb535ccba007b723c73619"><td class="memSeparator" colspan="2"> </td></tr> 50<tr class="memitem:ga5e8e38603eb13753912b0075aab276cf"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga5e8e38603eb13753912b0075aab276cf">hx509_cert_get_base_subject</a> (hx509_context context, hx509_cert c, hx509_name *name)</td></tr> 51<tr class="separator:ga5e8e38603eb13753912b0075aab276cf"><td class="memSeparator" colspan="2"> </td></tr> 52<tr class="memitem:ga2960bea38768b49c8b949fe2ea5320e3"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga2960bea38768b49c8b949fe2ea5320e3">hx509_cert_get_serialnumber</a> (hx509_cert p, heim_integer *i)</td></tr> 53<tr class="separator:ga2960bea38768b49c8b949fe2ea5320e3"><td class="memSeparator" colspan="2"> </td></tr> 54<tr class="memitem:ga2e36444c1bce8995ee193013364ce852"><td class="memItemLeft" align="right" valign="top">time_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga2e36444c1bce8995ee193013364ce852">hx509_cert_get_notBefore</a> (hx509_cert p)</td></tr> 55<tr class="separator:ga2e36444c1bce8995ee193013364ce852"><td class="memSeparator" colspan="2"> </td></tr> 56<tr class="memitem:gad3e8410e9bb4d0bf61bc3e926a4049eb"><td class="memItemLeft" align="right" valign="top">time_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gad3e8410e9bb4d0bf61bc3e926a4049eb">hx509_cert_get_notAfter</a> (hx509_cert p)</td></tr> 57<tr class="separator:gad3e8410e9bb4d0bf61bc3e926a4049eb"><td class="memSeparator" colspan="2"> </td></tr> 58<tr class="memitem:gac9e328025dd91339cf73eecdeec4ffd6"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gac9e328025dd91339cf73eecdeec4ffd6">hx509_cert_get_SPKI</a> (hx509_context context, hx509_cert p, SubjectPublicKeyInfo *spki)</td></tr> 59<tr class="separator:gac9e328025dd91339cf73eecdeec4ffd6"><td class="memSeparator" colspan="2"> </td></tr> 60<tr class="memitem:gac2fd6cd8b1fbe0d470a88143a359c395"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gac2fd6cd8b1fbe0d470a88143a359c395">hx509_cert_get_SPKI_AlgorithmIdentifier</a> (hx509_context context, hx509_cert p, AlgorithmIdentifier *alg)</td></tr> 61<tr class="separator:gac2fd6cd8b1fbe0d470a88143a359c395"><td class="memSeparator" colspan="2"> </td></tr> 62<tr class="memitem:gac88fb8bf53b3e105f728251f6d4d4b1f"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gac88fb8bf53b3e105f728251f6d4d4b1f">hx509_cert_get_issuer_unique_id</a> (hx509_context context, hx509_cert p, heim_bit_string *issuer)</td></tr> 63<tr class="separator:gac88fb8bf53b3e105f728251f6d4d4b1f"><td class="memSeparator" colspan="2"> </td></tr> 64<tr class="memitem:gac7184f4f0249842866d51b17e4b101fb"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gac7184f4f0249842866d51b17e4b101fb">hx509_cert_get_subject_unique_id</a> (hx509_context context, hx509_cert p, heim_bit_string *subject)</td></tr> 65<tr class="separator:gac7184f4f0249842866d51b17e4b101fb"><td class="memSeparator" colspan="2"> </td></tr> 66<tr class="memitem:ga5dc160f02aeffffb0eea58b6203c856a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga5dc160f02aeffffb0eea58b6203c856a">hx509_verify_hostname</a> (hx509_context context, const hx509_cert cert, int flags, hx509_hostname_type type, const char *hostname, const struct sockaddr *sa, int sa_size)</td></tr> 67<tr class="separator:ga5dc160f02aeffffb0eea58b6203c856a"><td class="memSeparator" colspan="2"> </td></tr> 68<tr class="memitem:ga2038342b93f828789a241a7fee26f4c8"><td class="memItemLeft" align="right" valign="top">hx509_cert_attribute </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga2038342b93f828789a241a7fee26f4c8">hx509_cert_get_attribute</a> (hx509_cert cert, const heim_oid *oid)</td></tr> 69<tr class="separator:ga2038342b93f828789a241a7fee26f4c8"><td class="memSeparator" colspan="2"> </td></tr> 70<tr class="memitem:ga972768dbcc822fed1b74e7686b407f78"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga972768dbcc822fed1b74e7686b407f78">hx509_cert_set_friendly_name</a> (hx509_cert cert, const char *name)</td></tr> 71<tr class="separator:ga972768dbcc822fed1b74e7686b407f78"><td class="memSeparator" colspan="2"> </td></tr> 72<tr class="memitem:gae2a1de96837304d68216c309e698c3fd"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gae2a1de96837304d68216c309e698c3fd">hx509_cert_get_friendly_name</a> (hx509_cert cert)</td></tr> 73<tr class="separator:gae2a1de96837304d68216c309e698c3fd"><td class="memSeparator" colspan="2"> </td></tr> 74<tr class="memitem:ga5833168d3181e12883b51284fd069543"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga5833168d3181e12883b51284fd069543">hx509_query_alloc</a> (hx509_context context, hx509_query **q)</td></tr> 75<tr class="separator:ga5833168d3181e12883b51284fd069543"><td class="memSeparator" colspan="2"> </td></tr> 76<tr class="memitem:gac708daef26edff5fd36f4587e61a9914"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gac708daef26edff5fd36f4587e61a9914">hx509_query_match_option</a> (hx509_query *q, hx509_query_option option)</td></tr> 77<tr class="separator:gac708daef26edff5fd36f4587e61a9914"><td class="memSeparator" colspan="2"> </td></tr> 78<tr class="memitem:gad5d7a68cc8ca4c948ae99b7eb6f5bc2e"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gad5d7a68cc8ca4c948ae99b7eb6f5bc2e">hx509_query_match_issuer_serial</a> (hx509_query *q, const Name *issuer, const heim_integer *serialNumber)</td></tr> 79<tr class="separator:gad5d7a68cc8ca4c948ae99b7eb6f5bc2e"><td class="memSeparator" colspan="2"> </td></tr> 80<tr class="memitem:ga5be7b5ece155f2577335b5575f141362"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga5be7b5ece155f2577335b5575f141362">hx509_query_match_friendly_name</a> (hx509_query *q, const char *name)</td></tr> 81<tr class="separator:ga5be7b5ece155f2577335b5575f141362"><td class="memSeparator" colspan="2"> </td></tr> 82<tr class="memitem:ga5a7e01c75b7b8243356048a88133c2df"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga5a7e01c75b7b8243356048a88133c2df">hx509_query_match_eku</a> (hx509_query *q, const heim_oid *eku)</td></tr> 83<tr class="separator:ga5a7e01c75b7b8243356048a88133c2df"><td class="memSeparator" colspan="2"> </td></tr> 84<tr class="memitem:gae1660c0cf5a41f17db72a8c18e79c684"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gae1660c0cf5a41f17db72a8c18e79c684">hx509_query_match_cmp_func</a> (hx509_query *q, int(*func)(hx509_context, hx509_cert, void *), void *ctx)</td></tr> 85<tr class="separator:gae1660c0cf5a41f17db72a8c18e79c684"><td class="memSeparator" colspan="2"> </td></tr> 86<tr class="memitem:ga6aafd01e9215fef980a572b2c7289d8c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga6aafd01e9215fef980a572b2c7289d8c">hx509_query_free</a> (hx509_context context, hx509_query *q)</td></tr> 87<tr class="separator:ga6aafd01e9215fef980a572b2c7289d8c"><td class="memSeparator" colspan="2"> </td></tr> 88<tr class="memitem:ga94b4aa7d907d34914e161831e74440a8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga94b4aa7d907d34914e161831e74440a8">hx509_query_statistic_file</a> (hx509_context context, const char *fn)</td></tr> 89<tr class="separator:ga94b4aa7d907d34914e161831e74440a8"><td class="memSeparator" colspan="2"> </td></tr> 90<tr class="memitem:ga522fb2a85515ce8debea860cdfeb94c0"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga522fb2a85515ce8debea860cdfeb94c0">hx509_query_unparse_stats</a> (hx509_context context, int printtype, FILE *out)</td></tr> 91<tr class="separator:ga522fb2a85515ce8debea860cdfeb94c0"><td class="memSeparator" colspan="2"> </td></tr> 92<tr class="memitem:ga1b329c40d7c17cc1b099ec0bd24d4dc9"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga1b329c40d7c17cc1b099ec0bd24d4dc9">hx509_cert_check_eku</a> (hx509_context context, hx509_cert cert, const heim_oid *eku, int allow_any_eku)</td></tr> 93<tr class="separator:ga1b329c40d7c17cc1b099ec0bd24d4dc9"><td class="memSeparator" colspan="2"> </td></tr> 94<tr class="memitem:gafa02f22b6db5ca3c19a488066fea5d7a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#gafa02f22b6db5ca3c19a488066fea5d7a">hx509_cert_binary</a> (hx509_context context, hx509_cert c, heim_octet_string *os)</td></tr> 95<tr class="separator:gafa02f22b6db5ca3c19a488066fea5d7a"><td class="memSeparator" colspan="2"> </td></tr> 96<tr class="memitem:ga32a804b17d97d71af17602fdf6b1c891"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hx509__cert.html#ga32a804b17d97d71af17602fdf6b1c891">hx509_print_cert</a> (hx509_context context, hx509_cert cert, FILE *out)</td></tr> 97<tr class="separator:ga32a804b17d97d71af17602fdf6b1c891"><td class="memSeparator" colspan="2"> </td></tr> 98</table> 99<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> 100<p>See the <a class="el" href="page_cert.html">The basic certificate</a> for description and examples. </p> 101<h2 class="groupheader">Function Documentation</h2> 102<a id="gafa02f22b6db5ca3c19a488066fea5d7a"></a> 103<h2 class="memtitle"><span class="permalink"><a href="#gafa02f22b6db5ca3c19a488066fea5d7a">◆ </a></span>hx509_cert_binary()</h2> 104 105<div class="memitem"> 106<div class="memproto"> 107 <table class="memname"> 108 <tr> 109 <td class="memname">int hx509_cert_binary </td> 110 <td>(</td> 111 <td class="paramtype">hx509_context </td> 112 <td class="paramname"><em>context</em>, </td> 113 </tr> 114 <tr> 115 <td class="paramkey"></td> 116 <td></td> 117 <td class="paramtype">hx509_cert </td> 118 <td class="paramname"><em>c</em>, </td> 119 </tr> 120 <tr> 121 <td class="paramkey"></td> 122 <td></td> 123 <td class="paramtype">heim_octet_string * </td> 124 <td class="paramname"><em>os</em> </td> 125 </tr> 126 <tr> 127 <td></td> 128 <td>)</td> 129 <td></td><td></td> 130 </tr> 131 </table> 132</div><div class="memdoc"> 133<p>Encodes the hx509 certificate as a DER encode binary.</p> 134<dl class="params"><dt>Parameters</dt><dd> 135 <table class="params"> 136 <tr><td class="paramname">context</td><td>A hx509 context. </td></tr> 137 <tr><td class="paramname">c</td><td>the certificate to encode. </td></tr> 138 <tr><td class="paramname">os</td><td>the encode certificate, set to NULL, 0 on case of error. Free the os->data with <a class="el" href="group__hx509__misc.html#gaba6d3eb6abde539a3191269f785e3e61">hx509_xfree()</a>.</td></tr> 139 </table> 140 </dd> 141</dl> 142<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 143 144</div> 145</div> 146<a id="ga1b329c40d7c17cc1b099ec0bd24d4dc9"></a> 147<h2 class="memtitle"><span class="permalink"><a href="#ga1b329c40d7c17cc1b099ec0bd24d4dc9">◆ </a></span>hx509_cert_check_eku()</h2> 148 149<div class="memitem"> 150<div class="memproto"> 151 <table class="memname"> 152 <tr> 153 <td class="memname">int hx509_cert_check_eku </td> 154 <td>(</td> 155 <td class="paramtype">hx509_context </td> 156 <td class="paramname"><em>context</em>, </td> 157 </tr> 158 <tr> 159 <td class="paramkey"></td> 160 <td></td> 161 <td class="paramtype">hx509_cert </td> 162 <td class="paramname"><em>cert</em>, </td> 163 </tr> 164 <tr> 165 <td class="paramkey"></td> 166 <td></td> 167 <td class="paramtype">const heim_oid * </td> 168 <td class="paramname"><em>eku</em>, </td> 169 </tr> 170 <tr> 171 <td class="paramkey"></td> 172 <td></td> 173 <td class="paramtype">int </td> 174 <td class="paramname"><em>allow_any_eku</em> </td> 175 </tr> 176 <tr> 177 <td></td> 178 <td>)</td> 179 <td></td><td></td> 180 </tr> 181 </table> 182</div><div class="memdoc"> 183<p>Check the extended key usage on the hx509 certificate.</p> 184<dl class="params"><dt>Parameters</dt><dd> 185 <table class="params"> 186 <tr><td class="paramname">context</td><td>A hx509 context. </td></tr> 187 <tr><td class="paramname">cert</td><td>A hx509 context. </td></tr> 188 <tr><td class="paramname">eku</td><td>the EKU to check for </td></tr> 189 <tr><td class="paramname">allow_any_eku</td><td>if the any EKU is set, allow that to be a substitute.</td></tr> 190 </table> 191 </dd> 192</dl> 193<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 194 195</div> 196</div> 197<a id="gab84ed704b59c7965a598ef9c7c353216"></a> 198<h2 class="memtitle"><span class="permalink"><a href="#gab84ed704b59c7965a598ef9c7c353216">◆ </a></span>hx509_cert_cmp()</h2> 199 200<div class="memitem"> 201<div class="memproto"> 202 <table class="memname"> 203 <tr> 204 <td class="memname">int hx509_cert_cmp </td> 205 <td>(</td> 206 <td class="paramtype">hx509_cert </td> 207 <td class="paramname"><em>p</em>, </td> 208 </tr> 209 <tr> 210 <td class="paramkey"></td> 211 <td></td> 212 <td class="paramtype">hx509_cert </td> 213 <td class="paramname"><em>q</em> </td> 214 </tr> 215 <tr> 216 <td></td> 217 <td>)</td> 218 <td></td><td></td> 219 </tr> 220 </table> 221</div><div class="memdoc"> 222<p>Compare to hx509 certificate object, useful for sorting.</p> 223<dl class="params"><dt>Parameters</dt><dd> 224 <table class="params"> 225 <tr><td class="paramname">p</td><td>a hx509 certificate object. </td></tr> 226 <tr><td class="paramname">q</td><td>a hx509 certificate object.</td></tr> 227 </table> 228 </dd> 229</dl> 230<dl class="section return"><dt>Returns</dt><dd>0 the objects are the same, returns > 0 is p is "larger" then q, < 0 if p is "smaller" then q. </dd></dl> 231 232</div> 233</div> 234<a id="ga49e7c45c70442dcb81d394093d9cbe29"></a> 235<h2 class="memtitle"><span class="permalink"><a href="#ga49e7c45c70442dcb81d394093d9cbe29">◆ </a></span>hx509_cert_find_subjectAltName_otherName()</h2> 236 237<div class="memitem"> 238<div class="memproto"> 239 <table class="memname"> 240 <tr> 241 <td class="memname">int hx509_cert_find_subjectAltName_otherName </td> 242 <td>(</td> 243 <td class="paramtype">hx509_context </td> 244 <td class="paramname"><em>context</em>, </td> 245 </tr> 246 <tr> 247 <td class="paramkey"></td> 248 <td></td> 249 <td class="paramtype">hx509_cert </td> 250 <td class="paramname"><em>cert</em>, </td> 251 </tr> 252 <tr> 253 <td class="paramkey"></td> 254 <td></td> 255 <td class="paramtype">const heim_oid * </td> 256 <td class="paramname"><em>oid</em>, </td> 257 </tr> 258 <tr> 259 <td class="paramkey"></td> 260 <td></td> 261 <td class="paramtype">hx509_octet_string_list * </td> 262 <td class="paramname"><em>list</em> </td> 263 </tr> 264 <tr> 265 <td></td> 266 <td>)</td> 267 <td></td><td></td> 268 </tr> 269 </table> 270</div><div class="memdoc"> 271<p>Return a list of subjectAltNames specified by oid in the certificate. On error the</p> 272<p>The returned list of octet string should be freed with <a class="el" href="group__hx509__misc.html#gaa39b9443f688a6d9152ff6dc05f3be8e">hx509_free_octet_string_list()</a>.</p> 273<dl class="params"><dt>Parameters</dt><dd> 274 <table class="params"> 275 <tr><td class="paramname">context</td><td>A hx509 context. </td></tr> 276 <tr><td class="paramname">cert</td><td>a hx509 certificate object. </td></tr> 277 <tr><td class="paramname">oid</td><td>an oid to for SubjectAltName. </td></tr> 278 <tr><td class="paramname">list</td><td>list of matching SubjectAltName.</td></tr> 279 </table> 280 </dd> 281</dl> 282<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 283 284</div> 285</div> 286<a id="gad2f9bb0ddc4babb26a8ccd983db8c948"></a> 287<h2 class="memtitle"><span class="permalink"><a href="#gad2f9bb0ddc4babb26a8ccd983db8c948">◆ </a></span>hx509_cert_free()</h2> 288 289<div class="memitem"> 290<div class="memproto"> 291 <table class="memname"> 292 <tr> 293 <td class="memname">void hx509_cert_free </td> 294 <td>(</td> 295 <td class="paramtype">hx509_cert </td> 296 <td class="paramname"><em>cert</em></td><td>)</td> 297 <td></td> 298 </tr> 299 </table> 300</div><div class="memdoc"> 301<p>Free reference to the hx509 certificate object, if the refcounter reaches 0, the object if freed. Its allowed to pass in NULL.</p> 302<dl class="params"><dt>Parameters</dt><dd> 303 <table class="params"> 304 <tr><td class="paramname">cert</td><td>the cert to free. </td></tr> 305 </table> 306 </dd> 307</dl> 308 309</div> 310</div> 311<a id="ga2038342b93f828789a241a7fee26f4c8"></a> 312<h2 class="memtitle"><span class="permalink"><a href="#ga2038342b93f828789a241a7fee26f4c8">◆ </a></span>hx509_cert_get_attribute()</h2> 313 314<div class="memitem"> 315<div class="memproto"> 316 <table class="memname"> 317 <tr> 318 <td class="memname">hx509_cert_attribute hx509_cert_get_attribute </td> 319 <td>(</td> 320 <td class="paramtype">hx509_cert </td> 321 <td class="paramname"><em>cert</em>, </td> 322 </tr> 323 <tr> 324 <td class="paramkey"></td> 325 <td></td> 326 <td class="paramtype">const heim_oid * </td> 327 <td class="paramname"><em>oid</em> </td> 328 </tr> 329 <tr> 330 <td></td> 331 <td>)</td> 332 <td></td><td></td> 333 </tr> 334 </table> 335</div><div class="memdoc"> 336<p>Get an external attribute for the certificate, examples are friendly name and id.</p> 337<dl class="params"><dt>Parameters</dt><dd> 338 <table class="params"> 339 <tr><td class="paramname">cert</td><td>hx509 certificate object to search </td></tr> 340 <tr><td class="paramname">oid</td><td>an oid to search for.</td></tr> 341 </table> 342 </dd> 343</dl> 344<dl class="section return"><dt>Returns</dt><dd>an hx509_cert_attribute, only valid as long as the certificate is referenced. </dd></dl> 345 346</div> 347</div> 348<a id="ga5e8e38603eb13753912b0075aab276cf"></a> 349<h2 class="memtitle"><span class="permalink"><a href="#ga5e8e38603eb13753912b0075aab276cf">◆ </a></span>hx509_cert_get_base_subject()</h2> 350 351<div class="memitem"> 352<div class="memproto"> 353 <table class="memname"> 354 <tr> 355 <td class="memname">int hx509_cert_get_base_subject </td> 356 <td>(</td> 357 <td class="paramtype">hx509_context </td> 358 <td class="paramname"><em>context</em>, </td> 359 </tr> 360 <tr> 361 <td class="paramkey"></td> 362 <td></td> 363 <td class="paramtype">hx509_cert </td> 364 <td class="paramname"><em>c</em>, </td> 365 </tr> 366 <tr> 367 <td class="paramkey"></td> 368 <td></td> 369 <td class="paramtype">hx509_name * </td> 370 <td class="paramname"><em>name</em> </td> 371 </tr> 372 <tr> 373 <td></td> 374 <td>)</td> 375 <td></td><td></td> 376 </tr> 377 </table> 378</div><div class="memdoc"> 379<p>Return the name of the base subject of the hx509 certificate. If the certiicate is a verified proxy certificate, the this function return the base certificate (root of the proxy chain). If the proxy certificate is not verified with the base certificate HX509_PROXY_CERTIFICATE_NOT_CANONICALIZED is returned.</p> 380<dl class="params"><dt>Parameters</dt><dd> 381 <table class="params"> 382 <tr><td class="paramname">context</td><td>a hx509 context. </td></tr> 383 <tr><td class="paramname">c</td><td>a hx509 certificate object. </td></tr> 384 <tr><td class="paramname">name</td><td>a pointer to a hx509 name, should be freed by <a class="el" href="group__hx509__name.html#gaaf351931efb02fc7aea736af9977155e">hx509_name_free()</a>. See also <a class="el" href="group__hx509__cert.html#ga9f64bb8083bb535ccba007b723c73619">hx509_cert_get_subject()</a>.</td></tr> 385 </table> 386 </dd> 387</dl> 388<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 389 390</div> 391</div> 392<a id="gae2a1de96837304d68216c309e698c3fd"></a> 393<h2 class="memtitle"><span class="permalink"><a href="#gae2a1de96837304d68216c309e698c3fd">◆ </a></span>hx509_cert_get_friendly_name()</h2> 394 395<div class="memitem"> 396<div class="memproto"> 397 <table class="memname"> 398 <tr> 399 <td class="memname">const char* hx509_cert_get_friendly_name </td> 400 <td>(</td> 401 <td class="paramtype">hx509_cert </td> 402 <td class="paramname"><em>cert</em></td><td>)</td> 403 <td></td> 404 </tr> 405 </table> 406</div><div class="memdoc"> 407<p>Get friendly name of the certificate.</p> 408<dl class="params"><dt>Parameters</dt><dd> 409 <table class="params"> 410 <tr><td class="paramname">cert</td><td>cert to get the friendly name from.</td></tr> 411 </table> 412 </dd> 413</dl> 414<dl class="section return"><dt>Returns</dt><dd>an friendly name or NULL if there is. The friendly name is only valid as long as the certificate is referenced. </dd></dl> 415 416</div> 417</div> 418<a id="ga3c61a21c5a802b2f366c9610ff89fa90"></a> 419<h2 class="memtitle"><span class="permalink"><a href="#ga3c61a21c5a802b2f366c9610ff89fa90">◆ </a></span>hx509_cert_get_issuer()</h2> 420 421<div class="memitem"> 422<div class="memproto"> 423 <table class="memname"> 424 <tr> 425 <td class="memname">int hx509_cert_get_issuer </td> 426 <td>(</td> 427 <td class="paramtype">hx509_cert </td> 428 <td class="paramname"><em>p</em>, </td> 429 </tr> 430 <tr> 431 <td class="paramkey"></td> 432 <td></td> 433 <td class="paramtype">hx509_name * </td> 434 <td class="paramname"><em>name</em> </td> 435 </tr> 436 <tr> 437 <td></td> 438 <td>)</td> 439 <td></td><td></td> 440 </tr> 441 </table> 442</div><div class="memdoc"> 443<p>Return the name of the issuer of the hx509 certificate.</p> 444<dl class="params"><dt>Parameters</dt><dd> 445 <table class="params"> 446 <tr><td class="paramname">p</td><td>a hx509 certificate object. </td></tr> 447 <tr><td class="paramname">name</td><td>a pointer to a hx509 name, should be freed by <a class="el" href="group__hx509__name.html#gaaf351931efb02fc7aea736af9977155e">hx509_name_free()</a>.</td></tr> 448 </table> 449 </dd> 450</dl> 451<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 452 453</div> 454</div> 455<a id="gac88fb8bf53b3e105f728251f6d4d4b1f"></a> 456<h2 class="memtitle"><span class="permalink"><a href="#gac88fb8bf53b3e105f728251f6d4d4b1f">◆ </a></span>hx509_cert_get_issuer_unique_id()</h2> 457 458<div class="memitem"> 459<div class="memproto"> 460 <table class="memname"> 461 <tr> 462 <td class="memname">int hx509_cert_get_issuer_unique_id </td> 463 <td>(</td> 464 <td class="paramtype">hx509_context </td> 465 <td class="paramname"><em>context</em>, </td> 466 </tr> 467 <tr> 468 <td class="paramkey"></td> 469 <td></td> 470 <td class="paramtype">hx509_cert </td> 471 <td class="paramname"><em>p</em>, </td> 472 </tr> 473 <tr> 474 <td class="paramkey"></td> 475 <td></td> 476 <td class="paramtype">heim_bit_string * </td> 477 <td class="paramname"><em>issuer</em> </td> 478 </tr> 479 <tr> 480 <td></td> 481 <td>)</td> 482 <td></td><td></td> 483 </tr> 484 </table> 485</div><div class="memdoc"> 486<p>Get a copy of the Issuer Unique ID</p> 487<dl class="params"><dt>Parameters</dt><dd> 488 <table class="params"> 489 <tr><td class="paramname">context</td><td>a hx509_context </td></tr> 490 <tr><td class="paramname">p</td><td>a hx509 certificate </td></tr> 491 <tr><td class="paramname">issuer</td><td>the issuer id returned, free with der_free_bit_string()</td></tr> 492 </table> 493 </dd> 494</dl> 495<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. The error code HX509_EXTENSION_NOT_FOUND is returned if the certificate doesn't have a issuerUniqueID </dd></dl> 496 497</div> 498</div> 499<a id="gad3e8410e9bb4d0bf61bc3e926a4049eb"></a> 500<h2 class="memtitle"><span class="permalink"><a href="#gad3e8410e9bb4d0bf61bc3e926a4049eb">◆ </a></span>hx509_cert_get_notAfter()</h2> 501 502<div class="memitem"> 503<div class="memproto"> 504 <table class="memname"> 505 <tr> 506 <td class="memname">time_t hx509_cert_get_notAfter </td> 507 <td>(</td> 508 <td class="paramtype">hx509_cert </td> 509 <td class="paramname"><em>p</em></td><td>)</td> 510 <td></td> 511 </tr> 512 </table> 513</div><div class="memdoc"> 514<p>Get notAfter time of the certificate.</p> 515<dl class="params"><dt>Parameters</dt><dd> 516 <table class="params"> 517 <tr><td class="paramname">p</td><td>a hx509 certificate object.</td></tr> 518 </table> 519 </dd> 520</dl> 521<dl class="section return"><dt>Returns</dt><dd>return not after time. </dd></dl> 522 523</div> 524</div> 525<a id="ga2e36444c1bce8995ee193013364ce852"></a> 526<h2 class="memtitle"><span class="permalink"><a href="#ga2e36444c1bce8995ee193013364ce852">◆ </a></span>hx509_cert_get_notBefore()</h2> 527 528<div class="memitem"> 529<div class="memproto"> 530 <table class="memname"> 531 <tr> 532 <td class="memname">time_t hx509_cert_get_notBefore </td> 533 <td>(</td> 534 <td class="paramtype">hx509_cert </td> 535 <td class="paramname"><em>p</em></td><td>)</td> 536 <td></td> 537 </tr> 538 </table> 539</div><div class="memdoc"> 540<p>Get notBefore time of the certificate.</p> 541<dl class="params"><dt>Parameters</dt><dd> 542 <table class="params"> 543 <tr><td class="paramname">p</td><td>a hx509 certificate object.</td></tr> 544 </table> 545 </dd> 546</dl> 547<dl class="section return"><dt>Returns</dt><dd>return not before time </dd></dl> 548 549</div> 550</div> 551<a id="ga2960bea38768b49c8b949fe2ea5320e3"></a> 552<h2 class="memtitle"><span class="permalink"><a href="#ga2960bea38768b49c8b949fe2ea5320e3">◆ </a></span>hx509_cert_get_serialnumber()</h2> 553 554<div class="memitem"> 555<div class="memproto"> 556 <table class="memname"> 557 <tr> 558 <td class="memname">int hx509_cert_get_serialnumber </td> 559 <td>(</td> 560 <td class="paramtype">hx509_cert </td> 561 <td class="paramname"><em>p</em>, </td> 562 </tr> 563 <tr> 564 <td class="paramkey"></td> 565 <td></td> 566 <td class="paramtype">heim_integer * </td> 567 <td class="paramname"><em>i</em> </td> 568 </tr> 569 <tr> 570 <td></td> 571 <td>)</td> 572 <td></td><td></td> 573 </tr> 574 </table> 575</div><div class="memdoc"> 576<p>Get serial number of the certificate.</p> 577<dl class="params"><dt>Parameters</dt><dd> 578 <table class="params"> 579 <tr><td class="paramname">p</td><td>a hx509 certificate object. </td></tr> 580 <tr><td class="paramname">i</td><td>serial number, should be freed ith der_free_heim_integer().</td></tr> 581 </table> 582 </dd> 583</dl> 584<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 585 586</div> 587</div> 588<a id="gac9e328025dd91339cf73eecdeec4ffd6"></a> 589<h2 class="memtitle"><span class="permalink"><a href="#gac9e328025dd91339cf73eecdeec4ffd6">◆ </a></span>hx509_cert_get_SPKI()</h2> 590 591<div class="memitem"> 592<div class="memproto"> 593 <table class="memname"> 594 <tr> 595 <td class="memname">int hx509_cert_get_SPKI </td> 596 <td>(</td> 597 <td class="paramtype">hx509_context </td> 598 <td class="paramname"><em>context</em>, </td> 599 </tr> 600 <tr> 601 <td class="paramkey"></td> 602 <td></td> 603 <td class="paramtype">hx509_cert </td> 604 <td class="paramname"><em>p</em>, </td> 605 </tr> 606 <tr> 607 <td class="paramkey"></td> 608 <td></td> 609 <td class="paramtype">SubjectPublicKeyInfo * </td> 610 <td class="paramname"><em>spki</em> </td> 611 </tr> 612 <tr> 613 <td></td> 614 <td>)</td> 615 <td></td><td></td> 616 </tr> 617 </table> 618</div><div class="memdoc"> 619<p>Get the SubjectPublicKeyInfo structure from the hx509 certificate.</p> 620<dl class="params"><dt>Parameters</dt><dd> 621 <table class="params"> 622 <tr><td class="paramname">context</td><td>a hx509 context. </td></tr> 623 <tr><td class="paramname">p</td><td>a hx509 certificate object. </td></tr> 624 <tr><td class="paramname">spki</td><td>SubjectPublicKeyInfo, should be freed with free_SubjectPublicKeyInfo().</td></tr> 625 </table> 626 </dd> 627</dl> 628<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 629 630</div> 631</div> 632<a id="gac2fd6cd8b1fbe0d470a88143a359c395"></a> 633<h2 class="memtitle"><span class="permalink"><a href="#gac2fd6cd8b1fbe0d470a88143a359c395">◆ </a></span>hx509_cert_get_SPKI_AlgorithmIdentifier()</h2> 634 635<div class="memitem"> 636<div class="memproto"> 637 <table class="memname"> 638 <tr> 639 <td class="memname">int hx509_cert_get_SPKI_AlgorithmIdentifier </td> 640 <td>(</td> 641 <td class="paramtype">hx509_context </td> 642 <td class="paramname"><em>context</em>, </td> 643 </tr> 644 <tr> 645 <td class="paramkey"></td> 646 <td></td> 647 <td class="paramtype">hx509_cert </td> 648 <td class="paramname"><em>p</em>, </td> 649 </tr> 650 <tr> 651 <td class="paramkey"></td> 652 <td></td> 653 <td class="paramtype">AlgorithmIdentifier * </td> 654 <td class="paramname"><em>alg</em> </td> 655 </tr> 656 <tr> 657 <td></td> 658 <td>)</td> 659 <td></td><td></td> 660 </tr> 661 </table> 662</div><div class="memdoc"> 663<p>Get the AlgorithmIdentifier from the hx509 certificate.</p> 664<dl class="params"><dt>Parameters</dt><dd> 665 <table class="params"> 666 <tr><td class="paramname">context</td><td>a hx509 context. </td></tr> 667 <tr><td class="paramname">p</td><td>a hx509 certificate object. </td></tr> 668 <tr><td class="paramname">alg</td><td>AlgorithmIdentifier, should be freed with free_AlgorithmIdentifier(). The algorithmidentifier is typicly rsaEncryption, or id-ecPublicKey, or some other public key mechanism.</td></tr> 669 </table> 670 </dd> 671</dl> 672<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 673 674</div> 675</div> 676<a id="ga9f64bb8083bb535ccba007b723c73619"></a> 677<h2 class="memtitle"><span class="permalink"><a href="#ga9f64bb8083bb535ccba007b723c73619">◆ </a></span>hx509_cert_get_subject()</h2> 678 679<div class="memitem"> 680<div class="memproto"> 681 <table class="memname"> 682 <tr> 683 <td class="memname">int hx509_cert_get_subject </td> 684 <td>(</td> 685 <td class="paramtype">hx509_cert </td> 686 <td class="paramname"><em>p</em>, </td> 687 </tr> 688 <tr> 689 <td class="paramkey"></td> 690 <td></td> 691 <td class="paramtype">hx509_name * </td> 692 <td class="paramname"><em>name</em> </td> 693 </tr> 694 <tr> 695 <td></td> 696 <td>)</td> 697 <td></td><td></td> 698 </tr> 699 </table> 700</div><div class="memdoc"> 701<p>Return the name of the subject of the hx509 certificate.</p> 702<dl class="params"><dt>Parameters</dt><dd> 703 <table class="params"> 704 <tr><td class="paramname">p</td><td>a hx509 certificate object. </td></tr> 705 <tr><td class="paramname">name</td><td>a pointer to a hx509 name, should be freed by <a class="el" href="group__hx509__name.html#gaaf351931efb02fc7aea736af9977155e">hx509_name_free()</a>. See also <a class="el" href="group__hx509__cert.html#ga5e8e38603eb13753912b0075aab276cf">hx509_cert_get_base_subject()</a>.</td></tr> 706 </table> 707 </dd> 708</dl> 709<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 710 711</div> 712</div> 713<a id="gac7184f4f0249842866d51b17e4b101fb"></a> 714<h2 class="memtitle"><span class="permalink"><a href="#gac7184f4f0249842866d51b17e4b101fb">◆ </a></span>hx509_cert_get_subject_unique_id()</h2> 715 716<div class="memitem"> 717<div class="memproto"> 718 <table class="memname"> 719 <tr> 720 <td class="memname">int hx509_cert_get_subject_unique_id </td> 721 <td>(</td> 722 <td class="paramtype">hx509_context </td> 723 <td class="paramname"><em>context</em>, </td> 724 </tr> 725 <tr> 726 <td class="paramkey"></td> 727 <td></td> 728 <td class="paramtype">hx509_cert </td> 729 <td class="paramname"><em>p</em>, </td> 730 </tr> 731 <tr> 732 <td class="paramkey"></td> 733 <td></td> 734 <td class="paramtype">heim_bit_string * </td> 735 <td class="paramname"><em>subject</em> </td> 736 </tr> 737 <tr> 738 <td></td> 739 <td>)</td> 740 <td></td><td></td> 741 </tr> 742 </table> 743</div><div class="memdoc"> 744<p>Get a copy of the Subect Unique ID</p> 745<dl class="params"><dt>Parameters</dt><dd> 746 <table class="params"> 747 <tr><td class="paramname">context</td><td>a hx509_context </td></tr> 748 <tr><td class="paramname">p</td><td>a hx509 certificate </td></tr> 749 <tr><td class="paramname">subject</td><td>the subject id returned, free with der_free_bit_string()</td></tr> 750 </table> 751 </dd> 752</dl> 753<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. The error code HX509_EXTENSION_NOT_FOUND is returned if the certificate doesn't have a subjectUniqueID </dd></dl> 754 755</div> 756</div> 757<a id="ga31c3f5e9a6d7892729c56f0f86a76f4a"></a> 758<h2 class="memtitle"><span class="permalink"><a href="#ga31c3f5e9a6d7892729c56f0f86a76f4a">◆ </a></span>hx509_cert_init()</h2> 759 760<div class="memitem"> 761<div class="memproto"> 762 <table class="memname"> 763 <tr> 764 <td class="memname">hx509_cert hx509_cert_init </td> 765 <td>(</td> 766 <td class="paramtype">hx509_context </td> 767 <td class="paramname"><em>context</em>, </td> 768 </tr> 769 <tr> 770 <td class="paramkey"></td> 771 <td></td> 772 <td class="paramtype">const Certificate * </td> 773 <td class="paramname"><em>c</em>, </td> 774 </tr> 775 <tr> 776 <td class="paramkey"></td> 777 <td></td> 778 <td class="paramtype">heim_error_t * </td> 779 <td class="paramname"><em>error</em> </td> 780 </tr> 781 <tr> 782 <td></td> 783 <td>)</td> 784 <td></td><td></td> 785 </tr> 786 </table> 787</div><div class="memdoc"> 788<p>Allocate and init an hx509 certificate object from the decoded certificate `c´.</p> 789<dl class="params"><dt>Parameters</dt><dd> 790 <table class="params"> 791 <tr><td class="paramname">context</td><td>A hx509 context. </td></tr> 792 <tr><td class="paramname">c</td><td></td></tr> 793 <tr><td class="paramname">error</td><td></td></tr> 794 </table> 795 </dd> 796</dl> 797<dl class="section return"><dt>Returns</dt><dd>Returns an hx509 certificate </dd></dl> 798 799</div> 800</div> 801<a id="ga134b62e36ffcf09bbf866a88bc4c5010"></a> 802<h2 class="memtitle"><span class="permalink"><a href="#ga134b62e36ffcf09bbf866a88bc4c5010">◆ </a></span>hx509_cert_init_data()</h2> 803 804<div class="memitem"> 805<div class="memproto"> 806 <table class="memname"> 807 <tr> 808 <td class="memname">hx509_cert hx509_cert_init_data </td> 809 <td>(</td> 810 <td class="paramtype">hx509_context </td> 811 <td class="paramname"><em>context</em>, </td> 812 </tr> 813 <tr> 814 <td class="paramkey"></td> 815 <td></td> 816 <td class="paramtype">const void * </td> 817 <td class="paramname"><em>ptr</em>, </td> 818 </tr> 819 <tr> 820 <td class="paramkey"></td> 821 <td></td> 822 <td class="paramtype">size_t </td> 823 <td class="paramname"><em>len</em>, </td> 824 </tr> 825 <tr> 826 <td class="paramkey"></td> 827 <td></td> 828 <td class="paramtype">heim_error_t * </td> 829 <td class="paramname"><em>error</em> </td> 830 </tr> 831 <tr> 832 <td></td> 833 <td>)</td> 834 <td></td><td></td> 835 </tr> 836 </table> 837</div><div class="memdoc"> 838<p>Just like <a class="el" href="group__hx509__cert.html#ga31c3f5e9a6d7892729c56f0f86a76f4a">hx509_cert_init()</a>, but instead of a decode certificate takes an pointer and length to a memory region that contains a DER/BER encoded certificate.</p> 839<p>If the memory region doesn't contain just the certificate and nothing more the function will fail with HX509_EXTRA_DATA_AFTER_STRUCTURE.</p> 840<dl class="params"><dt>Parameters</dt><dd> 841 <table class="params"> 842 <tr><td class="paramname">context</td><td>A hx509 context. </td></tr> 843 <tr><td class="paramname">ptr</td><td>pointer to memory region containing encoded certificate. </td></tr> 844 <tr><td class="paramname">len</td><td>length of memory region. </td></tr> 845 <tr><td class="paramname">error</td><td>possibly returns an error</td></tr> 846 </table> 847 </dd> 848</dl> 849<dl class="section return"><dt>Returns</dt><dd>An hx509 certificate </dd></dl> 850 851</div> 852</div> 853<a id="ga1870b485d4e8e53f75690f35f4526fcc"></a> 854<h2 class="memtitle"><span class="permalink"><a href="#ga1870b485d4e8e53f75690f35f4526fcc">◆ </a></span>hx509_cert_ref()</h2> 855 856<div class="memitem"> 857<div class="memproto"> 858 <table class="memname"> 859 <tr> 860 <td class="memname">hx509_cert hx509_cert_ref </td> 861 <td>(</td> 862 <td class="paramtype">hx509_cert </td> 863 <td class="paramname"><em>cert</em></td><td>)</td> 864 <td></td> 865 </tr> 866 </table> 867</div><div class="memdoc"> 868<p>Add a reference to a hx509 certificate object.</p> 869<dl class="params"><dt>Parameters</dt><dd> 870 <table class="params"> 871 <tr><td class="paramname">cert</td><td>a pointer to an hx509 certificate object.</td></tr> 872 </table> 873 </dd> 874</dl> 875<dl class="section return"><dt>Returns</dt><dd>the same object as is passed in. </dd></dl> 876 877</div> 878</div> 879<a id="ga972768dbcc822fed1b74e7686b407f78"></a> 880<h2 class="memtitle"><span class="permalink"><a href="#ga972768dbcc822fed1b74e7686b407f78">◆ </a></span>hx509_cert_set_friendly_name()</h2> 881 882<div class="memitem"> 883<div class="memproto"> 884 <table class="memname"> 885 <tr> 886 <td class="memname">int hx509_cert_set_friendly_name </td> 887 <td>(</td> 888 <td class="paramtype">hx509_cert </td> 889 <td class="paramname"><em>cert</em>, </td> 890 </tr> 891 <tr> 892 <td class="paramkey"></td> 893 <td></td> 894 <td class="paramtype">const char * </td> 895 <td class="paramname"><em>name</em> </td> 896 </tr> 897 <tr> 898 <td></td> 899 <td>)</td> 900 <td></td><td></td> 901 </tr> 902 </table> 903</div><div class="memdoc"> 904<p>Set the friendly name on the certificate.</p> 905<dl class="params"><dt>Parameters</dt><dd> 906 <table class="params"> 907 <tr><td class="paramname">cert</td><td>The certificate to set the friendly name on </td></tr> 908 <tr><td class="paramname">name</td><td>Friendly name.</td></tr> 909 </table> 910 </dd> 911</dl> 912<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 913 914</div> 915</div> 916<a id="ga32a804b17d97d71af17602fdf6b1c891"></a> 917<h2 class="memtitle"><span class="permalink"><a href="#ga32a804b17d97d71af17602fdf6b1c891">◆ </a></span>hx509_print_cert()</h2> 918 919<div class="memitem"> 920<div class="memproto"> 921 <table class="memname"> 922 <tr> 923 <td class="memname">int hx509_print_cert </td> 924 <td>(</td> 925 <td class="paramtype">hx509_context </td> 926 <td class="paramname"><em>context</em>, </td> 927 </tr> 928 <tr> 929 <td class="paramkey"></td> 930 <td></td> 931 <td class="paramtype">hx509_cert </td> 932 <td class="paramname"><em>cert</em>, </td> 933 </tr> 934 <tr> 935 <td class="paramkey"></td> 936 <td></td> 937 <td class="paramtype">FILE * </td> 938 <td class="paramname"><em>out</em> </td> 939 </tr> 940 <tr> 941 <td></td> 942 <td>)</td> 943 <td></td><td></td> 944 </tr> 945 </table> 946</div><div class="memdoc"> 947<p>Print a simple representation of a certificate</p> 948<dl class="params"><dt>Parameters</dt><dd> 949 <table class="params"> 950 <tr><td class="paramname">context</td><td>A hx509 context, can be NULL </td></tr> 951 <tr><td class="paramname">cert</td><td>certificate to print </td></tr> 952 <tr><td class="paramname">out</td><td>the stdio output stream, if NULL, stdout is used</td></tr> 953 </table> 954 </dd> 955</dl> 956<dl class="section return"><dt>Returns</dt><dd>An hx509 error code </dd></dl> 957 958</div> 959</div> 960<a id="ga5833168d3181e12883b51284fd069543"></a> 961<h2 class="memtitle"><span class="permalink"><a href="#ga5833168d3181e12883b51284fd069543">◆ </a></span>hx509_query_alloc()</h2> 962 963<div class="memitem"> 964<div class="memproto"> 965 <table class="memname"> 966 <tr> 967 <td class="memname">int hx509_query_alloc </td> 968 <td>(</td> 969 <td class="paramtype">hx509_context </td> 970 <td class="paramname"><em>context</em>, </td> 971 </tr> 972 <tr> 973 <td class="paramkey"></td> 974 <td></td> 975 <td class="paramtype">hx509_query ** </td> 976 <td class="paramname"><em>q</em> </td> 977 </tr> 978 <tr> 979 <td></td> 980 <td>)</td> 981 <td></td><td></td> 982 </tr> 983 </table> 984</div><div class="memdoc"> 985<p>Allocate an query controller. Free using <a class="el" href="group__hx509__cert.html#ga6aafd01e9215fef980a572b2c7289d8c">hx509_query_free()</a>.</p> 986<dl class="params"><dt>Parameters</dt><dd> 987 <table class="params"> 988 <tr><td class="paramname">context</td><td>A hx509 context. </td></tr> 989 <tr><td class="paramname">q</td><td>return pointer to a hx509_query.</td></tr> 990 </table> 991 </dd> 992</dl> 993<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 994 995</div> 996</div> 997<a id="ga6aafd01e9215fef980a572b2c7289d8c"></a> 998<h2 class="memtitle"><span class="permalink"><a href="#ga6aafd01e9215fef980a572b2c7289d8c">◆ </a></span>hx509_query_free()</h2> 999 1000<div class="memitem"> 1001<div class="memproto"> 1002 <table class="memname"> 1003 <tr> 1004 <td class="memname">void hx509_query_free </td> 1005 <td>(</td> 1006 <td class="paramtype">hx509_context </td> 1007 <td class="paramname"><em>context</em>, </td> 1008 </tr> 1009 <tr> 1010 <td class="paramkey"></td> 1011 <td></td> 1012 <td class="paramtype">hx509_query * </td> 1013 <td class="paramname"><em>q</em> </td> 1014 </tr> 1015 <tr> 1016 <td></td> 1017 <td>)</td> 1018 <td></td><td></td> 1019 </tr> 1020 </table> 1021</div><div class="memdoc"> 1022<p>Free the query controller.</p> 1023<dl class="params"><dt>Parameters</dt><dd> 1024 <table class="params"> 1025 <tr><td class="paramname">context</td><td>A hx509 context. </td></tr> 1026 <tr><td class="paramname">q</td><td>a pointer to the query controller. </td></tr> 1027 </table> 1028 </dd> 1029</dl> 1030 1031</div> 1032</div> 1033<a id="gae1660c0cf5a41f17db72a8c18e79c684"></a> 1034<h2 class="memtitle"><span class="permalink"><a href="#gae1660c0cf5a41f17db72a8c18e79c684">◆ </a></span>hx509_query_match_cmp_func()</h2> 1035 1036<div class="memitem"> 1037<div class="memproto"> 1038 <table class="memname"> 1039 <tr> 1040 <td class="memname">int hx509_query_match_cmp_func </td> 1041 <td>(</td> 1042 <td class="paramtype">hx509_query * </td> 1043 <td class="paramname"><em>q</em>, </td> 1044 </tr> 1045 <tr> 1046 <td class="paramkey"></td> 1047 <td></td> 1048 <td class="paramtype">int(*)(hx509_context, hx509_cert, void *) </td> 1049 <td class="paramname"><em>func</em>, </td> 1050 </tr> 1051 <tr> 1052 <td class="paramkey"></td> 1053 <td></td> 1054 <td class="paramtype">void * </td> 1055 <td class="paramname"><em>ctx</em> </td> 1056 </tr> 1057 <tr> 1058 <td></td> 1059 <td>)</td> 1060 <td></td><td></td> 1061 </tr> 1062 </table> 1063</div><div class="memdoc"> 1064<p>Set the query controller to match using a specific match function.</p> 1065<dl class="params"><dt>Parameters</dt><dd> 1066 <table class="params"> 1067 <tr><td class="paramname">q</td><td>a hx509 query controller. </td></tr> 1068 <tr><td class="paramname">func</td><td>function to use for matching, if the argument is NULL, the match function is removed. </td></tr> 1069 <tr><td class="paramname">ctx</td><td>context passed to the function.</td></tr> 1070 </table> 1071 </dd> 1072</dl> 1073<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 1074 1075</div> 1076</div> 1077<a id="ga5a7e01c75b7b8243356048a88133c2df"></a> 1078<h2 class="memtitle"><span class="permalink"><a href="#ga5a7e01c75b7b8243356048a88133c2df">◆ </a></span>hx509_query_match_eku()</h2> 1079 1080<div class="memitem"> 1081<div class="memproto"> 1082 <table class="memname"> 1083 <tr> 1084 <td class="memname">int hx509_query_match_eku </td> 1085 <td>(</td> 1086 <td class="paramtype">hx509_query * </td> 1087 <td class="paramname"><em>q</em>, </td> 1088 </tr> 1089 <tr> 1090 <td class="paramkey"></td> 1091 <td></td> 1092 <td class="paramtype">const heim_oid * </td> 1093 <td class="paramname"><em>eku</em> </td> 1094 </tr> 1095 <tr> 1096 <td></td> 1097 <td>)</td> 1098 <td></td><td></td> 1099 </tr> 1100 </table> 1101</div><div class="memdoc"> 1102<p>Set the query controller to require an one specific EKU (extended key usage). Any previous EKU matching is overwitten. If NULL is passed in as the eku, the EKU requirement is reset.</p> 1103<dl class="params"><dt>Parameters</dt><dd> 1104 <table class="params"> 1105 <tr><td class="paramname">q</td><td>a hx509 query controller. </td></tr> 1106 <tr><td class="paramname">eku</td><td>an EKU to match on.</td></tr> 1107 </table> 1108 </dd> 1109</dl> 1110<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 1111 1112</div> 1113</div> 1114<a id="ga5be7b5ece155f2577335b5575f141362"></a> 1115<h2 class="memtitle"><span class="permalink"><a href="#ga5be7b5ece155f2577335b5575f141362">◆ </a></span>hx509_query_match_friendly_name()</h2> 1116 1117<div class="memitem"> 1118<div class="memproto"> 1119 <table class="memname"> 1120 <tr> 1121 <td class="memname">int hx509_query_match_friendly_name </td> 1122 <td>(</td> 1123 <td class="paramtype">hx509_query * </td> 1124 <td class="paramname"><em>q</em>, </td> 1125 </tr> 1126 <tr> 1127 <td class="paramkey"></td> 1128 <td></td> 1129 <td class="paramtype">const char * </td> 1130 <td class="paramname"><em>name</em> </td> 1131 </tr> 1132 <tr> 1133 <td></td> 1134 <td>)</td> 1135 <td></td><td></td> 1136 </tr> 1137 </table> 1138</div><div class="memdoc"> 1139<p>Set the query controller to match on a friendly name</p> 1140<dl class="params"><dt>Parameters</dt><dd> 1141 <table class="params"> 1142 <tr><td class="paramname">q</td><td>a hx509 query controller. </td></tr> 1143 <tr><td class="paramname">name</td><td>a friendly name to match on</td></tr> 1144 </table> 1145 </dd> 1146</dl> 1147<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 1148 1149</div> 1150</div> 1151<a id="gad5d7a68cc8ca4c948ae99b7eb6f5bc2e"></a> 1152<h2 class="memtitle"><span class="permalink"><a href="#gad5d7a68cc8ca4c948ae99b7eb6f5bc2e">◆ </a></span>hx509_query_match_issuer_serial()</h2> 1153 1154<div class="memitem"> 1155<div class="memproto"> 1156 <table class="memname"> 1157 <tr> 1158 <td class="memname">int hx509_query_match_issuer_serial </td> 1159 <td>(</td> 1160 <td class="paramtype">hx509_query * </td> 1161 <td class="paramname"><em>q</em>, </td> 1162 </tr> 1163 <tr> 1164 <td class="paramkey"></td> 1165 <td></td> 1166 <td class="paramtype">const Name * </td> 1167 <td class="paramname"><em>issuer</em>, </td> 1168 </tr> 1169 <tr> 1170 <td class="paramkey"></td> 1171 <td></td> 1172 <td class="paramtype">const heim_integer * </td> 1173 <td class="paramname"><em>serialNumber</em> </td> 1174 </tr> 1175 <tr> 1176 <td></td> 1177 <td>)</td> 1178 <td></td><td></td> 1179 </tr> 1180 </table> 1181</div><div class="memdoc"> 1182<p>Set the issuer and serial number of match in the query controller. The function make copies of the isser and serial number.</p> 1183<dl class="params"><dt>Parameters</dt><dd> 1184 <table class="params"> 1185 <tr><td class="paramname">q</td><td>a hx509 query controller </td></tr> 1186 <tr><td class="paramname">issuer</td><td>issuer to search for </td></tr> 1187 <tr><td class="paramname">serialNumber</td><td>the serialNumber of the issuer.</td></tr> 1188 </table> 1189 </dd> 1190</dl> 1191<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 1192 1193</div> 1194</div> 1195<a id="gac708daef26edff5fd36f4587e61a9914"></a> 1196<h2 class="memtitle"><span class="permalink"><a href="#gac708daef26edff5fd36f4587e61a9914">◆ </a></span>hx509_query_match_option()</h2> 1197 1198<div class="memitem"> 1199<div class="memproto"> 1200 <table class="memname"> 1201 <tr> 1202 <td class="memname">void hx509_query_match_option </td> 1203 <td>(</td> 1204 <td class="paramtype">hx509_query * </td> 1205 <td class="paramname"><em>q</em>, </td> 1206 </tr> 1207 <tr> 1208 <td class="paramkey"></td> 1209 <td></td> 1210 <td class="paramtype">hx509_query_option </td> 1211 <td class="paramname"><em>option</em> </td> 1212 </tr> 1213 <tr> 1214 <td></td> 1215 <td>)</td> 1216 <td></td><td></td> 1217 </tr> 1218 </table> 1219</div><div class="memdoc"> 1220<p>Set match options for the hx509 query controller.</p> 1221<dl class="params"><dt>Parameters</dt><dd> 1222 <table class="params"> 1223 <tr><td class="paramname">q</td><td>query controller. </td></tr> 1224 <tr><td class="paramname">option</td><td>options to control the query controller.</td></tr> 1225 </table> 1226 </dd> 1227</dl> 1228<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 1229 1230</div> 1231</div> 1232<a id="ga94b4aa7d907d34914e161831e74440a8"></a> 1233<h2 class="memtitle"><span class="permalink"><a href="#ga94b4aa7d907d34914e161831e74440a8">◆ </a></span>hx509_query_statistic_file()</h2> 1234 1235<div class="memitem"> 1236<div class="memproto"> 1237 <table class="memname"> 1238 <tr> 1239 <td class="memname">void hx509_query_statistic_file </td> 1240 <td>(</td> 1241 <td class="paramtype">hx509_context </td> 1242 <td class="paramname"><em>context</em>, </td> 1243 </tr> 1244 <tr> 1245 <td class="paramkey"></td> 1246 <td></td> 1247 <td class="paramtype">const char * </td> 1248 <td class="paramname"><em>fn</em> </td> 1249 </tr> 1250 <tr> 1251 <td></td> 1252 <td>)</td> 1253 <td></td><td></td> 1254 </tr> 1255 </table> 1256</div><div class="memdoc"> 1257<p>Set a statistic file for the query statistics.</p> 1258<dl class="params"><dt>Parameters</dt><dd> 1259 <table class="params"> 1260 <tr><td class="paramname">context</td><td>A hx509 context. </td></tr> 1261 <tr><td class="paramname">fn</td><td>statistics file name </td></tr> 1262 </table> 1263 </dd> 1264</dl> 1265 1266</div> 1267</div> 1268<a id="ga522fb2a85515ce8debea860cdfeb94c0"></a> 1269<h2 class="memtitle"><span class="permalink"><a href="#ga522fb2a85515ce8debea860cdfeb94c0">◆ </a></span>hx509_query_unparse_stats()</h2> 1270 1271<div class="memitem"> 1272<div class="memproto"> 1273 <table class="memname"> 1274 <tr> 1275 <td class="memname">void hx509_query_unparse_stats </td> 1276 <td>(</td> 1277 <td class="paramtype">hx509_context </td> 1278 <td class="paramname"><em>context</em>, </td> 1279 </tr> 1280 <tr> 1281 <td class="paramkey"></td> 1282 <td></td> 1283 <td class="paramtype">int </td> 1284 <td class="paramname"><em>printtype</em>, </td> 1285 </tr> 1286 <tr> 1287 <td class="paramkey"></td> 1288 <td></td> 1289 <td class="paramtype">FILE * </td> 1290 <td class="paramname"><em>out</em> </td> 1291 </tr> 1292 <tr> 1293 <td></td> 1294 <td>)</td> 1295 <td></td><td></td> 1296 </tr> 1297 </table> 1298</div><div class="memdoc"> 1299<p>Unparse the statistics file and print the result on a FILE descriptor.</p> 1300<dl class="params"><dt>Parameters</dt><dd> 1301 <table class="params"> 1302 <tr><td class="paramname">context</td><td>A hx509 context. </td></tr> 1303 <tr><td class="paramname">printtype</td><td>tyep to print </td></tr> 1304 <tr><td class="paramname">out</td><td>the FILE to write the data on. </td></tr> 1305 </table> 1306 </dd> 1307</dl> 1308 1309</div> 1310</div> 1311<a id="gafb8063ac0396ad60392b8b9554c6b896"></a> 1312<h2 class="memtitle"><span class="permalink"><a href="#gafb8063ac0396ad60392b8b9554c6b896">◆ </a></span>hx509_verify_ctx_f_allow_default_trustanchors()</h2> 1313 1314<div class="memitem"> 1315<div class="memproto"> 1316 <table class="memname"> 1317 <tr> 1318 <td class="memname">void hx509_verify_ctx_f_allow_default_trustanchors </td> 1319 <td>(</td> 1320 <td class="paramtype">hx509_verify_ctx </td> 1321 <td class="paramname"><em>ctx</em>, </td> 1322 </tr> 1323 <tr> 1324 <td class="paramkey"></td> 1325 <td></td> 1326 <td class="paramtype">int </td> 1327 <td class="paramname"><em>boolean</em> </td> 1328 </tr> 1329 <tr> 1330 <td></td> 1331 <td>)</td> 1332 <td></td><td></td> 1333 </tr> 1334 </table> 1335</div><div class="memdoc"> 1336<p>Allow using the operating system builtin trust anchors if no other trust anchors are configured.</p> 1337<dl class="params"><dt>Parameters</dt><dd> 1338 <table class="params"> 1339 <tr><td class="paramname">ctx</td><td>a verification context </td></tr> 1340 <tr><td class="paramname">boolean</td><td>if non zero, useing the operating systems builtin trust anchors.</td></tr> 1341 </table> 1342 </dd> 1343</dl> 1344<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 1345 1346</div> 1347</div> 1348<a id="ga5dc160f02aeffffb0eea58b6203c856a"></a> 1349<h2 class="memtitle"><span class="permalink"><a href="#ga5dc160f02aeffffb0eea58b6203c856a">◆ </a></span>hx509_verify_hostname()</h2> 1350 1351<div class="memitem"> 1352<div class="memproto"> 1353 <table class="memname"> 1354 <tr> 1355 <td class="memname">int hx509_verify_hostname </td> 1356 <td>(</td> 1357 <td class="paramtype">hx509_context </td> 1358 <td class="paramname"><em>context</em>, </td> 1359 </tr> 1360 <tr> 1361 <td class="paramkey"></td> 1362 <td></td> 1363 <td class="paramtype">const hx509_cert </td> 1364 <td class="paramname"><em>cert</em>, </td> 1365 </tr> 1366 <tr> 1367 <td class="paramkey"></td> 1368 <td></td> 1369 <td class="paramtype">int </td> 1370 <td class="paramname"><em>flags</em>, </td> 1371 </tr> 1372 <tr> 1373 <td class="paramkey"></td> 1374 <td></td> 1375 <td class="paramtype">hx509_hostname_type </td> 1376 <td class="paramname"><em>type</em>, </td> 1377 </tr> 1378 <tr> 1379 <td class="paramkey"></td> 1380 <td></td> 1381 <td class="paramtype">const char * </td> 1382 <td class="paramname"><em>hostname</em>, </td> 1383 </tr> 1384 <tr> 1385 <td class="paramkey"></td> 1386 <td></td> 1387 <td class="paramtype">const struct sockaddr * </td> 1388 <td class="paramname"><em>sa</em>, </td> 1389 </tr> 1390 <tr> 1391 <td class="paramkey"></td> 1392 <td></td> 1393 <td class="paramtype">int </td> 1394 <td class="paramname"><em>sa_size</em> </td> 1395 </tr> 1396 <tr> 1397 <td></td> 1398 <td>)</td> 1399 <td></td><td></td> 1400 </tr> 1401 </table> 1402</div><div class="memdoc"> 1403<p>Verify that the certificate is allowed to be used for the hostname and address.</p> 1404<dl class="params"><dt>Parameters</dt><dd> 1405 <table class="params"> 1406 <tr><td class="paramname">context</td><td>A hx509 context. </td></tr> 1407 <tr><td class="paramname">cert</td><td>the certificate to match with </td></tr> 1408 <tr><td class="paramname">flags</td><td>Flags to modify the behavior:<ul> 1409<li>HX509_VHN_F_ALLOW_NO_MATCH no match is ok </li> 1410</ul> 1411</td></tr> 1412 <tr><td class="paramname">type</td><td>type of hostname:<ul> 1413<li>HX509_HN_HOSTNAME for plain hostname.</li> 1414<li>HX509_HN_DNSSRV for DNS SRV names. </li> 1415</ul> 1416</td></tr> 1417 <tr><td class="paramname">hostname</td><td>the hostname to check </td></tr> 1418 <tr><td class="paramname">sa</td><td>address of the host </td></tr> 1419 <tr><td class="paramname">sa_size</td><td>length of address</td></tr> 1420 </table> 1421 </dd> 1422</dl> 1423<dl class="section return"><dt>Returns</dt><dd>An hx509 error code, see <a class="el" href="group__hx509__error.html#ga15791abff76719acb531223fdcbcac87">hx509_get_error_string()</a>. </dd></dl> 1424 1425</div> 1426</div> 1427</div><!-- contents --> 1428<hr size="1"><address style="text-align: right;"><small> 1429Generated 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> 1430</body> 1431</html> 1432