}
}
+ // Make just the NSEC3 hash label uppercase, and insert the
+ // entire name into the NSEC3Data ZoneTree.
string fst_label = rrset->getName().split(0, 1).toText(true);
transform(fst_label.begin(), fst_label.end(), fst_label.begin(),
::toupper);
+ const string rest = rrset->getName().split(1).toText(true);
ZoneNode* node;
- nsec3_data->insertName(mem_sgmt_, Name(fst_label), &node);
+ nsec3_data->insertName(mem_sgmt_, Name(fst_label + "." + rest), &node);
RdataEncoder encoder;
}
}
+ // Make just the NSEC3 hash label uppercase, and insert the
+ // entire name into the NSEC3Data ZoneTree.
string fst_label = rrset->getName().split(0, 1).toText(true);
transform(fst_label.begin(), fst_label.end(), fst_label.begin(),
::toupper);
+ const string rest = rrset->getName().split(1).toText(true);
ZoneNode *node;
- nsec3_data->insertName(mem_sgmt_, Name(fst_label), &node);
-
+ nsec3_data->insertName(mem_sgmt_, Name(fst_label + "." + rest), &node);
// We assume that rrsig has already been checked to match rrset
// by the caller.
// the deepest label one by one, until we find a name that has a matching
// NSEC3 hash.
for (unsigned int labels = qlabels; labels >= olabels; --labels) {
- const std::string hlabel =
- (nsec3_calculate_)((labels == qlabels ?
- name : name.split(qlabels - labels, labels)),
- nsec3_data->iterations,
- nsec3_data->getSaltData(),
- nsec3_data->getSaltLen());
+ const std::string hlabel = (nsec3_calculate_)
+ ((labels == qlabels ?
+ name : name.split(qlabels - labels, labels)),
+ nsec3_data->iterations,
+ nsec3_data->getSaltData(),
+ nsec3_data->getSaltLen());
LOG_DEBUG(logger, DBG_TRACE_BASIC, DATASRC_MEM_FINDNSEC3_TRYHASH).
arg(name).arg(labels).arg(hlabel);
ZoneNode* node(NULL);
ZoneChain chain;
- ZoneTree::Result result = tree.find(Name(hlabel), &node, chain);
+ ZoneTree::Result result =
+ tree.find(Name(hlabel + "." + getOrigin().toText()), &node, chain);
if (result == ZoneTree::EXACTMATCH) {
// We found an exact match.