diff --git a/packages/system/src/event-ext.ts b/packages/system/src/event-ext.ts index f2727147..575c5d53 100644 --- a/packages/system/src/event-ext.ts +++ b/packages/system/src/event-ext.ts @@ -59,6 +59,7 @@ export abstract class EventExt { * @returns True if valid signature */ static verify(e: NostrEvent) { + if ((e.sig?.length ?? 0) < 64) return false; const id = this.createId(e); const result = secp.schnorr.verify(e.sig, id, e.pubkey); return result; @@ -175,6 +176,6 @@ export abstract class EventExt { if (type === EventType.ParameterizedReplaceable) { if (!findTag(ev, "d")) return false; } - return true; + return EventExt.verify(ev); } } diff --git a/packages/system/src/nostr-system.ts b/packages/system/src/nostr-system.ts index 28333822..e741b3aa 100644 --- a/packages/system/src/nostr-system.ts +++ b/packages/system/src/nostr-system.ts @@ -179,7 +179,10 @@ export class NostrSystem extends ExternalStore implements System } #onEvent(sub: string, ev: TaggedNostrEvent) { - if (!EventExt.isValid(ev)) return; + if (!EventExt.isValid(ev)) { + this.#log("Rejecting invalid event %O", ev); + return; + } for (const [, v] of this.Queries) { v.handleEvent(sub, ev);