Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > 9e72f3e7ecf68cce016a7c5c59e863d3 > files > 98

lib64polarssl-devel-1.3.8-1.mga4.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>PolarSSL v1.3.8: asn1.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">PolarSSL v1.3.8
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_6a9bbd12bf4e19a18c45e270f8fae3fd.html">include</a></li><li class="navelem"><a class="el" href="dir_04272d44da4745cf8b8bfc767d6c6523.html">polarssl</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a>  </div>
  <div class="headertitle">
<div class="title">asn1.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Generic ASN.1 parsing.  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="config_8h_source.html">config.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="bignum_8h_source.html">bignum.h</a>&quot;</code><br/>
<code>#include &lt;string.h&gt;</code><br/>
</div><div class="textblock"><div class="dynheader">
Include dependency graph for asn1.h:</div>
<div class="dyncontent">
<div class="center"><img src="asn1_8h__incl.png" border="0" usemap="#asn1_8h" alt=""/></div>
<map name="asn1_8h" id="asn1_8h">
</map>
</div>
</div><div class="textblock"><div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dyncontent">
<div class="center"><img src="asn1_8h__dep__incl.png" border="0" usemap="#asn1_8hdep" alt=""/></div>
<map name="asn1_8hdep" id="asn1_8hdep">
</map>
</div>
</div>
<p><a href="asn1_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__asn1__buf.html">_asn1_buf</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type-length-value structure that allows for ASN1 using DER.  <a href="struct__asn1__buf.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__asn1__bitstring.html">_asn1_bitstring</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Container for ASN1 bit strings.  <a href="struct__asn1__bitstring.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__asn1__sequence.html">_asn1_sequence</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Container for a sequence of ASN.1 items.  <a href="struct__asn1__sequence.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct__asn1__named__data.html">_asn1_named_data</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Container for a sequence or list of 'named' ASN.1 data items.  <a href="struct__asn1__named__data.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a79358b9b589d5cf11497945672ea7fd7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#a79358b9b589d5cf11497945672ea7fd7">OID_SIZE</a>(x)&#160;&#160;&#160;(sizeof(x) - 1)</td></tr>
<tr class="memdesc:a79358b9b589d5cf11497945672ea7fd7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the size of the binary string, without the trailing \0.  <a href="#a79358b9b589d5cf11497945672ea7fd7">More...</a><br/></td></tr>
<tr class="separator:a79358b9b589d5cf11497945672ea7fd7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a068fd58b6b0011021a516695ff14a41e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#a068fd58b6b0011021a516695ff14a41e">OID_CMP</a>(oid_str, oid_buf)</td></tr>
<tr class="memdesc:a068fd58b6b0011021a516695ff14a41e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compares an asn1_buf structure to a reference OID.  <a href="#a068fd58b6b0011021a516695ff14a41e">More...</a><br/></td></tr>
<tr class="separator:a068fd58b6b0011021a516695ff14a41e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">ASN1 Error codes</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>These error codes are OR'ed to X509 error codes for higher error granularity.</p>
<p>ASN1 is a standard to specify data structures. </p>
</div></td></tr>
<tr class="memitem:ga0274145c2843f1d22cf7ca9b7ed37bab"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#ga0274145c2843f1d22cf7ca9b7ed37bab">POLARSSL_ERR_ASN1_OUT_OF_DATA</a>&#160;&#160;&#160;-0x0060</td></tr>
<tr class="memdesc:ga0274145c2843f1d22cf7ca9b7ed37bab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Out of data when parsing an ASN1 data structure.  <a href="group__asn1__module.html#ga0274145c2843f1d22cf7ca9b7ed37bab">More...</a><br/></td></tr>
<tr class="separator:ga0274145c2843f1d22cf7ca9b7ed37bab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga171798e67a7a1024ab5e1c12c73f0537"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#ga171798e67a7a1024ab5e1c12c73f0537">POLARSSL_ERR_ASN1_UNEXPECTED_TAG</a>&#160;&#160;&#160;-0x0062</td></tr>
<tr class="memdesc:ga171798e67a7a1024ab5e1c12c73f0537"><td class="mdescLeft">&#160;</td><td class="mdescRight">ASN1 tag was of an unexpected value.  <a href="group__asn1__module.html#ga171798e67a7a1024ab5e1c12c73f0537">More...</a><br/></td></tr>
<tr class="separator:ga171798e67a7a1024ab5e1c12c73f0537"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga05662cd7f7290c3de3e74598f0a60b7e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#ga05662cd7f7290c3de3e74598f0a60b7e">POLARSSL_ERR_ASN1_INVALID_LENGTH</a>&#160;&#160;&#160;-0x0064</td></tr>
<tr class="memdesc:ga05662cd7f7290c3de3e74598f0a60b7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error when trying to determine the length or invalid length.  <a href="group__asn1__module.html#ga05662cd7f7290c3de3e74598f0a60b7e">More...</a><br/></td></tr>
<tr class="separator:ga05662cd7f7290c3de3e74598f0a60b7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaffc1c105d348cf2be47a2c8d6ab5ef63"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#gaffc1c105d348cf2be47a2c8d6ab5ef63">POLARSSL_ERR_ASN1_LENGTH_MISMATCH</a>&#160;&#160;&#160;-0x0066</td></tr>
<tr class="memdesc:gaffc1c105d348cf2be47a2c8d6ab5ef63"><td class="mdescLeft">&#160;</td><td class="mdescRight">Actual length differs from expected length.  <a href="group__asn1__module.html#gaffc1c105d348cf2be47a2c8d6ab5ef63">More...</a><br/></td></tr>
<tr class="separator:gaffc1c105d348cf2be47a2c8d6ab5ef63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6dab8f2bf2ddd7e0c9f274267ab6aa30"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#ga6dab8f2bf2ddd7e0c9f274267ab6aa30">POLARSSL_ERR_ASN1_INVALID_DATA</a>&#160;&#160;&#160;-0x0068</td></tr>
<tr class="memdesc:ga6dab8f2bf2ddd7e0c9f274267ab6aa30"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data is invalid.  <a href="group__asn1__module.html#ga6dab8f2bf2ddd7e0c9f274267ab6aa30">More...</a><br/></td></tr>
<tr class="separator:ga6dab8f2bf2ddd7e0c9f274267ab6aa30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga37e8d5745c2724e7330566921ca16fec"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#ga37e8d5745c2724e7330566921ca16fec">POLARSSL_ERR_ASN1_MALLOC_FAILED</a>&#160;&#160;&#160;-0x006A</td></tr>
<tr class="memdesc:ga37e8d5745c2724e7330566921ca16fec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Memory allocation failed.  <a href="group__asn1__module.html#ga37e8d5745c2724e7330566921ca16fec">More...</a><br/></td></tr>
<tr class="separator:ga37e8d5745c2724e7330566921ca16fec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafc87dd8ff36b6f9354941b0de4567cc6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#gafc87dd8ff36b6f9354941b0de4567cc6">POLARSSL_ERR_ASN1_BUF_TOO_SMALL</a>&#160;&#160;&#160;-0x006C</td></tr>
<tr class="memdesc:gafc87dd8ff36b6f9354941b0de4567cc6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Buffer too small when writing ASN.1 data structure.  <a href="group__asn1__module.html#gafc87dd8ff36b6f9354941b0de4567cc6">More...</a><br/></td></tr>
<tr class="separator:gafc87dd8ff36b6f9354941b0de4567cc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">DER constants</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>These constants comply with DER encoded the ANS1 type tags.</p>
<p>DER encoding uses hexadecimal representation. An example DER sequence is:<br/>
</p>
<ul>
<li>0x02 &ndash; tag indicating INTEGER</li>
<li>0x01 &ndash; length in octets</li>
<li>0x05 &ndash; value Such sequences are typically read into <code><a class="el" href="group__x509__module.html#ga4c222d5841d84a018a77b3f8419141fd" title="Type-length-value structure that allows for ASN1 using DER. ">x509_buf</a></code>. </li>
</ul>
</div></td></tr>
<tr class="memitem:ga5ecb3f6655f48694a6326657290d4996"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#ga5ecb3f6655f48694a6326657290d4996">ASN1_BOOLEAN</a>&#160;&#160;&#160;0x01</td></tr>
<tr class="separator:ga5ecb3f6655f48694a6326657290d4996"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0d3b979ef2ca9618ec1899fd0e14d8ec"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#ga0d3b979ef2ca9618ec1899fd0e14d8ec">ASN1_INTEGER</a>&#160;&#160;&#160;0x02</td></tr>
<tr class="separator:ga0d3b979ef2ca9618ec1899fd0e14d8ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1493defdd429594af36feaf6309cc70a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#ga1493defdd429594af36feaf6309cc70a">ASN1_BIT_STRING</a>&#160;&#160;&#160;0x03</td></tr>
<tr class="separator:ga1493defdd429594af36feaf6309cc70a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae251e2c2d40228a89468f3f939a18585"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#gae251e2c2d40228a89468f3f939a18585">ASN1_OCTET_STRING</a>&#160;&#160;&#160;0x04</td></tr>
<tr class="separator:gae251e2c2d40228a89468f3f939a18585"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga381db5db1873cb0b03744322cd9bc19c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#ga381db5db1873cb0b03744322cd9bc19c">ASN1_NULL</a>&#160;&#160;&#160;0x05</td></tr>
<tr class="separator:ga381db5db1873cb0b03744322cd9bc19c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3fef844d0ea67080b66b3a4d5f0a9ec8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#ga3fef844d0ea67080b66b3a4d5f0a9ec8">ASN1_OID</a>&#160;&#160;&#160;0x06</td></tr>
<tr class="separator:ga3fef844d0ea67080b66b3a4d5f0a9ec8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0dcba566de60f1776d36931ac1733b8d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#ga0dcba566de60f1776d36931ac1733b8d">ASN1_UTF8_STRING</a>&#160;&#160;&#160;0x0C</td></tr>
<tr class="separator:ga0dcba566de60f1776d36931ac1733b8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9321fc9f2a5ef4103008fbe5c4b230df"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#ga9321fc9f2a5ef4103008fbe5c4b230df">ASN1_SEQUENCE</a>&#160;&#160;&#160;0x10</td></tr>
<tr class="separator:ga9321fc9f2a5ef4103008fbe5c4b230df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaa4097914560e5318d1c316106b38998"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#gaaa4097914560e5318d1c316106b38998">ASN1_SET</a>&#160;&#160;&#160;0x11</td></tr>
<tr class="separator:gaaa4097914560e5318d1c316106b38998"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9d250073c32cfa2d0f90a92fa9485c89"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#ga9d250073c32cfa2d0f90a92fa9485c89">ASN1_PRINTABLE_STRING</a>&#160;&#160;&#160;0x13</td></tr>
<tr class="separator:ga9d250073c32cfa2d0f90a92fa9485c89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaecb31acd8c2e58371f4cc5163f13ee3e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#gaecb31acd8c2e58371f4cc5163f13ee3e">ASN1_T61_STRING</a>&#160;&#160;&#160;0x14</td></tr>
<tr class="separator:gaecb31acd8c2e58371f4cc5163f13ee3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga45d8160d9158c5e040db66bb79fc8f18"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#ga45d8160d9158c5e040db66bb79fc8f18">ASN1_IA5_STRING</a>&#160;&#160;&#160;0x16</td></tr>
<tr class="separator:ga45d8160d9158c5e040db66bb79fc8f18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga94a96a45489af8cb19d6dd3ee76eefb2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#ga94a96a45489af8cb19d6dd3ee76eefb2">ASN1_UTC_TIME</a>&#160;&#160;&#160;0x17</td></tr>
<tr class="separator:ga94a96a45489af8cb19d6dd3ee76eefb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab7a08388517b5d807fb6bc2ed0325b90"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#gab7a08388517b5d807fb6bc2ed0325b90">ASN1_GENERALIZED_TIME</a>&#160;&#160;&#160;0x18</td></tr>
<tr class="separator:gab7a08388517b5d807fb6bc2ed0325b90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7571a2e3383313e9a36cf168b707b4f9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#ga7571a2e3383313e9a36cf168b707b4f9">ASN1_UNIVERSAL_STRING</a>&#160;&#160;&#160;0x1C</td></tr>
<tr class="separator:ga7571a2e3383313e9a36cf168b707b4f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae17ad2492005596109a4179b6f22cc62"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#gae17ad2492005596109a4179b6f22cc62">ASN1_BMP_STRING</a>&#160;&#160;&#160;0x1E</td></tr>
<tr class="separator:gae17ad2492005596109a4179b6f22cc62"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad61fcc873df5268453d3064aa11ffbca"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#gad61fcc873df5268453d3064aa11ffbca">ASN1_PRIMITIVE</a>&#160;&#160;&#160;0x00</td></tr>
<tr class="separator:gad61fcc873df5268453d3064aa11ffbca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga799d7b17a9532e1dadc8355f04477e27"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#ga799d7b17a9532e1dadc8355f04477e27">ASN1_CONSTRUCTED</a>&#160;&#160;&#160;0x20</td></tr>
<tr class="separator:ga799d7b17a9532e1dadc8355f04477e27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab1f89bc6e469d46d5293f724d317d1d7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__asn1__module.html#gab1f89bc6e469d46d5293f724d317d1d7">ASN1_CONTEXT_SPECIFIC</a>&#160;&#160;&#160;0x80</td></tr>
<tr class="separator:gab1f89bc6e469d46d5293f724d317d1d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Functions to parse ASN.1 data structures</h2></td></tr>
<tr class="memitem:a494fbc8ee39d97c8118aa420070db04f"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct__asn1__buf.html">_asn1_buf</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#a494fbc8ee39d97c8118aa420070db04f">asn1_buf</a></td></tr>
<tr class="memdesc:a494fbc8ee39d97c8118aa420070db04f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type-length-value structure that allows for ASN1 using DER.  <a href="#a494fbc8ee39d97c8118aa420070db04f">More...</a><br/></td></tr>
<tr class="separator:a494fbc8ee39d97c8118aa420070db04f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a087073ffe1db16e6e3fce23266513e6a"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct__asn1__bitstring.html">_asn1_bitstring</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#a087073ffe1db16e6e3fce23266513e6a">asn1_bitstring</a></td></tr>
<tr class="memdesc:a087073ffe1db16e6e3fce23266513e6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Container for ASN1 bit strings.  <a href="#a087073ffe1db16e6e3fce23266513e6a">More...</a><br/></td></tr>
<tr class="separator:a087073ffe1db16e6e3fce23266513e6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e1b233f294affd535a3102d7eb893e9"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct__asn1__sequence.html">_asn1_sequence</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#a6e1b233f294affd535a3102d7eb893e9">asn1_sequence</a></td></tr>
<tr class="memdesc:a6e1b233f294affd535a3102d7eb893e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Container for a sequence of ASN.1 items.  <a href="#a6e1b233f294affd535a3102d7eb893e9">More...</a><br/></td></tr>
<tr class="separator:a6e1b233f294affd535a3102d7eb893e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f35635976d2b59cc08444099ebcbd6a"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct__asn1__named__data.html">_asn1_named_data</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#a4f35635976d2b59cc08444099ebcbd6a">asn1_named_data</a></td></tr>
<tr class="memdesc:a4f35635976d2b59cc08444099ebcbd6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Container for a sequence or list of 'named' ASN.1 data items.  <a href="#a4f35635976d2b59cc08444099ebcbd6a">More...</a><br/></td></tr>
<tr class="separator:a4f35635976d2b59cc08444099ebcbd6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acebb8b02851a2f8dfa866d1b8e7f2ebd"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#acebb8b02851a2f8dfa866d1b8e7f2ebd">asn1_get_len</a> (unsigned char **p, const unsigned char *end, size_t *len)</td></tr>
<tr class="memdesc:acebb8b02851a2f8dfa866d1b8e7f2ebd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the length of an ASN.1 element.  <a href="#acebb8b02851a2f8dfa866d1b8e7f2ebd">More...</a><br/></td></tr>
<tr class="separator:acebb8b02851a2f8dfa866d1b8e7f2ebd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7d10ad8e91ae5cb4a78f7d7dc1a8ac6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#af7d10ad8e91ae5cb4a78f7d7dc1a8ac6">asn1_get_tag</a> (unsigned char **p, const unsigned char *end, size_t *len, int tag)</td></tr>
<tr class="memdesc:af7d10ad8e91ae5cb4a78f7d7dc1a8ac6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the tag and length of the tag.  <a href="#af7d10ad8e91ae5cb4a78f7d7dc1a8ac6">More...</a><br/></td></tr>
<tr class="separator:af7d10ad8e91ae5cb4a78f7d7dc1a8ac6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a099cac848d0bbdc60dd440153e794a1c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#a099cac848d0bbdc60dd440153e794a1c">asn1_get_bool</a> (unsigned char **p, const unsigned char *end, int *val)</td></tr>
<tr class="memdesc:a099cac848d0bbdc60dd440153e794a1c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve a boolean ASN.1 tag and its value.  <a href="#a099cac848d0bbdc60dd440153e794a1c">More...</a><br/></td></tr>
<tr class="separator:a099cac848d0bbdc60dd440153e794a1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1ec6c9510754709ffbe5ed9b746d009"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#ac1ec6c9510754709ffbe5ed9b746d009">asn1_get_int</a> (unsigned char **p, const unsigned char *end, int *val)</td></tr>
<tr class="memdesc:ac1ec6c9510754709ffbe5ed9b746d009"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve an integer ASN.1 tag and its value.  <a href="#ac1ec6c9510754709ffbe5ed9b746d009">More...</a><br/></td></tr>
<tr class="separator:ac1ec6c9510754709ffbe5ed9b746d009"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cb7d558ab80268d8a01ad05c2a7804a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#a8cb7d558ab80268d8a01ad05c2a7804a">asn1_get_bitstring</a> (unsigned char **p, const unsigned char *end, <a class="el" href="asn1_8h.html#a087073ffe1db16e6e3fce23266513e6a">asn1_bitstring</a> *bs)</td></tr>
<tr class="memdesc:a8cb7d558ab80268d8a01ad05c2a7804a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve a bitstring ASN.1 tag and its value.  <a href="#a8cb7d558ab80268d8a01ad05c2a7804a">More...</a><br/></td></tr>
<tr class="separator:a8cb7d558ab80268d8a01ad05c2a7804a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4eea0ac1585372e535c06e91a16f7126"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#a4eea0ac1585372e535c06e91a16f7126">asn1_get_bitstring_null</a> (unsigned char **p, const unsigned char *end, size_t *len)</td></tr>
<tr class="memdesc:a4eea0ac1585372e535c06e91a16f7126"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve a bitstring ASN.1 tag without unused bits and its value.  <a href="#a4eea0ac1585372e535c06e91a16f7126">More...</a><br/></td></tr>
<tr class="separator:a4eea0ac1585372e535c06e91a16f7126"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff5e02b8136105bacb05e350678bad0d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#aff5e02b8136105bacb05e350678bad0d">asn1_get_sequence_of</a> (unsigned char **p, const unsigned char *end, <a class="el" href="asn1_8h.html#a6e1b233f294affd535a3102d7eb893e9">asn1_sequence</a> *cur, int tag)</td></tr>
<tr class="memdesc:aff5e02b8136105bacb05e350678bad0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parses and splits an ASN.1 "SEQUENCE OF &lt;tag&gt;" Updated the pointer to immediately behind the full sequence tag.  <a href="#aff5e02b8136105bacb05e350678bad0d">More...</a><br/></td></tr>
<tr class="separator:aff5e02b8136105bacb05e350678bad0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9241caf4492b2405e48db346205af62f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#a9241caf4492b2405e48db346205af62f">asn1_get_mpi</a> (unsigned char **p, const unsigned char *end, <a class="el" href="structmpi.html">mpi</a> *X)</td></tr>
<tr class="memdesc:a9241caf4492b2405e48db346205af62f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve a MPI value from an integer ASN.1 tag.  <a href="#a9241caf4492b2405e48db346205af62f">More...</a><br/></td></tr>
<tr class="separator:a9241caf4492b2405e48db346205af62f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a463ec10966603ad423eefdb3dbcf5993"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#a463ec10966603ad423eefdb3dbcf5993">asn1_get_alg</a> (unsigned char **p, const unsigned char *end, <a class="el" href="asn1_8h.html#a494fbc8ee39d97c8118aa420070db04f">asn1_buf</a> *alg, <a class="el" href="asn1_8h.html#a494fbc8ee39d97c8118aa420070db04f">asn1_buf</a> *params)</td></tr>
<tr class="memdesc:a463ec10966603ad423eefdb3dbcf5993"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve an AlgorithmIdentifier ASN.1 sequence.  <a href="#a463ec10966603ad423eefdb3dbcf5993">More...</a><br/></td></tr>
<tr class="separator:a463ec10966603ad423eefdb3dbcf5993"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa967e6a2efe79187ef13f3177493d914"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#aa967e6a2efe79187ef13f3177493d914">asn1_get_alg_null</a> (unsigned char **p, const unsigned char *end, <a class="el" href="asn1_8h.html#a494fbc8ee39d97c8118aa420070db04f">asn1_buf</a> *alg)</td></tr>
<tr class="memdesc:aa967e6a2efe79187ef13f3177493d914"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve an AlgorithmIdentifier ASN.1 sequence with NULL or no params.  <a href="#aa967e6a2efe79187ef13f3177493d914">More...</a><br/></td></tr>
<tr class="separator:aa967e6a2efe79187ef13f3177493d914"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee053384989de6d77aa9c70450895427"><td class="memItemLeft" align="right" valign="top"><a class="el" href="asn1_8h.html#a4f35635976d2b59cc08444099ebcbd6a">asn1_named_data</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#aee053384989de6d77aa9c70450895427">asn1_find_named_data</a> (<a class="el" href="asn1_8h.html#a4f35635976d2b59cc08444099ebcbd6a">asn1_named_data</a> *list, const char *oid, size_t len)</td></tr>
<tr class="memdesc:aee053384989de6d77aa9c70450895427"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find a specific named_data entry in a sequence or list based on the OID.  <a href="#aee053384989de6d77aa9c70450895427">More...</a><br/></td></tr>
<tr class="separator:aee053384989de6d77aa9c70450895427"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55085059941372208a74ce48ee904073"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#a55085059941372208a74ce48ee904073">asn1_free_named_data</a> (<a class="el" href="asn1_8h.html#a4f35635976d2b59cc08444099ebcbd6a">asn1_named_data</a> *entry)</td></tr>
<tr class="memdesc:a55085059941372208a74ce48ee904073"><td class="mdescLeft">&#160;</td><td class="mdescRight">Free a asn1_named_data entry.  <a href="#a55085059941372208a74ce48ee904073">More...</a><br/></td></tr>
<tr class="separator:a55085059941372208a74ce48ee904073"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acefe3b9de9d702dc1f5cf64e48283e37"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="asn1_8h.html#acefe3b9de9d702dc1f5cf64e48283e37">asn1_free_named_data_list</a> (<a class="el" href="asn1_8h.html#a4f35635976d2b59cc08444099ebcbd6a">asn1_named_data</a> **head)</td></tr>
<tr class="memdesc:acefe3b9de9d702dc1f5cf64e48283e37"><td class="mdescLeft">&#160;</td><td class="mdescRight">Free all entries in a asn1_named_data list Head will be set to NULL.  <a href="#acefe3b9de9d702dc1f5cf64e48283e37">More...</a><br/></td></tr>
<tr class="separator:acefe3b9de9d702dc1f5cf64e48283e37"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Generic ASN.1 parsing. </p>
<p>Copyright (C) 2006-2013, Brainspark B.V.</p>
<p>This file is part of PolarSSL (<a href="http://www.polarssl.org">http://www.polarssl.org</a>) Lead Maintainer: Paul Bakker &lt;polarssl_maintainer at polarssl.org&gt;</p>
<p>All rights reserved.</p>
<p>This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.</p>
<p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.</p>
<p>You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. </p>

<p>Definition in file <a class="el" href="asn1_8h_source.html">asn1.h</a>.</p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a068fd58b6b0011021a516695ff14a41e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OID_CMP</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">oid_str, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">oid_buf&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">( ( <a class="code" href="asn1_8h.html#a79358b9b589d5cf11497945672ea7fd7">OID_SIZE</a>(oid_str) == (oid_buf)-&gt;len ) &amp;&amp;                \</div>
<div class="line">          memcmp( (oid_str), (oid_buf)-&gt;p, (oid_buf)-&gt;len) == 0 )</div>
<div class="ttc" id="asn1_8h_html_a79358b9b589d5cf11497945672ea7fd7"><div class="ttname"><a href="asn1_8h.html#a79358b9b589d5cf11497945672ea7fd7">OID_SIZE</a></div><div class="ttdeci">#define OID_SIZE(x)</div><div class="ttdoc">Returns the size of the binary string, without the trailing \0. </div><div class="ttdef"><b>Definition:</b> <a href="asn1_8h_source.html#l00098">asn1.h:98</a></div></div>
</div><!-- fragment -->
<p>Compares an asn1_buf structure to a reference OID. </p>
<p>Only works for 'defined' oid_str values (OID_HMAC_SHA1), you cannot use a 'unsigned char *oid' here!</p>
<p>Warning: returns true when the OIDs are equal (unlike memcmp)! </p>

