Sophie

Sophie

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

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_sigcrypt.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_sigcrypt.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>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__sigcrypt_8h.html#c50f53c2d6d54f8e3bbe1e516e0189c5">ds_digest_match_dnskey</a> (struct <a class="el" href="structmodule__env.html">module_env</a> *env, struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *dnskey_rrset, size_t dnskey_idx, struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *ds_rrset, size_t ds_idx)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if dnskey matches a DS digest Does not check dnskey-keyid footprint, just the digest.  <a href="#c50f53c2d6d54f8e3bbe1e516e0189c5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">uint16_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__sigcrypt_8h.html#fa1476223a3470224fc1240aa07ebe44">dnskey_calc_keytag</a> (struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *dnskey_rrset, size_t dnskey_idx)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get dnskey keytag, footprint value.  <a href="#fa1476223a3470224fc1240aa07ebe44"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">uint16_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__sigcrypt_8h.html#9917888043b00f6c55fb5835ab1144c1">ds_get_keytag</a> (struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *ds_rrset, size_t ds_idx)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get DS keytag, footprint value that matches the DNSKEY keytag it signs.  <a href="#9917888043b00f6c55fb5835ab1144c1"></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__sigcrypt_8h.html#5262bf8afae38c4aaab4a6eafa9b2bb4">dnskey_algo_is_supported</a> (struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *dnskey_rrset, size_t dnskey_idx)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See if DNSKEY algorithm is supported.  <a href="#5262bf8afae38c4aaab4a6eafa9b2bb4"></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__sigcrypt_8h.html#c4d729b13459be734257c7749c034e28">ds_digest_algo_is_supported</a> (struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *ds_rrset, size_t ds_idx)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See if DS digest algorithm is supported.  <a href="#c4d729b13459be734257c7749c034e28"></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__sigcrypt_8h.html#3d2f5d69225945a6db57318c91a487e2">ds_get_digest_algo</a> (struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *ds_rrset, size_t ds_idx)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get DS RR digest algorithm.  <a href="#3d2f5d69225945a6db57318c91a487e2"></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__sigcrypt_8h.html#80d5068691e9907df971c30ad0302b4d">ds_key_algo_is_supported</a> (struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *ds_rrset, size_t ds_idx)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See if DS key algorithm is supported.  <a href="#80d5068691e9907df971c30ad0302b4d"></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__sigcrypt_8h.html#2dbf37423deab6776f15500aff46f49b">ds_get_key_algo</a> (struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *k, size_t idx)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get DS RR key algorithm.  <a href="#2dbf37423deab6776f15500aff46f49b"></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__sigcrypt_8h.html#e700c48e3ad7bed67bffd14608f2364d">dnskey_get_algo</a> (struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *k, size_t idx)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get DNSKEY RR signature algorithm.  <a href="#e700c48e3ad7bed67bffd14608f2364d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">uint16_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__sigcrypt_8h.html#febfab5d605ba59616991a853e358ca5">dnskey_get_flags</a> (struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *k, size_t idx)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get DNSKEY RR flags.  <a href="#febfab5d605ba59616991a853e358ca5"></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__sigcrypt_8h.html#b739c7b09fa23f39b78c6afcf9d4de4c">dnskeyset_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> *dnskey)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Verify rrset against dnskey rrset.  <a href="#b739c7b09fa23f39b78c6afcf9d4de4c"></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__sigcrypt_8h.html#83268d78f5383c7bf9dc8de1d7e05821">dnskey_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> *dnskey, size_t dnskey_idx)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">verify rrset against one specific dnskey (from rrset)  <a href="#83268d78f5383c7bf9dc8de1d7e05821"></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__sigcrypt_8h.html#c819eb805b1056283eb36b88a985f407">dnskeyset_verify_rrset_sig</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, uint32_t now, 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> *dnskey, size_t sig_idx, struct <a class="el" href="structrbtree__t.html">rbtree_t</a> **sortree)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">verify rrset, with dnskey rrset, for a specific rrsig in rrset  <a href="#c819eb805b1056283eb36b88a985f407"></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__sigcrypt_8h.html#c74eeb58d7f8b322c87205f034cc6305">dnskey_verify_rrset_sig</a> (struct <a class="el" href="structregional.html">regional</a> *region, ldns_buffer *buf, struct <a class="el" href="structval__env.html">val_env</a> *ve, uint32_t now, 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> *dnskey, size_t dnskey_idx, size_t sig_idx, struct <a class="el" href="structrbtree__t.html">rbtree_t</a> **sortree, int *buf_canon)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">verify rrset, with specific dnskey(from set), for a specific rrsig  <a href="#c74eeb58d7f8b322c87205f034cc6305"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b88b04436605c5a9aa43dcbe3f311e69"></a><!-- doxytag: member="val_sigcrypt.h::canonical_tree_compare" ref="b88b04436605c5a9aa43dcbe3f311e69" args="(const void *k1, const void *k2)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__sigcrypt_8h.html#b88b04436605c5a9aa43dcbe3f311e69">canonical_tree_compare</a> (const void *k1, const void *k2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">canonical compare for two tree entries <br></td></tr>
</table>
<hr><h2>Detailed Description</h2>
This file contains helper functions for the validator module. 
<p>
The functions help with signature verification and checking, the bridging between RR wireformat data and crypto calls. <hr><h2>Function Documentation</h2>
<a class="anchor" name="c50f53c2d6d54f8e3bbe1e516e0189c5"></a><!-- doxytag: member="val_sigcrypt.h::ds_digest_match_dnskey" ref="c50f53c2d6d54f8e3bbe1e516e0189c5" args="(struct module_env *env, struct ub_packed_rrset_key *dnskey_rrset, size_t dnskey_idx, struct ub_packed_rrset_key *ds_rrset, size_t ds_idx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ds_digest_match_dnskey           </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="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">size_t&nbsp;</td>
          <td class="paramname"> <em>dnskey_idx</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>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>ds_idx</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if dnskey matches a DS digest Does not check dnskey-keyid footprint, just the digest. 
