UNPKG

dns-packet-typescript

Version:

An abstract-encoding compliant module for encoding / decoding DNS packets

65 lines 1.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.encodingLength = exports.decode = exports.encode = exports.SECURE_ENTRYPOINT = exports.ZONE_KEY = exports.PROTOCOL_DNSSEC = void 0; exports.PROTOCOL_DNSSEC = 3; exports.ZONE_KEY = 0x80; exports.SECURE_ENTRYPOINT = 0x8000; function encode(key, buf, offset) { if (offset === void 0) { offset = 0; } if (!buf) { buf = Buffer.allocUnsafe(encodingLength(key)); } if (!offset) { offset = 0; } var oldOffset = offset; var keydata = key.key; if (!Buffer.isBuffer(keydata)) { throw new Error('Key must be a Buffer'); } offset += 2; // Leave space for length buf.writeUInt16BE(key.flags, offset); offset += 2; buf.writeUInt8(exports.PROTOCOL_DNSSEC, offset); offset += 1; buf.writeUInt8(key.algorithm, offset); offset += 1; keydata.copy(buf, offset, 0, keydata.length); offset += keydata.length; encode.bytes = offset - oldOffset; buf.writeUInt16BE(encode.bytes - 2, oldOffset); return buf; } exports.encode = encode; ; encode.bytes = 0; function decode(buf, offset) { if (offset === void 0) { offset = 0; } if (!offset) { offset = 0; } var oldOffset = offset; var key = {}; var length = buf.readUInt16BE(offset); offset += 2; key.flags = buf.readUInt16BE(offset); offset += 2; if (buf.readUInt8(offset) !== exports.PROTOCOL_DNSSEC) { throw new Error('Protocol must be 3'); } offset += 1; key.algorithm = buf.readUInt8(offset); offset += 1; key.key = buf.slice(offset, oldOffset + length + 2); offset += key.key.length; decode.bytes = offset - oldOffset; return key; } exports.decode = decode; decode.bytes = 0; function encodingLength(key) { return 6 + Buffer.byteLength(key.key); } exports.encodingLength = encodingLength; ; //# sourceMappingURL=rdnskey.js.map