rtr.xfr16BitInt(d_iterations);
rtr.xfrHexBlob(d_salt);
- rtr.xfrHexBlob(d_nexthash);
-
+ rtr.xfrBase32HexBlob(d_nexthash);
+
while(!rtr.eof()) {
uint16_t type;
rtr.xfrType(type);
pw.xfr8BitInt(d_nexthash.length());
pw.xfrBlob(d_nexthash);
-
+
uint8_t res[34];
memset(res, 0, sizeof(res));
pr.xfrBlob(ret->d_salt, len);
pr.xfr8BitInt(len);
+
pr.xfrBlob(ret->d_nexthash, len);
-
+
string bitmap;
pr.xfrBlob(bitmap);
throw MOADNSException("NSEC3 record with impossibly small bitmap");
if(bitmap[0])
- throw MOADNSException("Can't deal with NSEC mappings > 255 yet");
+ throw MOADNSException("Can't deal with NSEC3 mappings > 255 yet");
unsigned int bitmaplen=bitmap[1];
if(bitmap.size()!=2+bitmaplen)
- throw MOADNSException("Can't deal with multi-part NSEC mappings yet");
+ throw MOADNSException("Can't deal with multi-part NSEC3 mappings yet");
for(unsigned int n=0 ; n < bitmaplen ; ++n) {
uint8_t val=bitmap[2+n];
rtw.xfrHexBlob(d_salt);
rtw.xfrBase32HexBlob(d_nexthash);
-
for(set<uint16_t>::const_iterator i=d_set.begin(); i!=d_set.end(); ++i) {
ret+=" ";
ret+=NumberToType(*i);
{
RecordTextReader rtr(content, zone);
rtr.xfr8BitInt(d_algorithm);
- rtr.xfr8BitInt(d_flags);
- rtr.xfr16BitInt(d_iterations);
+ rtr.xfr8BitInt(d_flags);
+ rtr.xfr16BitInt(d_iterations);
rtr.xfrHexBlob(d_salt);
}
HEXDecode(d_string.c_str()+pos, d_string.c_str() + d_pos, val);
}
+void RecordTextReader::xfrBase32HexBlob(string& val)
+{
+ skipSpaces();
+ int pos=(int)d_pos;
+ while(d_pos < d_end && !dns_isspace(d_string[d_pos]))
+ d_pos++;
+
+ val=fromBase32Hex(string(d_string.c_str()+pos, d_pos-pos));
+}
+
+
void RecordTextWriter::xfrBase32HexBlob(const string& val)
{
if(!d_string.empty())
void xfrLabel(string& val, bool compress=false);
void xfrText(string& val, bool multi=false);
void xfrHexBlob(string& val);
-
+ void xfrBase32HexBlob(string& val);
void xfrBlob(string& val, int len=-1);