From 02cf92d6dbfc6618d9efa9b4dfee81c7c075dbb3 Mon Sep 17 00:00:00 2001 From: Frederik Bolding Date: Thu, 18 Dec 2025 10:03:03 +0100 Subject: [PATCH] chore: Use SHA-256 utility --- packages/snaps-utils/package.json | 1 - packages/snaps-utils/src/checksum.test.ts | 26 ----------------------- packages/snaps-utils/src/checksum.ts | 14 ++---------- yarn.lock | 1 - 4 files changed, 2 insertions(+), 40 deletions(-) diff --git a/packages/snaps-utils/package.json b/packages/snaps-utils/package.json index 78681f5d4a..79ac236dbc 100644 --- a/packages/snaps-utils/package.json +++ b/packages/snaps-utils/package.json @@ -89,7 +89,6 @@ "@metamask/snaps-sdk": "workspace:^", "@metamask/superstruct": "^3.2.1", "@metamask/utils": "^11.9.0", - "@noble/hashes": "^1.7.1", "@scure/base": "^1.1.1", "chalk": "^4.1.2", "cron-parser": "^4.5.0", diff --git a/packages/snaps-utils/src/checksum.test.ts b/packages/snaps-utils/src/checksum.test.ts index 8db6875a4b..8d0d94069e 100644 --- a/packages/snaps-utils/src/checksum.test.ts +++ b/packages/snaps-utils/src/checksum.test.ts @@ -1,6 +1,4 @@ -import * as nobleHashes from '@noble/hashes/sha256'; import { base64 } from '@scure/base'; -import { webcrypto } from 'crypto'; import { checksum, checksumFiles } from './checksum'; import { VirtualFile } from './virtual-file'; @@ -37,30 +35,6 @@ describe('checksum', () => { expect(base64.encode(await checksum(''))).toBe(EMPTY_SHA256); expect(base64.encode(await checksum(new Uint8Array()))).toBe(EMPTY_SHA256); }); - - it('uses crypto.subtle when it is available', async () => { - const cryptoSpy = jest.spyOn(webcrypto.subtle, 'digest'); - - Object.defineProperty(globalThis, 'crypto', { - value: webcrypto, - writable: true, - }); - - expect(base64.encode(await checksum(FOO_BAR_UINT8))).toBe(FOO_BAR_SHA256); - expect(cryptoSpy).toHaveBeenCalled(); - }); - - it('uses noble-hashes when crypto.subtle is unavailable', async () => { - const nobleSpy = jest.spyOn(nobleHashes, 'sha256'); - - Object.defineProperty(globalThis, 'crypto', { - value: undefined, - writable: true, - }); - - expect(base64.encode(await checksum(FOO_BAR_UINT8))).toBe(FOO_BAR_SHA256); - expect(nobleSpy).toHaveBeenCalled(); - }); }); describe('checkumFiles', () => { diff --git a/packages/snaps-utils/src/checksum.ts b/packages/snaps-utils/src/checksum.ts index 86be4dac42..b58e3733e3 100644 --- a/packages/snaps-utils/src/checksum.ts +++ b/packages/snaps-utils/src/checksum.ts @@ -1,5 +1,4 @@ -import { assert, concatBytes } from '@metamask/utils'; -import { sha256 } from '@noble/hashes/sha256'; +import { assert, concatBytes, sha256 } from '@metamask/utils'; import { getBytes } from './bytes'; import type { VirtualFile } from './virtual-file'; @@ -13,16 +12,7 @@ import type { VirtualFile } from './virtual-file'; export async function checksum( bytes: VirtualFile | Uint8Array | string, ): Promise { - const value = getBytes(bytes); - // Use crypto.subtle.digest whenever possible as it is faster. - if ( - 'crypto' in globalThis && - typeof globalThis.crypto === 'object' && - crypto.subtle?.digest - ) { - return new Uint8Array(await crypto.subtle.digest('SHA-256', value)); - } - return sha256(value); + return await sha256(getBytes(bytes)); } /** diff --git a/yarn.lock b/yarn.lock index c203bded58..78ee57c4ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4527,7 +4527,6 @@ __metadata: "@metamask/snaps-sdk": "workspace:^" "@metamask/superstruct": "npm:^3.2.1" "@metamask/utils": "npm:^11.9.0" - "@noble/hashes": "npm:^1.7.1" "@scure/base": "npm:^1.1.1" "@swc/core": "npm:1.11.31" "@swc/jest": "npm:^0.2.38"