Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 550bbe86d83a7870fdddc73c68e5d2b2 > files > 441

libunbound-devel-1.3.4-1mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>unbound: validator/val_utils.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="dir_d2a455e92b602458a2b0ed9b207bdda1.html">validator</a>
  </div>
</div>
<div class="contents">
<h1>val_utils.h File Reference</h1>This file contains helper functions for the validator module.  
<a href="#_details">More...</a>
<p>
<code>#include &quot;<a class="el" href="packed__rrset_8h.html">util/data/packed_rrset.h</a>&quot;</code><br>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__utils_8h.html#3173455a485d600682697796c0937ac9">val_classification</a> { <br>
&nbsp;&nbsp;<a class="el" href="val__utils_8h.html#3173455a485d600682697796c0937ac9361f8c612b451855d0d332842af92bb8">VAL_CLASS_UNTYPED</a> =  0, 
<a class="el" href="val__utils_8h.html#3173455a485d600682697796c0937ac945ed8ca727482eda4ad26b1cd2cf8d13">VAL_CLASS_UNKNOWN</a>, 
<a class="el" href="val__utils_8h.html#3173455a485d600682697796c0937ac950670f1e4a0f75bca1f14cb06979d183">VAL_CLASS_POSITIVE</a>, 
<a class="el" href="val__utils_8h.html#3173455a485d600682697796c0937ac97bd8f3478ff207b9ea55a151555921c8">VAL_CLASS_CNAME</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="val__utils_8h.html#3173455a485d600682697796c0937ac9d964ead6d79652cb1c4b06d6fc787160">VAL_CLASS_NODATA</a>, 
<a class="el" href="val__utils_8h.html#3173455a485d600682697796c0937ac97e2fecbdac2e8cff325f46ec0800cef1">VAL_CLASS_NAMEERROR</a>, 
<a class="el" href="val__utils_8h.html#3173455a485d600682697796c0937ac999b5b56199781797c3a7ef3e5eac07b9">VAL_CLASS_CNAMENOANSWER</a>, 
<a class="el" href="val__utils_8h.html#3173455a485d600682697796c0937ac9f507541ee99de562e477af2a3a9aab78">VAL_CLASS_REFERRAL</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="val__utils_8h.html#3173455a485d600682697796c0937ac9c59b1ea52aea33ca817e6a5e4e649a39">VAL_CLASS_ANY</a>
<br>
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Response classifications for the validator.  <a href="val__utils_8h.html#3173455a485d600682697796c0937ac9">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum <a class="el" href="val__utils_8h.html#3173455a485d600682697796c0937ac9">val_classification</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__utils_8h.html#e243fc5c64fa6e421dad8ce9c7066c26">val_classify_response</a> (uint16_t query_flags, struct <a class="el" href="structquery__info.html">query_info</a> *origqinf, struct <a class="el" href="structquery__info.html">query_info</a> *qinf, struct <a class="el" href="structreply__info.html">reply_info</a> *rep, size_t skip)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Given a response, classify ANSWER responses into a subtype.  <a href="#e243fc5c64fa6e421dad8ce9c7066c26"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__utils_8h.html#09eb89c8d153f942c6a3f569fb64850a">val_find_signer</a> (enum <a class="el" href="val__utils_8h.html#3173455a485d600682697796c0937ac9">val_classification</a> subtype, struct <a class="el" href="structquery__info.html">query_info</a> *qinf, struct <a class="el" href="structreply__info.html">reply_info</a> *rep, size_t cname_skip, uint8_t **signer_name, size_t *signer_len)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Given a response, determine the name of the "signer".  <a href="#09eb89c8d153f942c6a3f569fb64850a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum <a class="el" href="packed__rrset_8h.html#ecbbb9607758922722abc9a49d1097bb">sec_status</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__utils_8h.html#e3a9af752281604109bb4eb513ac5fea">val_verify_rrset</a> (struct <a class="el" href="structmodule__env.html">module_env</a> *env, struct <a class="el" href="structval__env.html">val_env</a> *ve, struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *rrset, struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *keys)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Verify RRset with keys.  <a href="#e3a9af752281604109bb4eb513ac5fea"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum <a class="el" href="packed__rrset_8h.html#ecbbb9607758922722abc9a49d1097bb">sec_status</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__utils_8h.html#5ce071a196b43b2a81601d6206ac75a1">val_verify_rrset_entry</a> (struct <a class="el" href="structmodule__env.html">module_env</a> *env, struct <a class="el" href="structval__env.html">val_env</a> *ve, struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *rrset, struct <a class="el" href="structkey__entry__key.html">key_entry_key</a> *kkey)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Verify RRset with keys from a keyset.  <a href="#5ce071a196b43b2a81601d6206ac75a1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structkey__entry__key.html">key_entry_key</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__utils_8h.html#cc1a046b5d65931145582f7fc511d203">val_verify_new_DNSKEYs</a> (struct <a class="el" href="structregional.html">regional</a> *region, struct <a class="el" href="structmodule__env.html">module_env</a> *env, struct <a class="el" href="structval__env.html">val_env</a> *ve, struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *dnskey_rrset, struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *ds_rrset)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Verify new DNSKEYs with DS rrset.  <a href="#cc1a046b5d65931145582f7fc511d203"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__utils_8h.html#25d47f6b53be436c69937769e1000de4">val_dsset_isusable</a> (struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *ds_rrset)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determine if DS rrset is usable for validator or not.  <a href="#25d47f6b53be436c69937769e1000de4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__utils_8h.html#f23f5367f3bd7a73f3270800c0e4910b">val_rrset_wildcard</a> (struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *rrset, uint8_t **wc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determine by looking at a signed RRset whether or not the RRset name was the result of a wildcard expansion.  <a href="#f23f5367f3bd7a73f3270800c0e4910b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__utils_8h.html#71758a78f9a28fc2ec5fafa5a02c9a90">val_chase_cname</a> (struct <a class="el" href="structquery__info.html">query_info</a> *qchase, struct <a class="el" href="structreply__info.html">reply_info</a> *rep, size_t *cname_skip)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Chase the cname to the next query name.  <a href="#71758a78f9a28fc2ec5fafa5a02c9a90"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__utils_8h.html#01dd502bcc396523b54f3b5ff5576f80">val_fill_reply</a> (struct <a class="el" href="structreply__info.html">reply_info</a> *chase, struct <a class="el" href="structreply__info.html">reply_info</a> *orig, size_t cname_skip, uint8_t *name, size_t len, uint8_t *signer)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Fill up the chased reply with the content from the original reply; as pointers to those rrsets.  <a href="#01dd502bcc396523b54f3b5ff5576f80"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__utils_8h.html#66e97c251d71b5ef7a1812032df5c419">val_check_nonsecure</a> (struct <a class="el" href="structval__env.html">val_env</a> *ve, struct <a class="el" href="structreply__info.html">reply_info</a> *rep)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove all unsigned or non-secure status rrsets from NS and AR sections.  <a href="#66e97c251d71b5ef7a1812032df5c419"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__utils_8h.html#3ab8f2f477f3bce43b384e3a298a50f0">val_mark_indeterminate</a> (struct <a class="el" href="structreply__info.html">reply_info</a> *rep, struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors, struct <a class="el" href="structrrset__cache.html">rrset_cache</a> *r, struct <a class="el" href="structmodule__env.html">module_env</a> *env)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mark all unchecked rrset entries not below a trust anchor as indeterminate.  <a href="#3ab8f2f477f3bce43b384e3a298a50f0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__utils_8h.html#cde58bdf09a7c92b8ade92e50b5d4ea7">val_mark_insecure</a> (struct <a class="el" href="structreply__info.html">reply_info</a> *rep, uint8_t *kname, struct <a class="el" href="structrrset__cache.html">rrset_cache</a> *r, struct <a class="el" href="structmodule__env.html">module_env</a> *env)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mark all unchecked rrset entries below a NULL key <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> as insecure.  <a href="#cde58bdf09a7c92b8ade92e50b5d4ea7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__utils_8h.html#66c26308b6b8b42a6f80078c84f283ab">val_next_unchecked</a> (struct <a class="el" href="structreply__info.html">reply_info</a> *rep, size_t skip)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find next unchecked rrset position, return it for skip.  <a href="#66c26308b6b8b42a6f80078c84f283ab"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__utils_8h.html#7be2d30a0d46ad988f4d78a2998f608a">val_find_rrset_signer</a> (struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *rrset, uint8_t **sname, size_t *slen)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find the signer name for an RRset.  <a href="#7be2d30a0d46ad988f4d78a2998f608a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__utils_8h.html#e53ed1827615db66911543426934df7c">val_classification_to_string</a> (enum <a class="el" href="val__utils_8h.html#3173455a485d600682697796c0937ac9">val_classification</a> subtype)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get string to denote the classification result.  <a href="#e53ed1827615db66911543426934df7c"></a><br></td></tr>
</table>
<hr><h2>Detailed Description</h2>
This file contains helper functions for the validator module. 
<p>
<hr><h2>Enumeration Type Documentation</h2>
<a class="anchor" name="3173455a485d600682697796c0937ac9"></a><!-- doxytag: member="val_utils.h::val_classification" ref="3173455a485d600682697796c0937ac9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="val__utils_8h.html#3173455a485d600682697796c0937ac9">val_classification</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Response classifications for the validator. 
<p>
The different types of proofs. <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="3173455a485d600682697796c0937ac9361f8c612b451855d0d332842af92bb8"></a><!-- doxytag: member="VAL_CLASS_UNTYPED" ref="3173455a485d600682697796c0937ac9361f8c612b451855d0d332842af92bb8" args="" -->VAL_CLASS_UNTYPED</em>&nbsp;</td><td>
Not subtyped yet. 
<p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="3173455a485d600682697796c0937ac945ed8ca727482eda4ad26b1cd2cf8d13"></a><!-- doxytag: member="VAL_CLASS_UNKNOWN" ref="3173455a485d600682697796c0937ac945ed8ca727482eda4ad26b1cd2cf8d13" args="" -->VAL_CLASS_UNKNOWN</em>&nbsp;</td><td>
Not a recognized subtype. 
<p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="3173455a485d600682697796c0937ac950670f1e4a0f75bca1f14cb06979d183"></a><!-- doxytag: member="VAL_CLASS_POSITIVE" ref="3173455a485d600682697796c0937ac950670f1e4a0f75bca1f14cb06979d183" args="" -->VAL_CLASS_POSITIVE</em>&nbsp;</td><td>
A positive, direct, response. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="3173455a485d600682697796c0937ac97bd8f3478ff207b9ea55a151555921c8"></a><!-- doxytag: member="VAL_CLASS_CNAME" ref="3173455a485d600682697796c0937ac97bd8f3478ff207b9ea55a151555921c8" args="" -->VAL_CLASS_CNAME</em>&nbsp;</td><td>
A positive response, with a CNAME/DNAME chain. 
<p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="3173455a485d600682697796c0937ac9d964ead6d79652cb1c4b06d6fc787160"></a><!-- doxytag: member="VAL_CLASS_NODATA" ref="3173455a485d600682697796c0937ac9d964ead6d79652cb1c4b06d6fc787160" args="" -->VAL_CLASS_NODATA</em>&nbsp;</td><td>
A NOERROR/NODATA response. 
<p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="3173455a485d600682697796c0937ac97e2fecbdac2e8cff325f46ec0800cef1"></a><!-- doxytag: member="VAL_CLASS_NAMEERROR" ref="3173455a485d600682697796c0937ac97e2fecbdac2e8cff325f46ec0800cef1" args="" -->VAL_CLASS_NAMEERROR</em>&nbsp;</td><td>
A NXDOMAIN response. 
<p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="3173455a485d600682697796c0937ac999b5b56199781797c3a7ef3e5eac07b9"></a><!-- doxytag: member="VAL_CLASS_CNAMENOANSWER" ref="3173455a485d600682697796c0937ac999b5b56199781797c3a7ef3e5eac07b9" args="" -->VAL_CLASS_CNAMENOANSWER</em>&nbsp;</td><td>
A CNAME/DNAME chain, and the offset is at the end of it, but there is no answer here, it can be NAMERROR or NODATA. 
<p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="3173455a485d600682697796c0937ac9f507541ee99de562e477af2a3a9aab78"></a><!-- doxytag: member="VAL_CLASS_REFERRAL" ref="3173455a485d600682697796c0937ac9f507541ee99de562e477af2a3a9aab78" args="" -->VAL_CLASS_REFERRAL</em>&nbsp;</td><td>
A referral, from cache with a nonRD query. 
<p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="3173455a485d600682697796c0937ac9c59b1ea52aea33ca817e6a5e4e649a39"></a><!-- doxytag: member="VAL_CLASS_ANY" ref="3173455a485d600682697796c0937ac9c59b1ea52aea33ca817e6a5e4e649a39" args="" -->VAL_CLASS_ANY</em>&nbsp;</td><td>
A response to a qtype=ANY query. 
<p>
</td></tr>
</table>
</dl>

