verify.mx raw
1 package event
2
3 import (
4 "bytes"
5
6 "smesh.lol/pkg/nostr/signer/p8k"
7 "smesh.lol/pkg/lol/chk"
8 "smesh.lol/pkg/lol/errorf"
9 "smesh.lol/pkg/lol/log"
10 )
11
12 func (ev *E) Verify() (valid bool, err error) {
13 var keys *p8k.Signer
14 if keys, err = p8k.New(); chk.E(err) {
15 return
16 }
17 if err = keys.InitPub(ev.Pubkey); chk.E(err) {
18 return
19 }
20 if valid, err = keys.Verify(ev.ID, ev.Sig); chk.T(err) {
21 id := ev.GetIDBytes()
22 if !bytes.Equal(id, ev.ID) {
23 log.E.Ln([]byte("event ID incorrect"))
24 ev.ID = id
25 err = nil
26 if valid, err = keys.Verify(ev.ID, ev.Sig); chk.E(err) {
27 return
28 }
29 err = errorf.W([]byte("event ID incorrect but signature is valid on correct ID"))
30 }
31 return
32 }
33 return
34 }
35