Skip to content

Commit f55d171

Browse files
perf: Use faster registry verification (#3770)
Bump `snaps-registry` to the latest version which changes `verify` to be async in order to use the global crypto digest API, which is much faster. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Switches registry signature verification to async and bumps @metamask/snaps-registry to v4 for faster verification. > > - **Snaps Controllers**: > - Make `#verifySignature` async; await `verify` and its call in `#update`. > - **Dependencies**: > - Bump `@metamask/snaps-registry` to `^4.0.0` in `packages/snaps-controllers` and `packages/snaps-utils`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 3a83139. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
1 parent e21d3a3 commit f55d171

File tree

4 files changed

+11
-12
lines changed

4 files changed

+11
-12
lines changed

packages/snaps-controllers/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@
9090
"@metamask/phishing-controller": "^15.0.0",
9191
"@metamask/post-message-stream": "^10.0.0",
9292
"@metamask/rpc-errors": "^7.0.3",
93-
"@metamask/snaps-registry": "^3.3.0",
93+
"@metamask/snaps-registry": "^4.0.0",
9494
"@metamask/snaps-rpc-methods": "workspace:^",
9595
"@metamask/snaps-sdk": "workspace:^",
9696
"@metamask/snaps-utils": "workspace:^",

packages/snaps-controllers/src/snaps/registry/json.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ export class JsonSnapsRegistry extends BaseController<
244244
this.#safeFetch(this.#url.signature),
245245
]);
246246

247-
this.#verifySignature(database, signature);
247+
await this.#verifySignature(database, signature);
248248

249249
this.update((state) => {
250250
state.database = JSON.parse(database);
@@ -401,12 +401,11 @@ export class JsonSnapsRegistry extends BaseController<
401401
* @param database - The registry database.
402402
* @param signature - The signature of the registry.
403403
* @throws If the signature is invalid.
404-
* @private
405404
*/
406-
#verifySignature(database: string, signature: string) {
405+
async #verifySignature(database: string, signature: string) {
407406
assert(this.#publicKey, 'No public key provided.');
408407

409-
const valid = verify({
408+
const valid = await verify({
410409
registry: database,
411410
signature: JSON.parse(signature),
412411
publicKey: this.#publicKey,

packages/snaps-utils/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585
"@metamask/permission-controller": "^12.1.1",
8686
"@metamask/rpc-errors": "^7.0.3",
8787
"@metamask/slip44": "^4.3.0",
88-
"@metamask/snaps-registry": "^3.3.0",
88+
"@metamask/snaps-registry": "^4.0.0",
8989
"@metamask/snaps-sdk": "workspace:^",
9090
"@metamask/superstruct": "^3.2.1",
9191
"@metamask/utils": "^11.8.1",

yarn.lock

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4265,7 +4265,7 @@ __metadata:
42654265
"@metamask/phishing-controller": "npm:^15.0.0"
42664266
"@metamask/post-message-stream": "npm:^10.0.0"
42674267
"@metamask/rpc-errors": "npm:^7.0.3"
4268-
"@metamask/snaps-registry": "npm:^3.3.0"
4268+
"@metamask/snaps-registry": "npm:^4.0.0"
42694269
"@metamask/snaps-rpc-methods": "workspace:^"
42704270
"@metamask/snaps-sdk": "workspace:^"
42714271
"@metamask/snaps-utils": "workspace:^"
@@ -4416,15 +4416,15 @@ __metadata:
44164416
languageName: unknown
44174417
linkType: soft
44184418

4419-
"@metamask/snaps-registry@npm:^3.3.0":
4420-
version: 3.3.0
4421-
resolution: "@metamask/snaps-registry@npm:3.3.0"
4419+
"@metamask/snaps-registry@npm:^4.0.0":
4420+
version: 4.0.0
4421+
resolution: "@metamask/snaps-registry@npm:4.0.0"
44224422
dependencies:
44234423
"@metamask/superstruct": "npm:^3.2.1"
44244424
"@metamask/utils": "npm:^11.4.0"
44254425
"@noble/curves": "npm:^1.2.0"
44264426
"@noble/hashes": "npm:^1.3.2"
4427-
checksum: 10/1a53ad150318cbaf703b639a3a831a6ac57f84b2266ac176e6b0d470df31ecf66f0f885256f17a7acae265ada085c904ba97f1e2cb5371e136bf90778ffaed0a
4427+
checksum: 10/62387701d0433402bbe93495f90e24f2df3bdff2b063402b029294fada62c9f389048a2c68a1e51b260cb10cec949dd0c80596bf6295abc4175f5039c486a108
44284428
languageName: node
44294429
linkType: hard
44304430

@@ -4605,7 +4605,7 @@ __metadata:
46054605
"@metamask/post-message-stream": "npm:^10.0.0"
46064606
"@metamask/rpc-errors": "npm:^7.0.3"
46074607
"@metamask/slip44": "npm:^4.3.0"
4608-
"@metamask/snaps-registry": "npm:^3.3.0"
4608+
"@metamask/snaps-registry": "npm:^4.0.0"
46094609
"@metamask/snaps-sdk": "workspace:^"
46104610
"@metamask/superstruct": "npm:^3.2.1"
46114611
"@metamask/utils": "npm:^11.8.1"

0 commit comments

Comments
 (0)