@@ -180,6 +180,14 @@ public DnsResourceRecord GetRecord(ResourceRecordInfo info)
180180 result = ResolveTlsaRecord ( info ) ;
181181 break ;
182182
183+ case ResourceRecordType . CDS : //59
184+ result = ResolveCdsRecord ( info ) ;
185+ break ;
186+
187+ case ResourceRecordType . CDNS : //60
188+ result = ResolveCdnsKeyRecord ( info ) ;
189+ break ;
190+
183191 case ResourceRecordType . SPF : // 99
184192 result = ResolveTxtRecord ( info ) ;
185193 break ;
@@ -378,6 +386,26 @@ private TlsaRecord ResolveTlsaRecord(ResourceRecordInfo info)
378386 return new TlsaRecord ( info , certificateUsage , selector , matchingType , certificateAssociationData ) ;
379387 }
380388
389+ private CdsRecord ResolveCdsRecord ( ResourceRecordInfo info )
390+ {
391+ var startIndex = _reader . Index ;
392+ var keyTag = _reader . ReadUInt16NetworkOrder ( ) ;
393+ var algorithm = _reader . ReadByte ( ) ;
394+ var digestType = _reader . ReadByte ( ) ;
395+ var digest = _reader . ReadBytesToEnd ( startIndex , info . RawDataLength ) . ToArray ( ) ;
396+ return new CdsRecord ( info , keyTag , algorithm , digestType , digest ) ;
397+ }
398+
399+ private CdnsKeyRecord ResolveCdnsKeyRecord ( ResourceRecordInfo info )
400+ {
401+ var startIndex = _reader . Index ;
402+ int flags = _reader . ReadUInt16NetworkOrder ( ) ;
403+ var protocol = _reader . ReadByte ( ) ;
404+ var algorithm = _reader . ReadByte ( ) ;
405+ var publicKey = _reader . ReadBytesToEnd ( startIndex , info . RawDataLength ) . ToArray ( ) ;
406+ return new CdnsKeyRecord ( info , flags , protocol , algorithm , publicKey ) ;
407+ }
408+
381409 private UriRecord ResolveUriRecord ( ResourceRecordInfo info )
382410 {
383411 var prio = _reader . ReadUInt16NetworkOrder ( ) ;
0 commit comments