<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. Uses scratch space. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dnskey_rrset,:</em>&nbsp;</td><td>DNSKEY rrset. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dnskey_idx,:</em>&nbsp;</td><td>index of RR in rrset. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ds_rrset,:</em>&nbsp;</td><td>DS rrset </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ds_idx,:</em>&nbsp;</td><td>index of RR in DS rrset. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>true if it matches, false on error, not supported or no match. </dd></dl>

<p>References <a class="el" href="val__sigcrypt_8c_source.html#l00276">ds_create_dnskey_digest()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00248">ds_digest_size_algo()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00226">ds_get_sigdata()</a>, <a class="el" href="regional_8c_source.html#l00116">regional_alloc()</a>, <a class="el" href="module_8h_source.html#l00186">module_env::scratch</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="unitverify_8c_source.html#l00215">dstest_entry()</a>, and <a class="el" href="val__utils_8c_source.html#l00379">verify_dnskeys_with_ds_rr()</a>.</p>

</div>
</div><p>
<a class="anchor" name="fa1476223a3470224fc1240aa07ebe44"></a><!-- doxytag: member="val_sigcrypt.h::dnskey_calc_keytag" ref="fa1476223a3470224fc1240aa07ebe44" args="(struct ub_packed_rrset_key *dnskey_rrset, size_t dnskey_idx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t dnskey_calc_keytag           </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">size_t&nbsp;</td>
          <td class="paramname"> <em>dnskey_idx</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get dnskey keytag, footprint value. 
<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>dnskey_rrset,:</em>&nbsp;</td><td>DNSKEY rrset. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dnskey_idx,:</em>&nbsp;</td><td>index of RR in rrset. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the keytag or 0 for badly formatted DNSKEYs. </dd></dl>

<p>References <a class="el" href="val__sigcrypt_8c_source.html#l00114">rrset_get_rdata()</a>.</p>

<p>Referenced by <a class="el" href="val__sigcrypt_8c_source.html#l00471">dnskey_verify_rrset()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l01373">dnskey_verify_rrset_sig()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00505">dnskeyset_verify_rrset_sig()</a>, and <a class="el" href="val__utils_8c_source.html#l00379">verify_dnskeys_with_ds_rr()</a>.</p>

