UNPKG

@nictool/dns-resource-record

Version:
84 lines (65 loc) 1.64 kB
import RR from '../rr.js' export default class KEY extends RR { constructor(opts) { super(opts) } /****** Resource record specific setters *******/ setFlags(val) { // a 2 octet Flags Field this.is16bitInt('KEY', 'flags', val) this.set('flags', val) } setProtocol(val) { // 1 octet this.is8bitInt('KEY', 'protocol', val) this.set('protocol', val) } setAlgorithm(val) { // 1 octet if (!this.getAlgorithmOptions().has(val)) this.throwHelp(`KEY: algorithm invalid`) this.set('algorithm', val) } getAlgorithmOptions() { return new Map([ [1, 'RSA/MD5'], [2, 'DH'], [3, 'DSA/SHA-1'], [4, 'EC'], [5, 'RSA/SHA-1'], [253, ''], [254, ''], ]) } setPublickey(val) { if (!val) this.throwHelp(`KEY: publickey is required`) this.set('publickey', val) } getDescription() { return 'DNS Public Key' } getRdataFields(arg) { return ['flags', 'protocol', 'algorithm', 'publickey'] } getRFCs() { return [2535, 3445] } getTypeId() { return 25 } /****** IMPORTERS *******/ fromBind(opts) { // test.example.com 3600 IN KEY Flags Protocol Algorithm PublicKey const [owner, ttl, c, type, flags, protocol, algorithm] = opts.bindline.split(/\s+/) return new KEY({ owner, ttl: parseInt(ttl, 10), class: c, type: type, flags: parseInt(flags, 10), protocol: parseInt(protocol, 10), algorithm: parseInt(algorithm, 10), publickey: opts.bindline.split(/\s+/).slice(7).join(' ').trim(), }) } /****** EXPORTERS *******/ }