<p>Definition at line <a class="el" href="asn1_8h_source.html#l00108">108</a> of file <a class="el" href="asn1_8h_source.html">asn1.h</a>.</p>

</div>
</div>
<a class="anchor" id="a79358b9b589d5cf11497945672ea7fd7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OID_SIZE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">x</td><td>)</td>
          <td>&#160;&#160;&#160;(sizeof(x) - 1)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns the size of the binary string, without the trailing \0. </p>

<p>Definition at line <a class="el" href="asn1_8h_source.html#l00098">98</a> of file <a class="el" href="asn1_8h_source.html">asn1.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="a087073ffe1db16e6e3fce23266513e6a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="struct__asn1__bitstring.html">_asn1_bitstring</a>
 <a class="el" href="asn1_8h.html#a087073ffe1db16e6e3fce23266513e6a">asn1_bitstring</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Container for ASN1 bit strings. </p>

</div>
</div>
<a class="anchor" id="a494fbc8ee39d97c8118aa420070db04f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="struct__asn1__buf.html">_asn1_buf</a>
 <a class="el" href="asn1_8h.html#a494fbc8ee39d97c8118aa420070db04f">asn1_buf</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Type-length-value structure that allows for ASN1 using DER. </p>

</div>
</div>
<a class="anchor" id="a4f35635976d2b59cc08444099ebcbd6a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="struct__asn1__named__data.html">_asn1_named_data</a>
 <a class="el" href="asn1_8h.html#a4f35635976d2b59cc08444099ebcbd6a">asn1_named_data</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Container for a sequence or list of 'named' ASN.1 data items. </p>

