These are defined in draft-ietf-drip-registries-33.
}
)
+boilerplate_conv(HHIT,
+ conv.xfrBlob(d_data);
+ )
+
+boilerplate_conv(BRID,
+ conv.xfrBlob(d_data);
+ )
+
boilerplate_conv(SMIMEA,
conv.xfr8BitInt(d_certusage);
conv.xfr8BitInt(d_selector);
/* SVCB end */
+std::shared_ptr<DRIPBaseRecordContent> HHITRecordContent::clone() const
+{
+ return {std::make_shared<HHITRecordContent>(*this)};
+}
+
+std::shared_ptr<DRIPBaseRecordContent> BRIDRecordContent::clone() const
+{
+ return {std::make_shared<BRIDRecordContent>(*this)};
+}
+
boilerplate_conv(TKEY,
conv.xfrName(d_algo);
conv.xfr32BitInt(d_inception);
OPENPGPKEYRecordContent::report(guard);
SVCBRecordContent::report(guard);
HTTPSRecordContent::report(guard);
+ HHITRecordContent::report(guard);
+ BRIDRecordContent::report(guard);
DLVRecordContent::report(guard);
DNSRecordContent::regist(QClass::ANY, QType::TSIG, &TSIGRecordContent::make, &TSIGRecordContent::make, "TSIG");
DNSRecordContent::regist(QClass::ANY, QType::TKEY, &TKEYRecordContent::make, &TKEYRecordContent::make, "TKEY");
std::shared_ptr<SVCBBaseRecordContent> clone() const override;
};
+class DRIPBaseRecordContent : public DNSKEYRecordContent
+{
+public:
+ [[nodiscard]] size_t sizeEstimate() const override
+ {
+ return sizeof(*this) + d_data.size();
+ }
+ virtual std::shared_ptr<DRIPBaseRecordContent> clone() const = 0;
+protected:
+ string d_data;
+};
+
+class HHITRecordContent : public DRIPBaseRecordContent {
+public:
+ includeboilerplate(HHIT);
+ std::shared_ptr<DRIPBaseRecordContent> clone() const override;
+};
+
+class BRIDRecordContent : public DRIPBaseRecordContent {
+public:
+ includeboilerplate(BRID);
+ std::shared_ptr<DRIPBaseRecordContent> clone() const override;
+};
+
class RRSIGRecordContent : public DNSRecordContent
{
public:
{"ZONEMD", 63},
{"SVCB", 64},
{"HTTPS", 65},
+ {"HHIT", 67},
+ {"BRID", 68},
{"SPF", 99},
{"NID", 104},
{"L32", 105},
ZONEMD = 63,
SVCB = 64,
HTTPS = 65,
+ HHIT = 67,
+ BRID = 68,
SPF = 99,
NID = 104,
L32 = 105,
(CASE_L(QType::SVCB, R"XXX(16 foo.example.org. alpn=f\\\092oo\092,bar,h2)XXX", R"XXX(16 foo.example.org. alpn=f\\\\oo\\,bar,h2)XXX", "\x00\x10\3foo\7example\3org\x00\x00\x01\x00\x0c\x08\x66\\oo,bar\x02h2"))
// END SVCB draft test vectors
+ (CASE_S(QType::HHIT, "1234abcd", "\xd7\x6d\xf8\x69\xb7\x1d"))
+ (CASE_L(QType::HHIT, "1234 abcd", "1234abcd", "\xd7\x6d\xf8\x69\xb7\x1d"))
+ (CASE_S(QType::BRID, "1234abcd", "\xd7\x6d\xf8\x69\xb7\x1d"))
+ (CASE_L(QType::BRID, "1234 abcd", "1234abcd", "\xd7\x6d\xf8\x69\xb7\x1d"))
+
(CASE_S(QType::SPF, "\"v=spf1 a:mail.rec.test ~all\"", "\x1bv=spf1 a:mail.rec.test ~all"))
(CASE_S(QType::NID, "15 0123:4567:89AB:CDEF", "\x00\x0F\x01\x23\x45\x67\x89\xab\xcd\xef"))