]> granicus.if.org Git - pdns/commitdiff
Add support for OPENPGPKEY RRTYPE.
authorJames Cloos <cloos@jhcloos.com>
Fri, 13 Mar 2015 22:45:58 +0000 (18:45 -0400)
committermind04 <mind04@monshouwer.org>
Thu, 15 Oct 2015 18:13:22 +0000 (20:13 +0200)
OPENPGPKEY is defined in draft-ietf-dane-openpgpkey.

The IANA has assigned RRTYPE 61.

Its content is a single binary blob, its presentation is a single hex blob.

Thanks to Aki Tuomi, JP Mens and Peter van Dijk for bug reports and insights.

Signed-off-by: James Cloos <cloos@jhcloos.com>
pdns/dnsrecords.cc
pdns/dnsrecords.hh
pdns/qtype.hh

index 2cc0f5a898fb30721ef4a3dab24c028a3d38e6c9..2476c62e5a10b1d30560fb74861b9fa6918e012d 100644 (file)
@@ -284,6 +284,10 @@ boilerplate_conv(TLSA, 52,
                  conv.xfrHexBlob(d_cert, true);
                  )                 
                  
+boilerplate_conv(OPENPGPKEY, 61,
+                 conv.xfrHexBlob(d_cert, true);
+                 )
+
 #undef DS
 DSRecordContent::DSRecordContent() : DNSRecordContent(43) {}
 boilerplate_conv(DS, 43, 
@@ -525,6 +529,7 @@ void reportOtherTypes()
    NSEC3RecordContent::report();
    NSEC3PARAMRecordContent::report();
    TLSARecordContent::report();
+   OPENPGPKEYRecordContent::report();
    DLVRecordContent::report();
    DNSRecordContent::regist(QClass::ANY, QType::TSIG, &TSIGRecordContent::make, &TSIGRecordContent::make, "TSIG");
    DNSRecordContent::regist(QClass::ANY, QType::TKEY, &TKEYRecordContent::make, &TKEYRecordContent::make, "TKEY");
index 2fc59ae91426638f5f8c6e25e032af60c7efe8c2..09dd7ff4abba792efbbd2e6b8d5016acf2f6ef58 100644 (file)
@@ -348,6 +348,15 @@ private:
   string d_cert;
 };
 
+class OPENPGPKEYRecordContent : public DNSRecordContent
+{
+public:
+  includeboilerplate(OPENPGPKEY)
+
+private:
+  string d_cert;
+};
+
 
 class RRSIGRecordContent : public DNSRecordContent
 {
index 7d78374e0bab956e2e8ba28fc99c7c8834a2a50f..c99a63bca37a8a4ed06dadf91c1b2d70d97287c3 100644 (file)
@@ -82,7 +82,7 @@ public:
 #undef DS
   enum typeenum {A=1, NS=2, CNAME=5, SOA=6, MR=9, PTR=12, HINFO=13, MX=15, TXT=16, RP=17, AFSDB=18, SIG=24, KEY=25, AAAA=28, LOC=29, SRV=33, NAPTR=35, KX=36,
                 CERT=37, A6=38, DNAME=39, OPT=41, DS=43, SSHFP=44, IPSECKEY=45, RRSIG=46, NSEC=47, DNSKEY=48, DHCID=49, NSEC3=50, NSEC3PARAM=51,
-     TLSA=52, SPF=99, EUI48=108, EUI64=109, TKEY=249, TSIG=250, IXFR=251, AXFR=252, MAILB=253, MAILA=254, ANY=255, URL=256, MBOXFW=257, CURL=258, ADDR=259, DLV=32769} types;
+     TLSA=52, OPENPGPKEY=61, SPF=99, EUI48=108, EUI64=109, TKEY=249, TSIG=250, IXFR=251, AXFR=252, MAILB=253, MAILA=254, ANY=255, URL=256, MBOXFW=257, CURL=258, ADDR=259, DLV=32769} types;
   typedef pair<string,uint16_t> namenum;
   static vector<namenum> names;
 
@@ -153,6 +153,7 @@ private:
       qtype_insert("NSEC3", 50);
       qtype_insert("NSEC3PARAM", 51);
       qtype_insert("TLSA", 52);
+      qtype_insert("OPENPGPKEY", 61);
       qtype_insert("SPF", 99);
       qtype_insert("EUI48", 108);
       qtype_insert("EUI64", 109);