From e7a6760789f8d092234f93392194178da365ed1b Mon Sep 17 00:00:00 2001 From: Anthony Stark Date: Fri, 7 Jun 2024 02:02:34 +0530 Subject: [PATCH] Optimised signing and added validation checks --- index.js | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/index.js b/index.js index bcb50ba..dd430e6 100644 --- a/index.js +++ b/index.js @@ -55,23 +55,33 @@ function decodeSignature (buffer) { } function createPrefixedMessage(message, messagePrefix) { - messagePrefix = messagePrefix || '\u0018Bitcoin Signed Message:\n' + if (typeof message !== 'string' && !Buffer.isBuffer(message)) { + throw new Error('Invalid message type'); + } + if (typeof messagePrefix !== 'string' && !Buffer.isBuffer(messagePrefix) && messagePrefix !== undefined) { + throw new Error('Invalid messagePrefix type'); + } + if (!Buffer.isBuffer(messagePrefix)) { - messagePrefix = Buffer.from(messagePrefix, 'utf8') + messagePrefix = Buffer.from((!(messagePrefix = '')) ? messagePrefix : '\u0018Bitcoin Signed Message:\n', 'utf8'); } if (!Buffer.isBuffer(message)) { - message = Buffer.from(message, 'utf8') + message = Buffer.from(message, 'utf8'); } - const messageVISize = varuint.encodingLength(message.length) + + const messageVISize = varuint.encodingLength(message.length); const buffer = Buffer.allocUnsafe( messagePrefix.length + messageVISize + message.length - ) - messagePrefix.copy(buffer, 0) - varuint.encode(message.length, buffer, messagePrefix.length) - message.copy(buffer, messagePrefix.length + messageVISize) + ); + + messagePrefix.copy(buffer, 0); + varuint.encode(message.length, buffer, messagePrefix.length); + message.copy(buffer, messagePrefix.length + messageVISize); + return buffer; } + function magicHash (message, messagePrefix) { return hash256(createPrefixedMessage(message, messagePrefix)); }