Spaces:
Sleeping
Sleeping
const sha256 = async (arrayBuffer) => { | |
// Use the browser's builtin SHA-256 if possible. | |
// This API might not exist if we're not a secure context or in versions of Node that aren't even that old, | |
// so we also have a pure JS fallback. | |
if (typeof crypto === 'object' && crypto.subtle && crypto.subtle.digest) { | |
const rawData = await crypto.subtle.digest('SHA-256', arrayBuffer); | |
return Array.from(new Uint8Array(rawData)).map(b => b.toString(16).padStart(2, '0')).join(''); | |
} | |
// The checksum will be performed on the main thread and may take a while. | |
const SHA256 = (await import(/* webpackChunkName: "sha256" */ 'sha.js/sha256')).default; | |
const hash = new SHA256(); | |
// new Uint8Array() is necessary to make this work in Node | |
hash.update(new Uint8Array(arrayBuffer)); | |
return hash.digest('hex'); | |
}; | |
export default sha256; | |