</div>
</div><p>
<a class="anchor" name="9917888043b00f6c55fb5835ab1144c1"></a><!-- doxytag: member="val_sigcrypt.h::ds_get_keytag" ref="9917888043b00f6c55fb5835ab1144c1" args="(struct ub_packed_rrset_key *ds_rrset, size_t ds_idx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t ds_get_keytag           </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>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>ds_idx</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get DS keytag, footprint value that matches the DNSKEY keytag it signs. 
<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>DS rrset </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ds_idx,:</em>&nbsp;</td><td>index of RR in DS rrset. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the keytag or 0 for badly formatted DSs. </dd></dl>

<p>References <a class="el" href="val__sigcrypt_8c_source.html#l00114">rrset_get_rdata()</a>.</p>

<p>Referenced by <a class="el" href="val__utils_8c_source.html#l00379">verify_dnskeys_with_ds_rr()</a>.</p>

</div>
</div><p>
<a class="anchor" name="5262bf8afae38c4aaab4a6eafa9b2bb4"></a><!-- doxytag: member="val_sigcrypt.h::dnskey_algo_is_supported" ref="5262bf8afae38c4aaab4a6eafa9b2bb4" args="(struct ub_packed_rrset_key *dnskey_rrset, size_t dnskey_idx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int dnskey_algo_is_supported           </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">size_t&nbsp;</td>
          <td class="paramname"> <em>dnskey_idx</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
See if DNSKEY algorithm is supported. 
<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>dnskey_rrset,:</em>&nbsp;</td><td>DNSKEY rrset. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dnskey_idx,:</em>&nbsp;</td><td>index of RR in rrset. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>true if supported. </dd></dl>

<p>References <a class="el" href="val__sigcrypt_8c_source.html#l00365">dnskey_algo_id_is_supported()</a>, and <a class="el" href="val__sigcrypt_8c_source.html#l00154">dnskey_get_algo()</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00870">anchors_dnskey_unsupported()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c4d729b13459be734257c7749c034e28"></a><!-- doxytag: member="val_sigcrypt.h::ds_digest_algo_is_supported" ref="c4d729b13459be734257c7749c034e28" args="(struct ub_packed_rrset_key *ds_rrset, size_t ds_idx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ds_digest_algo_is_supported           </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>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>ds_idx</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
See if DS digest algorithm is supported. 
<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>DS rrset </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ds_idx,:</em>&nbsp;</td><td>index of RR in DS rrset. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>true if supported. </dd></dl>

<p>References <a class="el" href="val__sigcrypt_8c_source.html#l00248">ds_digest_size_algo()</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00853">anchors_ds_unsupported()</a>, <a class="el" href="val__utils_8c_source.html#l00495">val_dsset_isusable()</a>, and <a class="el" href="val__utils_8c_source.html#l00420">val_verify_new_DNSKEYs()</a>.</p>

</div>
</div><p>
<a class="anchor" name="3d2f5d69225945a6db57318c91a487e2"></a><!-- doxytag: member="val_sigcrypt.h::ds_get_digest_algo" ref="3d2f5d69225945a6db57318c91a487e2" args="(struct ub_packed_rrset_key *ds_rrset, size_t ds_idx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ds_get_digest_algo           </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>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>ds_idx</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get DS RR digest algorithm. 
<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>DS rrset. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ds_idx,:</em>&nbsp;</td><td>which DS. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>algorithm or 0 if DS too short. </dd></dl>

<p>References <a class="el" href="val__sigcrypt_8c_source.html#l00114">rrset_get_rdata()</a>.</p>

<p>Referenced by <a class="el" href="val__sigcrypt_8c_source.html#l00276">ds_create_dnskey_digest()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00248">ds_digest_size_algo()</a>, and <a class="el" href="val__utils_8c_source.html#l00420">val_verify_new_DNSKEYs()</a>.</p>

</div>
</div><p>
<a class="anchor" name="80d5068691e9907df971c30ad0302b4d"></a><!-- doxytag: member="val_sigcrypt.h::ds_key_algo_is_supported" ref="80d5068691e9907df971c30ad0302b4d" args="(struct ub_packed_rrset_key *ds_rrset, size_t ds_idx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ds_key_algo_is_supported           </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>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>ds_idx</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
See if DS key algorithm is supported. 
<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>DS rrset </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ds_idx,:</em>&nbsp;</td><td>index of RR in DS rrset. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>true if supported. </dd></dl>

