From a0830e8e8281cb4f759bd34f6d4a68d2ea6dc3e5 Mon Sep 17 00:00:00 2001 From: rpaezbas Date: Wed, 25 Aug 2021 10:00:23 +0200 Subject: [PATCH 1/2] replaced sodium-native with sha256-wasm --- lib/message.js | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/message.js b/lib/message.js index f9b155e..d98e716 100644 --- a/lib/message.js +++ b/lib/message.js @@ -1,7 +1,7 @@ var assert = require('nanoassert') -var sodium = require('sodium-native') var int = require('./int.js') var command = require('./command.js') +const sha256 = require('sha256-wasm') module.exports = { encode: encode, @@ -36,9 +36,9 @@ function encode (payload, inputCommand, network, buf, offset) { int.encode(payload.byteLength, buf, offset, 32) offset += int.encode.bytes - var doubleSHA = Buffer.alloc(sodium.crypto_hash_sha256_BYTES) - sodium.crypto_hash_sha256(payload, doubleSHA) - sodium.crypto_hash_sha256(doubleSHA, doubleSHA) + var doubleSHA = Buffer.alloc(32) + payload = Buffer.from(sha256().update(doubleSHA).digest()) + doubleSHA = Buffer.from(sha256().update(doubleSHA).digest()) buf.set(doubleSHA.subarry(0, 4), offset) buf.set(payload, 24) @@ -66,9 +66,9 @@ function decode (buf, offset) { var payload = buf.subarray(offset) - var checkedSum = Buffer.alloc(sodium.crypto_hash_sha256_BYTES) - sodium.crypto_hash_sha256(payload, checkedSum) - sodium.crypto_hash_sha256(checkedSum, checkedSum) + var checkedSum = Buffer.alloc(32) + payload = Buffer.from(sha256().update(checkedSum).digest()) + checkedSum = Buffer.from(sha256().update(checkedSum).digest()) assert(Buffer.compare(checkSum, checkedSum) === 0, 'invalid checksum') payload = payload.toString() diff --git a/package.json b/package.json index 92a85eb..139dc8b 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "biguintle": "^1.0.1", "buffer-reverse": "^1.0.1", "nanoassert": "^2.0.0", - "sodium-native": "^2.4.2" + "sha256-wasm": "^2.2.1" }, "devDependencies": { "standard": "^12.0.1", From 15b902b639bf1adfedb4f8e15eed6d9429113db5 Mon Sep 17 00:00:00 2001 From: rpaezbas Date: Wed, 25 Aug 2021 10:47:37 +0200 Subject: [PATCH 2/2] fixed-message-encode-and-decode --- lib/message.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/message.js b/lib/message.js index d98e716..2c2d43b 100644 --- a/lib/message.js +++ b/lib/message.js @@ -1,7 +1,7 @@ var assert = require('nanoassert') var int = require('./int.js') var command = require('./command.js') -const sha256 = require('sha256-wasm') +const wasm-sha256 = require('sha256-wasm') module.exports = { encode: encode, @@ -37,8 +37,8 @@ function encode (payload, inputCommand, network, buf, offset) { offset += int.encode.bytes var doubleSHA = Buffer.alloc(32) - payload = Buffer.from(sha256().update(doubleSHA).digest()) - doubleSHA = Buffer.from(sha256().update(doubleSHA).digest()) + sha256().update(payload).digest(doubleSha) + sha256().update(doubleSha).digest(doubleSha) buf.set(doubleSHA.subarry(0, 4), offset) buf.set(payload, 24) @@ -67,8 +67,8 @@ function decode (buf, offset) { var payload = buf.subarray(offset) var checkedSum = Buffer.alloc(32) - payload = Buffer.from(sha256().update(checkedSum).digest()) - checkedSum = Buffer.from(sha256().update(checkedSum).digest()) + sha256().update(payload).digest(checkedSum) + sha256().update(checkedSum).digest(checkedSum) assert(Buffer.compare(checkSum, checkedSum) === 0, 'invalid checksum') payload = payload.toString() @@ -90,3 +90,7 @@ function encodingLength (payload) { function getKeyByValue (object, value) { return Object.keys(object).find(key => object[key] === value) } + +function sha256 (out, in) { + return wasm-sha256().update(in).digest(out) +}