</div>
</div>
<a class="anchor" id="a6e1b233f294affd535a3102d7eb893e9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="struct__asn1__sequence.html">_asn1_sequence</a>
 <a class="el" href="asn1_8h.html#a6e1b233f294affd535a3102d7eb893e9">asn1_sequence</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Container for a sequence of ASN.1 items. </p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="aee053384989de6d77aa9c70450895427"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="asn1_8h.html#a4f35635976d2b59cc08444099ebcbd6a">asn1_named_data</a>* asn1_find_named_data </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="asn1_8h.html#a4f35635976d2b59cc08444099ebcbd6a">asn1_named_data</a> *&#160;</td>
          <td class="paramname"><em>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>oid</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Find a specific named_data entry in a sequence or list based on the OID. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">list</td><td>The list to seek through </td></tr>
    <tr><td class="paramname">oid</td><td>The OID to look for </td></tr>
    <tr><td class="paramname">len</td><td>Size of the OID</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>NULL if not found, or a pointer to the existing entry. </dd></dl>

</div>
</div>
<a class="anchor" id="a55085059941372208a74ce48ee904073"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void asn1_free_named_data </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="asn1_8h.html#a4f35635976d2b59cc08444099ebcbd6a">asn1_named_data</a> *&#160;</td>
          <td class="paramname"><em>entry</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Free a asn1_named_data entry. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">entry</td><td>The named data entry to free </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="acefe3b9de9d702dc1f5cf64e48283e37"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void asn1_free_named_data_list </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="asn1_8h.html#a4f35635976d2b59cc08444099ebcbd6a">asn1_named_data</a> **&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Free all entries in a asn1_named_data list Head will be set to NULL. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">head</td><td>Pointer to the head of the list of named data entries to free </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a463ec10966603ad423eefdb3dbcf5993"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int asn1_get_alg </td>
          <td>(</td>
          <td class="paramtype">unsigned char **&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>end</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="asn1_8h.html#a494fbc8ee39d97c8118aa420070db04f">asn1_buf</a> *&#160;</td>
          <td class="paramname"><em>alg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="asn1_8h.html#a494fbc8ee39d97c8118aa420070db04f">asn1_buf</a> *&#160;</td>
          <td class="paramname"><em>params</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve an AlgorithmIdentifier ASN.1 sequence. </p>
<pre class="fragment">         Updates the pointer to immediately behind the full
         AlgorithmIdentifier.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">p</td><td>The position in the ASN.1 data </td></tr>
    <tr><td class="paramname">end</td><td>End of data </td></tr>
    <tr><td class="paramname">alg</td><td>The buffer to receive the OID </td></tr>
    <tr><td class="paramname">params</td><td>The buffer to receive the params (if any)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful or a specific ASN.1 or MPI error code. </dd></dl>

</div>
</div>
<a class="anchor" id="aa967e6a2efe79187ef13f3177493d914"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int asn1_get_alg_null </td>
          <td>(</td>
          <td class="paramtype">unsigned char **&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>end</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="asn1_8h.html#a494fbc8ee39d97c8118aa420070db04f">asn1_buf</a> *&#160;</td>
          <td class="paramname"><em>alg</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve an AlgorithmIdentifier ASN.1 sequence with NULL or no params. </p>
<pre class="fragment">         Updates the pointer to immediately behind the full
         AlgorithmIdentifier.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">p</td><td>The position in the ASN.1 data </td></tr>
    <tr><td class="paramname">end</td><td>End of data </td></tr>
    <tr><td class="paramname">alg</td><td>The buffer to receive the OID</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful or a specific ASN.1 or MPI error code. </dd></dl>

</div>
</div>
<a class="anchor" id="a8cb7d558ab80268d8a01ad05c2a7804a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int asn1_get_bitstring </td>
          <td>(</td>
          <td class="paramtype">unsigned char **&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>end</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="asn1_8h.html#a087073ffe1db16e6e3fce23266513e6a">asn1_bitstring</a> *&#160;</td>
          <td class="paramname"><em>bs</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve a bitstring ASN.1 tag and its value. </p>
<pre class="fragment">         Updates the pointer to immediately behind the full tag.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">p</td><td>The position in the ASN.1 data </td></tr>
    <tr><td class="paramname">end</td><td>End of data </td></tr>
    <tr><td class="paramname">bs</td><td>The variable that will receive the value</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful or a specific ASN.1 error code. </dd></dl>

</div>
</div>
<a class="anchor" id="a4eea0ac1585372e535c06e91a16f7126"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int asn1_get_bitstring_null </td>
          <td>(</td>
          <td class="paramtype">unsigned char **&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>end</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve a bitstring ASN.1 tag without unused bits and its value. </p>
<pre class="fragment">         Updates the pointer to the beginning of the bit/octet string.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">p</td><td>The position in the ASN.1 data </td></tr>
    <tr><td class="paramname">end</td><td>End of data </td></tr>
    <tr><td class="paramname">len</td><td>Length of the actual bit/octect string in bytes</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful or a specific ASN.1 error code. </dd></dl>

</div>
</div>
<a class="anchor" id="a099cac848d0bbdc60dd440153e794a1c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int asn1_get_bool </td>
          <td>(</td>
          <td class="paramtype">unsigned char **&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>end</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve a boolean ASN.1 tag and its value. </p>
<pre class="fragment">         Updates the pointer to immediately behind the full tag.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">p</td><td>The position in the ASN.1 data </td></tr>
    <tr><td class="paramname">end</td><td>End of data </td></tr>
    <tr><td class="paramname">val</td><td>The variable that will receive the value</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful or a specific ASN.1 error code. </dd></dl>

</div>
</div>
<a class="anchor" id="ac1ec6c9510754709ffbe5ed9b746d009"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int asn1_get_int </td>
          <td>(</td>
          <td class="paramtype">unsigned char **&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>end</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve an integer ASN.1 tag and its value. </p>
<pre class="fragment">         Updates the pointer to immediately behind the full tag.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">p</td><td>The position in the ASN.1 data </td></tr>
    <tr><td class="paramname">end</td><td>End of data </td></tr>
    <tr><td class="paramname">val</td><td>The variable that will receive the value</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful or a specific ASN.1 error code. </dd></dl>

</div>
</div>
<a class="anchor" id="acebb8b02851a2f8dfa866d1b8e7f2ebd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int asn1_get_len </td>
          <td>(</td>
          <td class="paramtype">unsigned char **&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>end</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the length of an ASN.1 element. </p>
<pre class="fragment">         Updates the pointer to immediately behind the length.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">p</td><td>The position in the ASN.1 data </td></tr>
    <tr><td class="paramname">end</td><td>End of data </td></tr>
    <tr><td class="paramname">len</td><td>The variable that will receive the value</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful, POLARSSL_ERR_ASN1_OUT_OF_DATA on reaching end of data, POLARSSL_ERR_ASN1_INVALID_LENGTH if length is unparseable. </dd></dl>

</div>
</div>
<a class="anchor" id="a9241caf4492b2405e48db346205af62f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int asn1_get_mpi </td>
          <td>(</td>
          <td class="paramtype">unsigned char **&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>end</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmpi.html">mpi</a> *&#160;</td>
          <td class="paramname"><em>X</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve a MPI value from an integer ASN.1 tag. </p>
<pre class="fragment">         Updates the pointer to immediately behind the full tag.
</pre><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">p</td><td>The position in the ASN.1 data </td></tr>
    <tr><td class="paramname">end</td><td>End of data </td></tr>
    <tr><td class="paramname">X</td><td>The MPI that will receive the value</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful or a specific ASN.1 or MPI error code. </dd></dl>

</div>
</div>
<a class="anchor" id="aff5e02b8136105bacb05e350678bad0d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int asn1_get_sequence_of </td>
          <td>(</td>
          <td class="paramtype">unsigned char **&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>end</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="asn1_8h.html#a6e1b233f294affd535a3102d7eb893e9">asn1_sequence</a> *&#160;</td>
          <td class="paramname"><em>cur</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>tag</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Parses and splits an ASN.1 "SEQUENCE OF &lt;tag&gt;" Updated the pointer to immediately behind the full sequence tag. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">p</td><td>The position in the ASN.1 data </td></tr>
    <tr><td class="paramname">end</td><td>End of data </td></tr>
    <tr><td class="paramname">cur</td><td>First variable in the chain to fill </td></tr>
    <tr><td class="paramname">tag</td><td>Type of sequence</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful or a specific ASN.1 error code. </dd></dl>

</div>
</div>
<a class="anchor" id="af7d10ad8e91ae5cb4a78f7d7dc1a8ac6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int asn1_get_tag </td>
          <td>(</td>
          <td class="paramtype">unsigned char **&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&#160;</td>
          <td class="paramname"><em>end</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>tag</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the tag and length of the tag. </p>
<p>Check for the requested tag. Updates the pointer to immediately behind the tag and length.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">p</td><td>The position in the ASN.1 data </td></tr>
    <tr><td class="paramname">end</td><td>End of data </td></tr>
    <tr><td class="paramname">len</td><td>The variable that will receive the length </td></tr>
    <tr><td class="paramname">tag</td><td>The expected tag</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful, POLARSSL_ERR_ASN1_UNEXPECTED_TAG if tag did not match requested tag, or another specific ASN.1 error code. </dd></dl>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jul 31 2014 11:35:55 for PolarSSL v1.3.8 by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>