23 lines
No EOL
1.1 KiB
JavaScript
23 lines
No EOL
1.1 KiB
JavaScript
|
|
export default class hash {
|
|
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`]);
|
|
};
|
|
} |