diff --git a/scripts/utilities/hash.js b/scripts/utilities/hash.js new file mode 100644 index 0000000..9dbad2d --- /dev/null +++ b/scripts/utilities/hash.js @@ -0,0 +1,24 @@ +class HashTools { + static async digest (DATA, OPTIONS) { + DATA = {"raw": DATA}; + DATA[`hashed`] = await(crypto.subtle.digest(((OPTIONS != null && (typeof OPTIONS).includes(`obj`) && !Array.isArray(OPTIONS)) ? OPTIONS[`digestion`] : false) ? OPTIONS[`digestion`] : "SHA-512", (new TextEncoder()).encode(DATA[`raw`]))); + + if ((OPTIONS != null && (typeof OPTIONS).includes(`obj`) && !Array.isArray(OPTIONS)) ? OPTIONS[`output`] : false) { + switch (OPTIONS[`output`]) { + case `Uint8Array`: + DATA[`converted`] = new Uint8Array(DATA[`hashed`]); + break; + case `Array`: + DATA[`converted`] = Array.from(new Uint8Array(DATA[`hashed`])); + break; + case `Number`: + DATA[`converted`] = parseInt((Array.from(new Uint8Array(DATA[`hashed`]))).join()); + break; + }; + } + + return ((DATA[`converted`]) ? DATA[`converted`] : DATA[`hashed`]); + }; +} + +module.exports = {HashTools}; \ No newline at end of file