<p>References <a class="el" href="val__sigcrypt_8c_source.html#l00365">dnskey_algo_id_is_supported()</a>, and <a class="el" href="val__sigcrypt_8c_source.html#l00182">ds_get_key_algo()</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00853">anchors_ds_unsupported()</a>, <a class="el" href="val__utils_8c_source.html#l00495">val_dsset_isusable()</a>, and <a class="el" href="val__utils_8c_source.html#l00420">val_verify_new_DNSKEYs()</a>.</p>

</div>
</div><p>
<a class="anchor" name="2dbf37423deab6776f15500aff46f49b"></a><!-- doxytag: member="val_sigcrypt.h::ds_get_key_algo" ref="2dbf37423deab6776f15500aff46f49b" args="(struct ub_packed_rrset_key *k, size_t idx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ds_get_key_algo           </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>k</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>idx</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get DS RR key algorithm. 
<p>
This value should match with the DNSKEY algo. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>k,:</em>&nbsp;</td><td>DS rrset. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>idx,:</em>&nbsp;</td><td>which DS. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>algorithm or 0 if DS too short. </dd></dl>

<p>References <a class="el" href="val__sigcrypt_8c_source.html#l00114">rrset_get_rdata()</a>.</p>

<p>Referenced by <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#l00379">verify_dnskeys_with_ds_rr()</a>.</p>

</div>
</div><p>
<a class="anchor" name="e700c48e3ad7bed67bffd14608f2364d"></a><!-- doxytag: member="val_sigcrypt.h::dnskey_get_algo" ref="e700c48e3ad7bed67bffd14608f2364d" args="(struct ub_packed_rrset_key *k, size_t idx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int dnskey_get_algo           </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>k</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>idx</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get DNSKEY RR signature algorithm. 
<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>k,:</em>&nbsp;</td><td>DNSKEY rrset. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>idx,:</em>&nbsp;</td><td>which DNSKEY RR. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>algorithm or 0 if DNSKEY too short. </dd></dl>

<p>References <a class="el" href="val__sigcrypt_8c_source.html#l00114">rrset_get_rdata()</a>.</p>

<p>Referenced by <a class="el" href="val__sigcrypt_8c_source.html#l00402">dnskey_algo_is_supported()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00471">dnskey_verify_rrset()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l01373">dnskey_verify_rrset_sig()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00416">dnskeyset_needs()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00505">dnskeyset_verify_rrset_sig()</a>, and <a class="el" href="val__utils_8c_source.html#l00379">verify_dnskeys_with_ds_rr()</a>.</p>

</div>
</div><p>
<a class="anchor" name="febfab5d605ba59616991a853e358ca5"></a><!-- doxytag: member="val_sigcrypt.h::dnskey_get_flags" ref="febfab5d605ba59616991a853e358ca5" args="(struct ub_packed_rrset_key *k, size_t idx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t dnskey_get_flags           </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>k</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>idx</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get DNSKEY RR flags. 
<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>k,:</em>&nbsp;</td><td>DNSKEY rrset. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>idx,:</em>&nbsp;</td><td>which DNSKEY RR. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>flags or 0 if DNSKEY too short. </dd></dl>

<p>References <a class="el" href="val__sigcrypt_8c_source.html#l00114">rrset_get_rdata()</a>.</p>

<p>Referenced by <a class="el" href="val__sigcrypt_8c_source.html#l01373">dnskey_verify_rrset_sig()</a>.</p>

