feat: schnorr check in wasm

This commit is contained in:
2023-12-12 22:46:36 +00:00
parent 9431b294c6
commit 8d6cdb3868
10 changed files with 97 additions and 4 deletions

View File

@ -199,9 +199,12 @@ export class NostrSystem extends EventEmitter<NostrSystemEvents> implements Syst
this.#log("Rejecting invalid event %O", ev);
return;
}
if (this.checkSigs && !EventExt.verify(ev)) {
this.#log("Invalid sig %O", ev);
return;
if (this.checkSigs) {
const id = EventExt.createId(ev);
if (!this.#queryOptimizer.schnorrVerify(id, ev.sig, ev.pubkey)) {
this.#log("Invalid sig %O", ev);
return;
}
}
for (const [, v] of this.Queries) {

View File

@ -1,3 +1,4 @@
import { schnorr } from "@noble/curves/secp256k1";
import { ReqFilter } from "../nostr";
import { expandFilter } from "./request-expander";
import { flatMerge, mergeSimilar } from "./request-merger";
@ -24,6 +25,7 @@ export interface QueryOptimizer {
getDiff(prev: Array<ReqFilter>, next: Array<ReqFilter>): Array<FlatReqFilter>;
flatMerge(all: Array<FlatReqFilter>): Array<ReqFilter>;
compress(all: Array<ReqFilter>): Array<ReqFilter>;
schnorrVerify(hash: string, sig: string, pubkey: string): boolean;
}
export const DefaultQueryOptimizer = {
@ -43,4 +45,7 @@ export const DefaultQueryOptimizer = {
compress: (all: Array<ReqFilter>) => {
return mergeSimilar(all);
},
schnorrVerify: (hash, sig, pubkey) => {
return schnorr.verify(sig, hash, pubkey);
},
} as QueryOptimizer;