From c312090cd6839475feba07679798be90cbe1b472 Mon Sep 17 00:00:00 2001 From: Louis Chemineau Date: Thu, 9 Jan 2025 16:41:41 +0100 Subject: [PATCH] feat: Validate `keyChecksum` length Signed-off-by: Louis Chemineau --- src/services/metadataUtils.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/services/metadataUtils.ts b/src/services/metadataUtils.ts index 90d36e7f..594144f9 100644 --- a/src/services/metadataUtils.ts +++ b/src/services/metadataUtils.ts @@ -22,14 +22,21 @@ export async function decryptMetadataInfo(metadata: Metadata, metadataPrivateKey { iv: base64ToBuffer(iv) }, ) - const metadataInfo = JSON.parse(await unzipBuffer(compressedMetadataInfo)) + const metadataInfo = JSON.parse(await unzipBuffer(compressedMetadataInfo)) as MetadataInfo - verifyMetadataKey(metadataInfo, metadataPrivateKey) + validateKeyChecksums(metadataInfo, metadata) + validateMetadataKey(metadataInfo, metadataPrivateKey) return metadataInfo } -export async function verifyMetadataKey(metadataInfo: MetadataInfo, metadataPrivateKey: CryptoKey): Promise { +function validateKeyChecksums(metadataInfo: MetadataInfo, metadata: Metadata): void { + if (metadataInfo.keyChecksums?.length !== metadata.users?.length) { + throw new Error('Key checksums length does not match users length') + } +} + +export async function validateMetadataKey(metadataInfo: MetadataInfo, metadataPrivateKey: CryptoKey): Promise { if (metadataInfo.keyChecksums === undefined) { return }