</div>
</div><p>
<a class="anchor" name="b739c7b09fa23f39b78c6afcf9d4de4c"></a><!-- doxytag: member="val_sigcrypt.h::dnskeyset_verify_rrset" ref="b739c7b09fa23f39b78c6afcf9d4de4c" args="(struct module_env *env, struct val_env *ve, struct ub_packed_rrset_key *rrset, struct ub_packed_rrset_key *dnskey)" -->
<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> dnskeyset_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>dnskey</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 against dnskey 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>env,:</em>&nbsp;</td><td>module environment, scratch space is used. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ve,:</em>&nbsp;</td><td>validator environment, date settings. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rrset,:</em>&nbsp;</td><td>to be validated. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dnskey,:</em>&nbsp;</td><td>DNSKEY rrset, keyset to try. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>SECURE if one key in the set verifies one rrsig. UNCHECKED on allocation errors, unsupported algorithms, malformed data, and BOGUS on verification failures (no keys match any signatures). </dd></dl>

<p>References <a class="el" href="val__sigcrypt_8c_source.html#l00416">dnskeyset_needs()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00505">dnskeyset_verify_rrset_sig()</a>, <a class="el" href="module_8h_source.html#l00198">module_env::now</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00103">rrset_get_sig_algo()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00072">rrset_get_sigcount()</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="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="val__utils_8c_source.html#l00305">val_verify_rrset()</a>, and <a class="el" href="unitverify_8c_source.html#l00153">verifytest_rrset()</a>.</p>

