Presentation format encoding

RFC 4034 specifies the presentation format of the DNSKEY public key,
RRSIG signature, and DS digest fields (base64, base64, and hexadecimal).
With this change, when fields are represented as such, the package will
use the corresponding encoding.
This commit is contained in:
Jack Bates 2019-07-08 09:36:39 -07:00 committed by LittleChest
parent 52e7f4aa40
commit 530d20bb93

View File

@ -894,10 +894,7 @@ rdnskey.encode = function (key, buf, offset) {
if (!offset) offset = 0
const oldOffset = offset
const keydata = key.key
if (!Buffer.isBuffer(keydata)) {
throw new Error('Key must be a Buffer')
}
const keydata = Buffer.from(key.key, 'base64')
offset += 2 // Leave space for length
buf.writeUInt16BE(key.flags, offset)
@ -940,7 +937,7 @@ rdnskey.decode = function (buf, offset) {
rdnskey.decode.bytes = 0
rdnskey.encodingLength = function (key) {
return 6 + Buffer.byteLength(key.key)
return 6 + Buffer.byteLength(key.key, 'base64')
}
const rrrsig = exports.rrsig = {}
@ -950,10 +947,7 @@ rrrsig.encode = function (sig, buf, offset) {
if (!offset) offset = 0
const oldOffset = offset
const signature = sig.signature
if (!Buffer.isBuffer(signature)) {
throw new Error('Signature must be a Buffer')
}
const signature = Buffer.from(sig.signature, 'base64')
offset += 2 // Leave space for length
buf.writeUInt16BE(types.toType(sig.typeCovered), offset)
@ -1016,7 +1010,7 @@ rrrsig.decode.bytes = 0
rrrsig.encodingLength = function (sig) {
return 20 +
name.encodingLength(sig.signersName) +
Buffer.byteLength(sig.signature)
Buffer.byteLength(sig.signature, 'base64')
}
const rrp = exports.rp = {}
@ -1267,10 +1261,7 @@ rds.encode = function (digest, buf, offset) {
if (!offset) offset = 0
const oldOffset = offset
const digestdata = digest.digest
if (!Buffer.isBuffer(digestdata)) {
throw new Error('Digest must be a Buffer')
}
const digestdata = Buffer.from(digest.digest, 'hex')
offset += 2 // Leave space for length
buf.writeUInt16BE(digest.keyTag, offset)
@ -1311,7 +1302,7 @@ rds.decode = function (buf, offset) {
rds.decode.bytes = 0
rds.encodingLength = function (digest) {
return 6 + Buffer.byteLength(digest.digest)
return 6 + Buffer.byteLength(digest.digest, 'hex')
}
const rsshfp = exports.sshfp = {}