</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="e243fc5c64fa6e421dad8ce9c7066c26"></a><!-- doxytag: member="val_utils.h::val_classify_response" ref="e243fc5c64fa6e421dad8ce9c7066c26" args="(uint16_t query_flags, struct query_info *origqinf, struct query_info *qinf, struct reply_info *rep, size_t skip)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="val__utils_8h.html#3173455a485d600682697796c0937ac9">val_classification</a> val_classify_response           </td>
          <td>(</td>
          <td class="paramtype">uint16_t&nbsp;</td>
          <td class="paramname"> <em>query_flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structquery__info.html">query_info</a> *&nbsp;</td>
          <td class="paramname"> <em>origqinf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structquery__info.html">query_info</a> *&nbsp;</td>
          <td class="paramname"> <em>qinf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structreply__info.html">reply_info</a> *&nbsp;</td>
          <td class="paramname"> <em>rep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>skip</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Given a response, classify ANSWER responses into a subtype. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>query_flags,:</em>&nbsp;</td><td>query flags for the original query. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>origqinf,:</em>&nbsp;</td><td>query info. The original query name. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>qinf,:</em>&nbsp;</td><td>query info. The chased query name. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rep,:</em>&nbsp;</td><td>response. The original response. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>skip,:</em>&nbsp;</td><td>offset into the original response answer section. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A subtype, all values possible except UNTYPED . Once CNAME type is returned you can increase skip. Then, another CNAME type, CNAME_NOANSWER or POSITIVE are possible. </dd></dl>

<p>References <a class="el" href="msgreply_8h_source.html#l00133">reply_info::an_numrrsets</a>, <a class="el" href="net__help_8h_source.html#l00062">BIT_RD</a>, <a class="el" href="packed__rrset_8h_source.html#l00064">packed_rrset_key::dname</a>, <a class="el" href="msgreply_8h_source.html#l00099">reply_info::flags</a>, <a class="el" href="net__help_8h_source.html#l00070">FLAGS_GET_RCODE</a>, <a class="el" href="log_8h_source.html#l00185">log_assert</a>, <a class="el" href="msgreply_8c_source.html#l00755">log_dns_msg()</a>, <a class="el" href="msgreply_8h_source.html#l00136">reply_info::ns_numrrsets</a>, <a class="el" href="msgreply_8h_source.html#l00064">query_info::qname</a>, <a class="el" href="msgreply_8h_source.html#l00068">query_info::qtype</a>, <a class="el" href="dname_8c_source.html#l00096">query_dname_compare()</a>, <a class="el" href="packed__rrset_8h_source.html#l00105">ub_packed_rrset_key::rk</a>, <a class="el" href="msgreply_8h_source.html#l00150">reply_info::rrsets</a>, <a class="el" href="packed__rrset_8h_source.html#l00075">packed_rrset_key::type</a>, <a class="el" href="val__utils_8h_source.html#l00077">VAL_CLASS_ANY</a>, <a class="el" href="val__utils_8h_source.html#l00066">VAL_CLASS_CNAME</a>, <a class="el" href="val__utils_8h_source.html#l00073">VAL_CLASS_CNAMENOANSWER</a>, <a class="el" href="val__utils_8h_source.html#l00070">VAL_CLASS_NAMEERROR</a>, <a class="el" href="val__utils_8h_source.html#l00068">VAL_CLASS_NODATA</a>, <a class="el" href="val__utils_8h_source.html#l00064">VAL_CLASS_POSITIVE</a>, <a class="el" href="val__utils_8h_source.html#l00075">VAL_CLASS_REFERRAL</a>, and <a class="el" href="val__utils_8h_source.html#l00062">VAL_CLASS_UNKNOWN</a>.</p>

<p>Referenced by <a class="el" href="validator_8c_source.html#l02151">ds_response_to_ke()</a>, <a class="el" href="validator_8c_source.html#l01720">processFinished()</a>, <a class="el" href="validator_8c_source.html#l01158">processInit()</a>, and <a class="el" href="validator_8c_source.html#l01442">processValidate()</a>.</p>

</div>
</div><p>
<a class="anchor" name="09eb89c8d153f942c6a3f569fb64850a"></a><!-- doxytag: member="val_utils.h::val_find_signer" ref="09eb89c8d153f942c6a3f569fb64850a" args="(enum val_classification subtype, struct query_info *qinf, struct reply_info *rep, size_t cname_skip, uint8_t **signer_name, size_t *signer_len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void val_find_signer           </td>
          <td>(</td>
          <td class="paramtype">enum <a class="el" href="val__utils_8h.html#3173455a485d600682697796c0937ac9">val_classification</a>&nbsp;</td>
          <td class="paramname"> <em>subtype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structquery__info.html">query_info</a> *&nbsp;</td>
          <td class="paramname"> <em>qinf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structreply__info.html">reply_info</a> *&nbsp;</td>
          <td class="paramname"> <em>rep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>cname_skip</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t **&nbsp;</td>
          <td class="paramname"> <em>signer_name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&nbsp;</td>
          <td class="paramname"> <em>signer_len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Given a response, determine the name of the "signer". 
<p>
This is primarily to determine if the response is, in fact, signed at all, and, if so, what is the name of the most pertinent keyset.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>subtype,:</em>&nbsp;</td><td>the type from classify. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>qinf,:</em>&nbsp;</td><td>query, the chased query name. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rep,:</em>&nbsp;</td><td>response to that, original response. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>cname_skip,:</em>&nbsp;</td><td>how many answer rrsets have been skipped due to CNAME chains being chased around. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>signer_name,:</em>&nbsp;</td><td>signer name, if the response is signed (even partially), or null if the response isn't signed. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>signer_len,:</em>&nbsp;</td><td>length of signer_name of 0 if signer_name is NULL. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="msgreply_8h_source.html#l00133">reply_info::an_numrrsets</a>, <a class="el" href="packed__rrset_8h_source.html#l00064">packed_rrset_key::dname</a>, <a class="el" href="msgreply_8h_source.html#l00136">reply_info::ns_numrrsets</a>, <a class="el" href="msgreply_8h_source.html#l00064">query_info::qname</a>, <a class="el" href="dname_8c_source.html#l00096">query_dname_compare()</a>, <a class="el" href="packed__rrset_8h_source.html#l00105">ub_packed_rrset_key::rk</a>, <a class="el" href="msgreply_8h_source.html#l00150">reply_info::rrsets</a>, <a class="el" href="packed__rrset_8h_source.html#l00075">packed_rrset_key::type</a>, <a class="el" href="val__utils_8h_source.html#l00077">VAL_CLASS_ANY</a>, <a class="el" href="val__utils_8h_source.html#l00066">VAL_CLASS_CNAME</a>, <a class="el" href="val__utils_8h_source.html#l00073">VAL_CLASS_CNAMENOANSWER</a>, <a class="el" href="val__utils_8h_source.html#l00070">VAL_CLASS_NAMEERROR</a>, <a class="el" href="val__utils_8h_source.html#l00068">VAL_CLASS_NODATA</a>, <a class="el" href="val__utils_8h_source.html#l00064">VAL_CLASS_POSITIVE</a>, <a class="el" href="val__utils_8h_source.html#l00075">VAL_CLASS_REFERRAL</a>, <a class="el" href="val__utils_8c_source.html#l00180">val_find_best_signer()</a>, <a class="el" href="val__utils_8c_source.html#l00154">val_find_rrset_signer()</a>, <a class="el" href="log_8h_source.html#l00056">VERB_QUERY</a>, and <a class="el" href="ldns-testpkts_8c.html#a557e5b23b2833d7c1ec0415a1bdd2b1">verbose()</a>.</p>

<p>Referenced by <a class="el" href="validator_8c_source.html#l01158">processInit()</a>.</p>

</div>
</div><p>
<a class="anchor" name="e3a9af752281604109bb4eb513ac5fea"></a><!-- doxytag: member="val_utils.h::val_verify_rrset" ref="e3a9af752281604109bb4eb513ac5fea" args="(struct module_env *env, struct val_env *ve, struct ub_packed_rrset_key *rrset, struct ub_packed_rrset_key *keys)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="packed__rrset_8h.html#ecbbb9607758922722abc9a49d1097bb">sec_status</a> val_verify_rrset           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmodule__env.html">module_env</a> *&nbsp;</td>
          <td class="paramname"> <em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structval__env.html">val_env</a> *&nbsp;</td>
          <td class="paramname"> <em>ve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *&nbsp;</td>
          <td class="paramname"> <em>rrset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *&nbsp;</td>
          <td class="paramname"> <em>keys</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Verify RRset with keys. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>env,:</em>&nbsp;</td><td>module environment (scratch buffer) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ve,:</em>&nbsp;</td><td>validator environment (verification settings) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rrset,:</em>&nbsp;</td><td>what to verify </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>keys,:</em>&nbsp;</td><td>dnskey rrset to verify with. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>security status of verification. </dd></dl>

<p>References <a class="el" href="validator_8h_source.html#l00118">val_env::bogus_lock</a>, <a class="el" href="validator_8h_source.html#l00083">val_env::bogus_ttl</a>, <a class="el" href="packed__rrset_8h_source.html#l00211">packed_rrset_data::count</a>, <a class="el" href="packed__rrset_8h_source.html#l00064">packed_rrset_key::dname</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00434">dnskeyset_verify_rrset()</a>, <a class="el" href="net__help_8c_source.html#l00265">log_nametypeclass()</a>, <a class="el" href="module_8h_source.html#l00198">module_env::now</a>, <a class="el" href="validator_8h_source.html#l00120">val_env::num_rrset_bogus</a>, <a class="el" href="regional_8c_source.html#l00090">regional_free_all()</a>, <a class="el" href="packed__rrset_8h_source.html#l00105">ub_packed_rrset_key::rk</a>, <a class="el" href="packed__rrset_8h_source.html#l00221">packed_rrset_data::rr_ttl</a>, <a class="el" href="module_8h_source.html#l00077">module_env::rrset_cache</a>, <a class="el" href="rrset_8c_source.html#l00349">rrset_check_sec_status()</a>, <a class="el" href="packed__rrset_8h_source.html#l00077">packed_rrset_key::rrset_class</a>, <a class="el" href="packed__rrset_8h_source.html#l00147">rrset_trust_validated</a>, <a class="el" href="rrset_8c_source.html#l00316">rrset_update_sec_status()</a>, <a class="el" href="packed__rrset_8h_source.html#l00213">packed_rrset_data::rrsig_count</a>, <a class="el" href="module_8h_source.html#l00186">module_env::scratch</a>, <a class="el" href="packed__rrset_8h_source.html#l00162">sec_status_bogus</a>, <a class="el" href="packed__rrset_8h_source.html#l00173">sec_status_secure</a>, <a class="el" href="packed__rrset_8c_source.html#l00247">sec_status_to_string()</a>, <a class="el" href="packed__rrset_8h_source.html#l00217">packed_rrset_data::security</a>, <a class="el" href="packed__rrset_8h_source.html#l00215">packed_rrset_data::trust</a>, <a class="el" href="packed__rrset_8h_source.html#l00209">packed_rrset_data::ttl</a>, <a class="el" href="packed__rrset_8h_source.html#l00075">packed_rrset_key::type</a>, <a class="el" href="log_8h_source.html#l00058">VERB_ALGO</a>, and <a class="el" href="ldns-testpkts_8c.html#a557e5b23b2833d7c1ec0415a1bdd2b1">verbose()</a>.</p>

<p>Referenced by <a class="el" href="validator_8c_source.html#l02045">primeResponseToKE()</a>, and <a class="el" href="val__utils_8c_source.html#l00359">val_verify_rrset_entry()</a>.</p>

</div>
</div><p>
<a class="anchor" name="5ce071a196b43b2a81601d6206ac75a1"></a><!-- doxytag: member="val_utils.h::val_verify_rrset_entry" ref="5ce071a196b43b2a81601d6206ac75a1" args="(struct module_env *env, struct val_env *ve, struct ub_packed_rrset_key *rrset, struct key_entry_key *kkey)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="packed__rrset_8h.html#ecbbb9607758922722abc9a49d1097bb">sec_status</a> val_verify_rrset_entry           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structmodule__env.html">module_env</a> *&nbsp;</td>
          <td class="paramname"> <em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structval__env.html">val_env</a> *&nbsp;</td>
          <td class="paramname"> <em>ve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *&nbsp;</td>
          <td class="paramname"> <em>rrset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structkey__entry__key.html">key_entry_key</a> *&nbsp;</td>
          <td class="paramname"> <em>kkey</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Verify RRset with keys from a keyset. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>env,:</em>&nbsp;</td><td>module environment (scratch buffer) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ve,:</em>&nbsp;</td><td>validator environment (verification settings) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rrset,:</em>&nbsp;</td><td>what to verify </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>kkey,:</em>&nbsp;</td><td>key_entry to verify with. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>security status of verification. </dd></dl>

<p>References <a class="el" href="lruhash_8h_source.html#l00222">lruhash_entry::data</a>, <a class="el" href="packed__rrset_8h_source.html#l00064">packed_rrset_key::dname</a>, <a class="el" href="packed__rrset_8h_source.html#l00068">packed_rrset_key::dname_len</a>, <a class="el" href="packed__rrset_8h_source.html#l00094">ub_packed_rrset_key::entry</a>, <a class="el" href="val__kentry_8h_source.html#l00057">key_entry_key::entry</a>, <a class="el" href="packed__rrset_8h_source.html#l00073">packed_rrset_key::flags</a>, <a class="el" href="lruhash_8h_source.html#l00220">lruhash_entry::key</a>, <a class="el" href="val__kentry_8h_source.html#l00063">key_entry_key::key_class</a>, <a class="el" href="val__kentry_8h_source.html#l00059">key_entry_key::name</a>, <a class="el" href="val__kentry_8h_source.html#l00061">key_entry_key::namelen</a>, <a class="el" href="packed__rrset_8h_source.html#l00105">ub_packed_rrset_key::rk</a>, <a class="el" href="packed__rrset_8h_source.html#l00077">packed_rrset_key::rrset_class</a>, <a class="el" href="val__kentry_8h_source.html#l00080">key_entry_data::rrset_data</a>, <a class="el" href="val__kentry_8h_source.html#l00082">key_entry_data::rrset_type</a>, <a class="el" href="packed__rrset_8h_source.html#l00075">packed_rrset_key::type</a>, and <a class="el" href="val__utils_8c_source.html#l00305">val_verify_rrset()</a>.</p>

<p>Referenced by <a class="el" href="validator_8c_source.html#l02151">ds_response_to_ke()</a>, <a class="el" href="val__nsec3_8c_source.html#l01242">list_is_secure()</a>, <a class="el" href="val__nsec_8c_source.html#l00174">val_nsec_prove_nodata_dsreply()</a>, and <a class="el" href="validator_8c_source.html#l00398">validate_msg_signatures()</a>.</p>

</div>
</div><p>
<a class="anchor" name="cc1a046b5d65931145582f7fc511d203"></a><!-- doxytag: member="val_utils.h::val_verify_new_DNSKEYs" ref="cc1a046b5d65931145582f7fc511d203" args="(struct regional *region, struct module_env *env, struct val_env *ve, struct ub_packed_rrset_key *dnskey_rrset, struct ub_packed_rrset_key *ds_rrset)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structkey__entry__key.html">key_entry_key</a>* val_verify_new_DNSKEYs           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structregional.html">regional</a> *&nbsp;</td>
          <td class="paramname"> <em>region</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structmodule__env.html">module_env</a> *&nbsp;</td>
          <td class="paramname"> <em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structval__env.html">val_env</a> *&nbsp;</td>
          <td class="paramname"> <em>ve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *&nbsp;</td>
          <td class="paramname"> <em>dnskey_rrset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *&nbsp;</td>
          <td class="paramname"> <em>ds_rrset</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Verify new DNSKEYs with DS rrset. 
<p>
The DS contains hash values that should match the DNSKEY keys. match the DS to a DNSKEY and verify the DNSKEY rrset with that key.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>region,:</em>&nbsp;</td><td>where to allocate key <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> result. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>env,:</em>&nbsp;</td><td>module environment (scratch buffer) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ve,:</em>&nbsp;</td><td>validator environment (verification settings) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dnskey_rrset,:</em>&nbsp;</td><td>DNSKEY rrset to verify </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ds_rrset,:</em>&nbsp;</td><td>DS rrset to verify with. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>a KeyEntry. This will either contain the now trusted dnskey_rrset, a "null" key <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> indicating that this DS rrset/DNSKEY pair indicate an secure end to the island of trust (i.e., unknown algorithms), or a "bad" KeyEntry if the dnskey rrset fails to verify. Note that the "null" response should generally only occur in a private algorithm scenario: normally this sort of thing is checked before fetching the matching DNSKEY rrset. </dd></dl>

<p>References <a class="el" href="packed__rrset_8h_source.html#l00064">packed_rrset_key::dname</a>, <a class="el" href="packed__rrset_8h_source.html#l00068">packed_rrset_key::dname_len</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00357">ds_digest_algo_is_supported()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00193">ds_get_digest_algo()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00386">ds_key_algo_is_supported()</a>, <a class="el" href="val__kentry_8c_source.html#l00262">key_entry_create_bad()</a>, <a class="el" href="val__kentry_8c_source.html#l00224">key_entry_create_null()</a>, <a class="el" href="val__kentry_8c_source.html#l00240">key_entry_create_rrset()</a>, <a class="el" href="module_8h_source.html#l00198">module_env::now</a>, <a class="el" href="dname_8c_source.html#l00096">query_dname_compare()</a>, <a class="el" href="packed__rrset_8h_source.html#l00105">ub_packed_rrset_key::rk</a>, <a class="el" href="packed__rrset_8h_source.html#l00077">packed_rrset_key::rrset_class</a>, <a class="el" href="val__utils_8c_source.html#l00286">rrset_get_count()</a>, <a class="el" href="val__utils_8c_source.html#l00296">rrset_get_ttl()</a>, <a class="el" href="packed__rrset_8h_source.html#l00173">sec_status_secure</a>, <a class="el" href="log_8h_source.html#l00058">VERB_ALGO</a>, <a class="el" href="log_8h_source.html#l00056">VERB_QUERY</a>, <a class="el" href="ldns-testpkts_8c.html#a557e5b23b2833d7c1ec0415a1bdd2b1">verbose()</a>, and <a class="el" href="val__utils_8c_source.html#l00379">verify_dnskeys_with_ds_rr()</a>.</p>

<p>Referenced by <a class="el" href="validator_8c_source.html#l02045">primeResponseToKE()</a>, and <a class="el" href="validator_8c_source.html#l02358">process_dnskey_response()</a>.</p>

</div>
</div><p>
<a class="anchor" name="25d47f6b53be436c69937769e1000de4"></a><!-- doxytag: member="val_utils.h::val_dsset_isusable" ref="25d47f6b53be436c69937769e1000de4" args="(struct ub_packed_rrset_key *ds_rrset)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int val_dsset_isusable           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *&nbsp;</td>
          <td class="paramname"> <em>ds_rrset</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Determine if DS rrset is usable for validator or not. 
<p>
Returns true if the algorithms for key and DShash are supported, for at least one RR.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ds_rrset,:</em>&nbsp;</td><td>the newly received DS rrset. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>true or false if not usable. </dd></dl>

<p>References <a class="el" href="val__sigcrypt_8c_source.html#l00357">ds_digest_algo_is_supported()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00386">ds_key_algo_is_supported()</a>, and <a class="el" href="val__utils_8c_source.html#l00286">rrset_get_count()</a>.</p>

<p>Referenced by <a class="el" href="validator_8c_source.html#l02151">ds_response_to_ke()</a>.</p>

</div>
</div><p>
<a class="anchor" name="f23f5367f3bd7a73f3270800c0e4910b"></a><!-- doxytag: member="val_utils.h::val_rrset_wildcard" ref="f23f5367f3bd7a73f3270800c0e4910b" args="(struct ub_packed_rrset_key *rrset, uint8_t **wc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int val_rrset_wildcard           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *&nbsp;</td>
          <td class="paramname"> <em>rrset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t **&nbsp;</td>
          <td class="paramname"> <em>wc</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Determine by looking at a signed RRset whether or not the RRset name was the result of a wildcard expansion. 
<p>
If so, return the name of the generating wildcard.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>rrset</em>&nbsp;</td><td>The rrset to chedck. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>wc,:</em>&nbsp;</td><td>the wildcard name, if the rrset was synthesized from a wildcard. unchanged if not. The wildcard name, without "*." in front, is returned. This is a pointer into the rrset owner name. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>false if the signatures are inconsistent in indicating the wildcard status; possible spoofing of wildcard response for other responses is being tried. We lost the status which rrsig was verified after the verification routine finished, so we simply check if the signatures are consistent; inserting a fake signature is a denial of service; but in that you could also have removed the real signature anyway. </dd></dl>

<p>References <a class="el" href="packed__rrset_8h_source.html#l00211">packed_rrset_data::count</a>, <a class="el" href="packed__rrset_8h_source.html#l00064">packed_rrset_key::dname</a>, <a class="el" href="dname_8c_source.html#l00369">dname_count_labels()</a>, <a class="el" href="packed__rrset_8h_source.html#l00068">packed_rrset_key::dname_len</a>, <a class="el" href="dname_8c_source.html#l00629">dname_remove_labels()</a>, <a class="el" href="packed__rrset_8h_source.html#l00105">ub_packed_rrset_key::rk</a>, <a class="el" href="packed__rrset_8h_source.html#l00213">packed_rrset_data::rrsig_count</a>, and <a class="el" href="val__utils_8c_source.html#l00508">rrsig_get_labcount()</a>.</p>

<p>Referenced by <a class="el" href="validator_8c_source.html#l00827">validate_any_response()</a>, <a class="el" href="validator_8c_source.html#l00937">validate_cname_response()</a>, and <a class="el" href="validator_8c_source.html#l00526">validate_positive_response()</a>.</p>

</div>
</div><p>
<a class="anchor" name="71758a78f9a28fc2ec5fafa5a02c9a90"></a><!-- doxytag: member="val_utils.h::val_chase_cname" ref="71758a78f9a28fc2ec5fafa5a02c9a90" args="(struct query_info *qchase, struct reply_info *rep, size_t *cname_skip)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int val_chase_cname           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structquery__info.html">query_info</a> *&nbsp;</td>
          <td class="paramname"> <em>qchase</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structreply__info.html">reply_info</a> *&nbsp;</td>
          <td class="paramname"> <em>rep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&nbsp;</td>
          <td class="paramname"> <em>cname_skip</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Chase the cname to the next query name. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>qchase,:</em>&nbsp;</td><td>the current query name, updated to next target. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rep,:</em>&nbsp;</td><td>original message reply to look at CNAMEs. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>cname_skip,:</em>&nbsp;</td><td>the skip into the answer section. Updated to skip DNAME and CNAME to the next part of the answer. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>false on error (bad rdata). </dd></dl>

<p>References <a class="el" href="msgreply_8h_source.html#l00133">reply_info::an_numrrsets</a>, <a class="el" href="packed__rrset_8c_source.html#l00193">get_cname_target()</a>, <a class="el" href="msgreply_8h_source.html#l00064">query_info::qname</a>, <a class="el" href="msgreply_8h_source.html#l00066">query_info::qname_len</a>, <a class="el" href="dname_8c_source.html#l00096">query_dname_compare()</a>, <a class="el" href="packed__rrset_8h_source.html#l00105">ub_packed_rrset_key::rk</a>, <a class="el" href="msgreply_8h_source.html#l00150">reply_info::rrsets</a>, and <a class="el" href="packed__rrset_8h_source.html#l00075">packed_rrset_key::type</a>.</p>

<p>Referenced by <a class="el" href="validator_8c_source.html#l01720">processFinished()</a>.</p>

</div>
</div><p>
<a class="anchor" name="01dd502bcc396523b54f3b5ff5576f80"></a><!-- doxytag: member="val_utils.h::val_fill_reply" ref="01dd502bcc396523b54f3b5ff5576f80" args="(struct reply_info *chase, struct reply_info *orig, size_t cname_skip, uint8_t *name, size_t len, uint8_t *signer)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void val_fill_reply           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structreply__info.html">reply_info</a> *&nbsp;</td>
          <td class="paramname"> <em>chase</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structreply__info.html">reply_info</a> *&nbsp;</td>
          <td class="paramname"> <em>orig</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>cname_skip</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&nbsp;</td>
          <td class="paramname"> <em>signer</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Fill up the chased reply with the content from the original reply; as pointers to those rrsets. 
<p>
Select the part after the cname_skip into the answer section, NS and AR sections that are signed with same signer.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>chase,:</em>&nbsp;</td><td>chased reply, filled up. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>orig,:</em>&nbsp;</td><td>original reply. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>cname_skip,:</em>&nbsp;</td><td>which part of the answer section to skip. The skipped part contains CNAME(and DNAME)s that have been chased. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name,:</em>&nbsp;</td><td>the signer name to look for. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len,:</em>&nbsp;</td><td>length of name. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>signer,:</em>&nbsp;</td><td>signer name or NULL if an unsigned RRset is considered. If NULL, rrsets with the lookup name are copied over. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="msgreply_8h_source.html#l00133">reply_info::an_numrrsets</a>, <a class="el" href="msgreply_8h_source.html#l00138">reply_info::ar_numrrsets</a>, <a class="el" href="packed__rrset_8h_source.html#l00064">packed_rrset_key::dname</a>, <a class="el" href="msgreply_8h_source.html#l00136">reply_info::ns_numrrsets</a>, <a class="el" href="dname_8c_source.html#l00096">query_dname_compare()</a>, <a class="el" href="packed__rrset_8h_source.html#l00105">ub_packed_rrset_key::rk</a>, <a class="el" href="msgreply_8h_source.html#l00141">reply_info::rrset_count</a>, <a class="el" href="val__utils_8c_source.html#l00570">rrset_has_signer()</a>, <a class="el" href="msgreply_8h_source.html#l00150">reply_info::rrsets</a>, and <a class="el" href="packed__rrset_8h_source.html#l00075">packed_rrset_key::type</a>.</p>

<p>Referenced by <a class="el" href="validator_8c_source.html#l01158">processInit()</a>.</p>

</div>
</div><p>
<a class="anchor" name="66e97c251d71b5ef7a1812032df5c419"></a><!-- doxytag: member="val_utils.h::val_check_nonsecure" ref="66e97c251d71b5ef7a1812032df5c419" args="(struct val_env *ve, struct reply_info *rep)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void val_check_nonsecure           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structval__env.html">val_env</a> *&nbsp;</td>
          <td class="paramname"> <em>ve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structreply__info.html">reply_info</a> *&nbsp;</td>
          <td class="paramname"> <em>rep</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Remove all unsigned or non-secure status rrsets from NS and AR sections. 
<p>
So that unsigned data does not get let through to clients, when we have found the data to be secure.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ve,:</em>&nbsp;</td><td>validator environment with cleaning options. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rep,:</em>&nbsp;</td><td>reply to dump all nonsecure stuff out of. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="msgreply_8h_source.html#l00133">reply_info::an_numrrsets</a>, <a class="el" href="msgreply_8h_source.html#l00138">reply_info::ar_numrrsets</a>, <a class="el" href="validator_8h_source.html#l00088">val_env::clean_additional</a>, <a class="el" href="lruhash_8h_source.html#l00222">lruhash_entry::data</a>, <a class="el" href="packed__rrset_8h_source.html#l00064">packed_rrset_key::dname</a>, <a class="el" href="packed__rrset_8h_source.html#l00094">ub_packed_rrset_key::entry</a>, <a class="el" href="net__help_8c_source.html#l00265">log_nametypeclass()</a>, <a class="el" href="msgreply_8h_source.html#l00136">reply_info::ns_numrrsets</a>, <a class="el" href="packed__rrset_8h_source.html#l00105">ub_packed_rrset_key::rk</a>, <a class="el" href="packed__rrset_8h_source.html#l00077">packed_rrset_key::rrset_class</a>, <a class="el" href="msgreply_8h_source.html#l00141">reply_info::rrset_count</a>, <a class="el" href="msgreply_8h_source.html#l00150">reply_info::rrsets</a>, <a class="el" href="packed__rrset_8h_source.html#l00162">sec_status_bogus</a>, <a class="el" href="packed__rrset_8h_source.html#l00173">sec_status_secure</a>, <a class="el" href="msgreply_8h_source.html#l00125">reply_info::security</a>, <a class="el" href="packed__rrset_8h_source.html#l00075">packed_rrset_key::type</a>, <a class="el" href="log_8h_source.html#l00058">VERB_ALGO</a>, <a class="el" href="log_8h_source.html#l00056">VERB_QUERY</a>, and <a class="el" href="ldns-testpkts_8c.html#a557e5b23b2833d7c1ec0415a1bdd2b1">verbose()</a>.</p>

<p>Referenced by <a class="el" href="validator_8c_source.html#l01720">processFinished()</a>.</p>

</div>
</div><p>
<a class="anchor" name="3ab8f2f477f3bce43b384e3a298a50f0"></a><!-- doxytag: member="val_utils.h::val_mark_indeterminate" ref="3ab8f2f477f3bce43b384e3a298a50f0" args="(struct reply_info *rep, struct val_anchors *anchors, struct rrset_cache *r, struct module_env *env)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void val_mark_indeterminate           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structreply__info.html">reply_info</a> *&nbsp;</td>
          <td class="paramname"> <em>rep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structval__anchors.html">val_anchors</a> *&nbsp;</td>
          <td class="paramname"> <em>anchors</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structrrset__cache.html">rrset_cache</a> *&nbsp;</td>
          <td class="paramname"> <em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structmodule__env.html">module_env</a> *&nbsp;</td>
          <td class="paramname"> <em>env</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Mark all unchecked rrset entries not below a trust anchor as indeterminate. 
<p>
Only security==unchecked rrsets are updated. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>rep,:</em>&nbsp;</td><td>the reply with rrsets. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>anchors,:</em>&nbsp;</td><td>the trust anchors. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>r,:</em>&nbsp;</td><td>rrset cache to store updated security status into. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>env,:</em>&nbsp;</td><td>module environment </td></tr>
  </table>
</dl>

<p>References <a class="el" href="val__anchor_8c_source.html#l01008">anchors_lookup()</a>, <a class="el" href="lruhash_8h_source.html#l00222">lruhash_entry::data</a>, <a class="el" href="packed__rrset_8h_source.html#l00064">packed_rrset_key::dname</a>, <a class="el" href="packed__rrset_8h_source.html#l00068">packed_rrset_key::dname_len</a>, <a class="el" href="packed__rrset_8h_source.html#l00094">ub_packed_rrset_key::entry</a>, <a class="el" href="module_8h_source.html#l00198">module_env::now</a>, <a class="el" href="packed__rrset_8h_source.html#l00105">ub_packed_rrset_key::rk</a>, <a class="el" href="packed__rrset_8h_source.html#l00077">packed_rrset_key::rrset_class</a>, <a class="el" href="msgreply_8h_source.html#l00141">reply_info::rrset_count</a>, <a class="el" href="rrset_8c_source.html#l00316">rrset_update_sec_status()</a>, <a class="el" href="msgreply_8h_source.html#l00150">reply_info::rrsets</a>, <a class="el" href="packed__rrset_8h_source.html#l00166">sec_status_indeterminate</a>, <a class="el" href="packed__rrset_8h_source.html#l00159">sec_status_unchecked</a>, and <a class="el" href="packed__rrset_8h_source.html#l00217">packed_rrset_data::security</a>.</p>

<p>Referenced by <a class="el" href="validator_8c_source.html#l01158">processInit()</a>.</p>

</div>
</div><p>
<a class="anchor" name="cde58bdf09a7c92b8ade92e50b5d4ea7"></a><!-- doxytag: member="val_utils.h::val_mark_insecure" ref="cde58bdf09a7c92b8ade92e50b5d4ea7" args="(struct reply_info *rep, uint8_t *kname, struct rrset_cache *r, struct module_env *env)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void val_mark_insecure           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structreply__info.html">reply_info</a> *&nbsp;</td>
          <td class="paramname"> <em>rep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&nbsp;</td>
          <td class="paramname"> <em>kname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structrrset__cache.html">rrset_cache</a> *&nbsp;</td>
          <td class="paramname"> <em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structmodule__env.html">module_env</a> *&nbsp;</td>
          <td class="paramname"> <em>env</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Mark all unchecked rrset entries below a NULL key <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> as insecure. 
<p>
Only security==unchecked rrsets are updated. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>rep,:</em>&nbsp;</td><td>the reply with rrsets. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>kname,:</em>&nbsp;</td><td>end of secure space name. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>r,:</em>&nbsp;</td><td>rrset cache to store updated security status into. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>env,:</em>&nbsp;</td><td>module environment </td></tr>
  </table>
</dl>

<p>References <a class="el" href="lruhash_8h_source.html#l00222">lruhash_entry::data</a>, <a class="el" href="packed__rrset_8h_source.html#l00064">packed_rrset_key::dname</a>, <a class="el" href="dname_8c_source.html#l00587">dname_subdomain_c()</a>, <a class="el" href="packed__rrset_8h_source.html#l00094">ub_packed_rrset_key::entry</a>, <a class="el" href="module_8h_source.html#l00198">module_env::now</a>, <a class="el" href="packed__rrset_8h_source.html#l00105">ub_packed_rrset_key::rk</a>, <a class="el" href="msgreply_8h_source.html#l00141">reply_info::rrset_count</a>, <a class="el" href="rrset_8c_source.html#l00316">rrset_update_sec_status()</a>, <a class="el" href="msgreply_8h_source.html#l00150">reply_info::rrsets</a>, <a class="el" href="packed__rrset_8h_source.html#l00170">sec_status_insecure</a>, <a class="el" href="packed__rrset_8h_source.html#l00159">sec_status_unchecked</a>, and <a class="el" href="packed__rrset_8h_source.html#l00217">packed_rrset_data::security</a>.</p>

<p>Referenced by <a class="el" href="validator_8c_source.html#l01158">processInit()</a>, and <a class="el" href="validator_8c_source.html#l01442">processValidate()</a>.</p>

</div>
</div><p>
<a class="anchor" name="66c26308b6b8b42a6f80078c84f283ab"></a><!-- doxytag: member="val_utils.h::val_next_unchecked" ref="66c26308b6b8b42a6f80078c84f283ab" args="(struct reply_info *rep, size_t skip)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t val_next_unchecked           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structreply__info.html">reply_info</a> *&nbsp;</td>
          <td class="paramname"> <em>rep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>skip</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Find next unchecked rrset position, return it for skip. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>rep,:</em>&nbsp;</td><td>the original reply to look into. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>skip,:</em>&nbsp;</td><td>the skip now. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>new skip, which may be at the rep-&gt;rrset_count position to signal there are no unchecked items. </dd></dl>

<p>References <a class="el" href="lruhash_8h_source.html#l00222">lruhash_entry::data</a>, <a class="el" href="packed__rrset_8h_source.html#l00094">ub_packed_rrset_key::entry</a>, <a class="el" href="msgreply_8h_source.html#l00141">reply_info::rrset_count</a>, <a class="el" href="msgreply_8h_source.html#l00150">reply_info::rrsets</a>, <a class="el" href="packed__rrset_8h_source.html#l00159">sec_status_unchecked</a>, and <a class="el" href="packed__rrset_8h_source.html#l00217">packed_rrset_data::security</a>.</p>

<p>Referenced by <a class="el" href="validator_8c_source.html#l01720">processFinished()</a>.</p>

</div>
</div><p>
<a class="anchor" name="7be2d30a0d46ad988f4d78a2998f608a"></a><!-- doxytag: member="val_utils.h::val_find_rrset_signer" ref="7be2d30a0d46ad988f4d78a2998f608a" args="(struct ub_packed_rrset_key *rrset, uint8_t **sname, size_t *slen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void val_find_rrset_signer           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *&nbsp;</td>
          <td class="paramname"> <em>rrset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t **&nbsp;</td>
          <td class="paramname"> <em>sname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&nbsp;</td>
          <td class="paramname"> <em>slen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Find the signer name for an RRset. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>rrset,:</em>&nbsp;</td><td>the rrset. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sname,:</em>&nbsp;</td><td>signer name is returned or NULL if not signed. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>slen,:</em>&nbsp;</td><td>length of sname (or 0). </td></tr>
  </table>
</dl>

<p>References <a class="el" href="packed__rrset_8h_source.html#l00211">packed_rrset_data::count</a>, <a class="el" href="lruhash_8h_source.html#l00222">lruhash_entry::data</a>, <a class="el" href="packed__rrset_8h_source.html#l00094">ub_packed_rrset_key::entry</a>, <a class="el" href="packed__rrset_8h_source.html#l00229">packed_rrset_data::rr_data</a>, <a class="el" href="packed__rrset_8h_source.html#l00219">packed_rrset_data::rr_len</a>, <a class="el" href="packed__rrset_8h_source.html#l00213">packed_rrset_data::rrsig_count</a>, and <a class="el" href="val__utils_8c_source.html#l00128">rrsig_get_signer()</a>.</p>

<p>Referenced by <a class="el" href="val__neg_8c_source.html#l01015">reply_nsec_signer()</a>, <a class="el" href="val__utils_8c_source.html#l00211">val_find_signer()</a>, and <a class="el" href="validator_8c_source.html#l00398">validate_msg_signatures()</a>.</p>

</div>
</div><p>
<a class="anchor" name="e53ed1827615db66911543426934df7c"></a><!-- doxytag: member="val_utils.h::val_classification_to_string" ref="e53ed1827615db66911543426934df7c" args="(enum val_classification subtype)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* val_classification_to_string           </td>
          <td>(</td>
          <td class="paramtype">enum <a class="el" href="val__utils_8h.html#3173455a485d600682697796c0937ac9">val_classification</a>&nbsp;</td>
          <td class="paramname"> <em>subtype</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get string to denote the classification result. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>subtype,:</em>&nbsp;</td><td>from classification function. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>static string to describe the classification. </dd></dl>

<p>References <a class="el" href="val__utils_8h_source.html#l00077">VAL_CLASS_ANY</a>, <a class="el" href="val__utils_8h_source.html#l00066">VAL_CLASS_CNAME</a>, <a class="el" href="val__utils_8h_source.html#l00073">VAL_CLASS_CNAMENOANSWER</a>, <a class="el" href="val__utils_8h_source.html#l00070">VAL_CLASS_NAMEERROR</a>, <a class="el" href="val__utils_8h_source.html#l00068">VAL_CLASS_NODATA</a>, <a class="el" href="val__utils_8h_source.html#l00064">VAL_CLASS_POSITIVE</a>, <a class="el" href="val__utils_8h_source.html#l00075">VAL_CLASS_REFERRAL</a>, <a class="el" href="val__utils_8h_source.html#l00062">VAL_CLASS_UNKNOWN</a>, and <a class="el" href="val__utils_8h_source.html#l00060">VAL_CLASS_UNTYPED</a>.</p>

<p>Referenced by <a class="el" href="validator_8c_source.html#l02151">ds_response_to_ke()</a>, and <a class="el" href="validator_8c_source.html#l01158">processInit()</a>.</p>

</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Tue Oct 13 06:46:33 2009 for unbound by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>