@metamask/utils
Version:
Various JavaScript/TypeScript utilities of wide relevance to the MetaMask codebase
1 lines • 1.31 kB
Source Map (JSON)
{"version":3,"file":"hashing.cjs","sourceRoot":"","sources":["../src/hashing.ts"],"names":[],"mappings":";;;AAAA,iDAA6D;AAE7D;;;;;;;GAOG;AACI,KAAK,UAAU,MAAM,CAAC,KAAiB;IAC5C,8DAA8D;IAC9D,IACE,QAAQ,IAAI,UAAU;QACtB,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ;QACrC,iDAAiD;QACjD,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAChC;QACA,iDAAiD;QACjD,OAAO,IAAI,UAAU,CACnB,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CACxD,CAAC;KACH;IACD,OAAO,IAAA,eAAW,EAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAdD,wBAcC","sourcesContent":["import { sha256 as nobleSha256 } from '@noble/hashes/sha256';\n\n/**\n * Compute a SHA-256 digest for a given byte array.\n *\n * Uses the native crypto implementation and falls back to noble.\n *\n * @param bytes - A byte array.\n * @returns The SHA-256 hash as a byte array.\n */\nexport async function sha256(bytes: Uint8Array): Promise<Uint8Array> {\n // Use crypto.subtle.digest whenever possible as it is faster.\n if (\n 'crypto' in globalThis &&\n typeof globalThis.crypto === 'object' &&\n // eslint-disable-next-line no-restricted-globals\n globalThis.crypto.subtle?.digest\n ) {\n // eslint-disable-next-line no-restricted-globals\n return new Uint8Array(\n await globalThis.crypto.subtle.digest('SHA-256', bytes),\n );\n }\n return nobleSha256(bytes);\n}\n"]}