</div>
</div><p>
<a class="anchor" name="83268d78f5383c7bf9dc8de1d7e05821"></a><!-- doxytag: member="val_sigcrypt.h::dnskey_verify_rrset" ref="83268d78f5383c7bf9dc8de1d7e05821" args="(struct module_env *env, struct val_env *ve, struct ub_packed_rrset_key *rrset, struct ub_packed_rrset_key *dnskey, size_t dnskey_idx)" -->
<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> dnskey_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>dnskey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>dnskey_idx</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 against one specific dnskey (from 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>env,:</em>&nbsp;</td><td>module environment, scratch space is used. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ve,:</em>&nbsp;</td><td>validator environment, date settings. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rrset,:</em>&nbsp;</td><td>to be validated. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dnskey,:</em>&nbsp;</td><td>DNSKEY rrset, keyset. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dnskey_idx,:</em>&nbsp;</td><td>which key from the rrset to try. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>secure if *this* key signs any of the signatures on rrset. unchecked on error or and bogus on bad signature. </dd></dl>

<p>References <a class="el" href="val__sigcrypt_8c_source.html#l00393">dnskey_calc_keytag()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00154">dnskey_get_algo()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l01373">dnskey_verify_rrset_sig()</a>, <a class="el" href="module_8h_source.html#l00198">module_env::now</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00103">rrset_get_sig_algo()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00085">rrset_get_sig_keytag()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00072">rrset_get_sigcount()</a>, <a class="el" href="module_8h_source.html#l00186">module_env::scratch</a>, <a class="el" href="module_8h_source.html#l00188">module_env::scratch_buffer</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="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="val__utils_8c_source.html#l00379">verify_dnskeys_with_ds_rr()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c819eb805b1056283eb36b88a985f407"></a><!-- doxytag: member="val_sigcrypt.h::dnskeyset_verify_rrset_sig" ref="c819eb805b1056283eb36b88a985f407" args="(struct module_env *env, struct val_env *ve, uint32_t now, struct ub_packed_rrset_key *rrset, struct ub_packed_rrset_key *dnskey, size_t sig_idx, struct rbtree_t **sortree)" -->
<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> dnskeyset_verify_rrset_sig           </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">uint32_t&nbsp;</td>
          <td class="paramname"> <em>now</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>dnskey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>sig_idx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structrbtree__t.html">rbtree_t</a> **&nbsp;</td>
          <td class="paramname"> <em>sortree</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 dnskey rrset, for a specific rrsig in 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>env,:</em>&nbsp;</td><td>module environment, scratch space is used. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ve,:</em>&nbsp;</td><td>validator environment, date settings. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>now,:</em>&nbsp;</td><td>current time for validation (can be overridden). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rrset,:</em>&nbsp;</td><td>to be validated. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dnskey,:</em>&nbsp;</td><td>DNSKEY rrset, keyset to try. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sig_idx,:</em>&nbsp;</td><td>which signature to try to validate. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sortree,:</em>&nbsp;</td><td>reused sorted order. Stored in region. Pass NULL at start, and for a new rrset. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>secure if any key signs *this* signature. bogus if no key signs it, or unchecked on error. </dd></dl>

<p>References <a class="el" href="val__sigcrypt_8c_source.html#l00393">dnskey_calc_keytag()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00154">dnskey_get_algo()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l01373">dnskey_verify_rrset_sig()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00060">rrset_get_count()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00103">rrset_get_sig_algo()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00085">rrset_get_sig_keytag()</a>, <a class="el" href="module_8h_source.html#l00186">module_env::scratch</a>, <a class="el" href="module_8h_source.html#l00188">module_env::scratch_buffer</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="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="val__sigcrypt_8c_source.html#l00434">dnskeyset_verify_rrset()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c74eeb58d7f8b322c87205f034cc6305"></a><!-- doxytag: member="val_sigcrypt.h::dnskey_verify_rrset_sig" ref="c74eeb58d7f8b322c87205f034cc6305" args="(struct regional *region, ldns_buffer *buf, struct val_env *ve, uint32_t now, struct ub_packed_rrset_key *rrset, struct ub_packed_rrset_key *dnskey, size_t dnskey_idx, size_t sig_idx, struct rbtree_t **sortree, int *buf_canon)" -->
<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> dnskey_verify_rrset_sig           </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">ldns_buffer *&nbsp;</td>
          <td class="paramname"> <em>buf</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">uint32_t&nbsp;</td>
          <td class="paramname"> <em>now</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>dnskey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>dnskey_idx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>sig_idx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structrbtree__t.html">rbtree_t</a> **&nbsp;</td>
          <td class="paramname"> <em>sortree</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>buf_canon</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 specific dnskey(from set), for a specific rrsig 
<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>scratch region used for temporary allocation. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buf,:</em>&nbsp;</td><td>scratch buffer used for canonicalized rrset data. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ve,:</em>&nbsp;</td><td>validator environment, date settings. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>now,:</em>&nbsp;</td><td>current time for validation (can be overridden). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rrset,:</em>&nbsp;</td><td>to be validated. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dnskey,:</em>&nbsp;</td><td>DNSKEY rrset, keyset. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dnskey_idx,:</em>&nbsp;</td><td>which key from the rrset to try. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sig_idx,:</em>&nbsp;</td><td>which signature to try to validate. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sortree,:</em>&nbsp;</td><td>pass NULL at start, the sorted rrset order is returned. pass it again for the same rrset. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buf_canon,:</em>&nbsp;</td><td>if true, the buffer is already canonical. pass false at start. pass old value only for same rrset and same signature (but perhaps different key) for reuse. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>secure if this key signs this signature. unchecked on error or bogus if it did not validate. </dd></dl>

<p>References <a class="el" href="val__sigcrypt_8c_source.html#l01100">adjust_ttl()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l01048">check_dates()</a>, <a class="el" href="packed__rrset_8h_source.html#l00064">packed_rrset_key::dname</a>, <a class="el" href="dname_8c_source.html#l00637">dname_signame_label_count()</a>, <a class="el" href="dname_8c_source.html#l00587">dname_subdomain_c()</a>, <a class="el" href="dname_8c_source.html#l00072">dname_valid()</a>, <a class="el" href="net__help_8h_source.html#l00090">DNSKEY_BIT_ZSK</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00393">dnskey_calc_keytag()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00154">dnskey_get_algo()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00124">dnskey_get_flags()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00143">dnskey_get_protocol()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00166">dnskey_get_pubkey()</a>, <a class="el" href="log_8c_source.html#l00241">log_err()</a>, <a class="el" href="net__help_8c_source.html#l00265">log_nametypeclass()</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="val__sigcrypt_8c_source.html#l00968">rrset_canonical()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00060">rrset_get_count()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00114">rrset_get_rdata()</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_8h_source.html#l00159">sec_status_unchecked</a>, <a class="el" href="packed__rrset_8h_source.html#l00075">packed_rrset_key::type</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__sigcrypt_8c_source.html#l01305">verify_canonrrset()</a>.</p>

<p>Referenced by <a class="el" href="val__sigcrypt_8c_source.html#l00471">dnskey_verify_rrset()</a>, and <a class="el" href="val__sigcrypt_8c_source.html#l00505">dnskeyset_verify_rrset_sig()</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>