UNPKG

passbolt-styleguide

Version:

Passbolt styleguide contains common styling assets used by the different sites, plugin, etc.

18 lines (17 loc) 864 B
/** * Use subtle.crypto.digest to generate a SHA-512 hash of the given message * Ref. https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest * * @param {string} message * @thros {Error} if the message is an empty string or not a string * @returns {Promise<string>} */ export async function sha512(message) { if (!message || typeof message !== 'string') { throw new Error('SHA-512 require a non empty string.'); } const msgUint8 = new TextEncoder().encode(message); // encode as (utf-8) Uint8Array const hashBuffer = await crypto.subtle.digest('SHA-512', msgUint8); // hash the message const hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array return hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); // convert bytes to hex string }