dns-packet-typescript
Version:
An abstract-encoding compliant module for encoding / decoding DNS packets
65 lines • 1.94 kB
JavaScript
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
;