diff --git a/package-lock.json b/package-lock.json index 27b2e177..2e1958ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@alexaltea/capstone-js": "^3.0.5", "@astronautlabs/amf": "^0.0.6", "@blu3r4y/lzma": "^2.3.3", + "@noble/hashes": "2.2.0", "@wavesenterprise/crypto-gost-js": "^2.1.0-RC1", "@xmldom/xmldom": "^0.8.13", "argon2-browser": "^1.18.0", @@ -49,7 +50,6 @@ "flat": "^6.0.1", "geodesy": "1.1.3", "handlebars": "^4.7.9", - "hashes-grs": "1.2.0", "highlight.js": "^11.11.1", "ieee754": "^1.2.1", "jimp": "1.6.0", @@ -11028,17 +11028,6 @@ "minimalistic-assert": "^1.0.1" } }, - "node_modules/hashes-grs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hashes-grs/-/hashes-grs-1.2.0.tgz", - "integrity": "sha512-CR6j5GrgbniTkgpuCUgYMkOlppWsDkBIodCspcU+9Nq4nvKfhxQ5dpN6dL22iqiCgDYi+417uknOGcD8ksj/0A==", - "funding": [ - { - "url": "https://www.groestlcoin.org/donations/" - } - ], - "license": "MIT" - }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", diff --git a/package.json b/package.json index 87e77006..1d618057 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,7 @@ "avsc": "^5.7.9", "bcryptjs": "^2.4.3", "bignumber.js": "^9.3.1", - "hashes-grs": "1.2.0", + "@noble/hashes": "2.2.0", "blakejs": "^1.2.1", "bootstrap": "4.6.2", "bootstrap-colorpicker": "^3.4.0", diff --git a/src/core/operations/BLAKE3.mjs b/src/core/operations/BLAKE3.mjs index 52de5967..53f7fdd6 100644 --- a/src/core/operations/BLAKE3.mjs +++ b/src/core/operations/BLAKE3.mjs @@ -7,8 +7,9 @@ import Operation from "../Operation.mjs"; import OperationError from "../errors/OperationError.mjs"; import Utils from "../Utils.mjs"; -import { blake3 } from "hashes-grs/blake3"; -import { bytesToHex } from "hashes-grs/utils"; +import { blake3 } from "@noble/hashes/blake3.js"; +import { bytesToHex } from "@noble/hashes/utils.js"; + /** * BLAKE3 operation */ @@ -47,6 +48,7 @@ class BLAKE3 extends Operation { const key = args[1]; const size = args[0]; const opts = { dkLen: size }; + const inputBytes = new Uint8Array(Utils.strToArrayBuffer(input)); if (key !== "") { const keyBytes = new Uint8Array(Utils.strToArrayBuffer(key)); if (keyBytes.length !== 32) { @@ -54,7 +56,7 @@ class BLAKE3 extends Operation { } opts.key = keyBytes; } - return bytesToHex(blake3(input, opts)); + return bytesToHex(blake3(inputBytes, opts)); } } diff --git a/tests/operations/tests/BLAKE3.mjs b/tests/operations/tests/BLAKE3.mjs index 0672a0f9..237df5dc 100644 --- a/tests/operations/tests/BLAKE3.mjs +++ b/tests/operations/tests/BLAKE3.mjs @@ -60,5 +60,15 @@ TestRegister.addTests([ { "op": "BLAKE3", "args": [16390, ""] } ] + }, + + { + name: "BLAKE3: 16390 - key test", + input: "test", + expectedMatch: /a8d0.{32760}19ccd9b9726b46ae/, + recipeConfig: [ + { "op": "BLAKE3", + "args": [16390, "ThiskeyisexactlythirtytwoBytesLo"] } + ] } ]);