From 76624a0f23c204e602c7e5fe07329b0f1c869bc3 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Sat, 1 Jan 2022 10:04:36 -0300 Subject: [PATCH] validateEvent() function. --- event.js | 21 +++++++++++++++++++-- package.json | 2 +- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/event.js b/event.js index 6ed048e..ee67648 100644 --- a/event.js +++ b/event.js @@ -18,7 +18,7 @@ export function serializeEvent(evt) { evt.pubkey, evt.created_at, evt.kind, - evt.tags || [], + evt.tags, evt.content ]) } @@ -30,8 +30,25 @@ export function getEventHash(event) { return Buffer.from(eventHash).toString('hex') } -export function verifySignature(event) { +export function validateEvent(event) { if (event.id !== getEventHash(event)) return false + if (typeof event.content !== 'string') return false + if (typeof event.created_at !== 'number') return false + + if (!Array.isArray(event.tags)) return false + for (let i = 0; i < event.tags.length; i++) { + let tag = event.tags[i] + if (!Array.isArray(tag)) return false + for (let j = 0; j < tag.length; j++) { + if (typeof tag[j] === 'object') return false + } + } + + return true +} + +export function verifySignature(event) { + if (!validateEvent(event)) return false return secp256k1.schnorr.verify(event.sig, event.id, event.pubkey) } diff --git a/package.json b/package.json index 6d14c5a..008a34c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nostr-tools", - "version": "0.14.3", + "version": "0.15.0", "description": "Tools for making a Nostr client.", "repository": { "type": "git",