diff --git a/src/core/operations/BLAKE2b.mjs b/src/core/operations/BLAKE2b.mjs index 6218f7f08..22b7f06c4 100644 --- a/src/core/operations/BLAKE2b.mjs +++ b/src/core/operations/BLAKE2b.mjs @@ -32,8 +32,10 @@ class BLAKE2b extends Operation { this.args = [ { "name": "Size", - "type": "option", - "value": ["512", "384", "256", "160", "128"] + "type": "number", + "value": 256, + "min": 8, + "max": 512 }, { "name": "Output Encoding", "type": "option", @@ -61,6 +63,10 @@ class BLAKE2b extends Operation { throw new OperationError(["Key cannot be greater than 64 bytes", "It is currently " + key.length + " bytes."].join("\n")); } + if (outSize % 8 !== 0 || outSize < 8 || outSize > 512) { + throw new OperationError("Size has to be between 8 to 512 and multiple of 8."); + } + input = new Uint8Array(input); switch (outFormat) { case "Hex": diff --git a/src/core/operations/BLAKE2s.mjs b/src/core/operations/BLAKE2s.mjs index 8f84e0414..48c41a6c4 100644 --- a/src/core/operations/BLAKE2s.mjs +++ b/src/core/operations/BLAKE2s.mjs @@ -32,8 +32,10 @@ class BLAKE2s extends Operation { this.args = [ { "name": "Size", - "type": "option", - "value": ["256", "160", "128"] + "type": "number", + "value": 256, + "min": 8, + "max": 256 }, { "name": "Output Encoding", "type": "option", @@ -62,6 +64,10 @@ class BLAKE2s extends Operation { throw new OperationError(["Key cannot be greater than 32 bytes", "It is currently " + key.length + " bytes."].join("\n")); } + if (outSize % 8 !== 0 || outSize < 8 || outSize > 256) { + throw new OperationError("Size has to be between 8 to 256 and multiple of 8."); + } + input = new Uint8Array(input); switch (outFormat) { case "Hex": diff --git a/tests/operations/tests/BLAKE2b.mjs b/tests/operations/tests/BLAKE2b.mjs index 088b1078c..d25ef0b0b 100644 --- a/tests/operations/tests/BLAKE2b.mjs +++ b/tests/operations/tests/BLAKE2b.mjs @@ -52,5 +52,23 @@ TestRegister.addTests([ { "op": "BLAKE2b", "args": ["128", "Hex", {string: "pseudorandom key", option: "UTF8"}] } ] + }, + { + name: "BLAKE2b: 224 - Hello World", + input: "Hello World", + expectedOutput: "19790463ef4ad09bdb724e3a6550c640593d4870f6e192ac8147f35d", + recipeConfig: [ + { "op": "BLAKE2b", + "args": ["224", "Hex", {string: "", option: "UTF8"}] } + ] + }, + { + name: "BLAKE2b: 192 - Hello World", + input: "Hello World", + expectedOutput: "317d59b18418b8a12623faf5ebc2072e5e70ac4b8ba6d33a", + recipeConfig: [ + { "op": "BLAKE2b", + "args": ["192", "Hex", {string: "", option: "UTF8"}] } + ] } ]); diff --git a/tests/operations/tests/BLAKE2s.mjs b/tests/operations/tests/BLAKE2s.mjs index fe978d248..7d01a9deb 100755 --- a/tests/operations/tests/BLAKE2s.mjs +++ b/tests/operations/tests/BLAKE2s.mjs @@ -43,5 +43,23 @@ TestRegister.addTests([ { "op": "BLAKE2s", "args": ["128", "Hex", {string: "", option: "UTF8"}] } ] + }, + { + name: "BLAKE2s: 224 - Hello World", + input: "Hello World", + expectedOutput: "8a74d9e5c5de9c8a0cb1c292f65808831717e422302f3d58853d58ed", + recipeConfig: [ + { "op": "BLAKE2s", + "args": ["224", "Hex", {string: "", option: "UTF8"}] } + ] + }, + { + name: "BLAKE2s: 192 - Hello World", + input: "Hello World", + expectedOutput: "cc181c0f167a1727308d894c6182bbe6c4865698e7f7bfac", + recipeConfig: [ + { "op": "BLAKE2s", + "args": ["192", "Hex", {string: "", option: "UTF8"}] } + ] } ]);