package event import ( "bytes" "smesh.lol/pkg/nostr/signer/p8k" "smesh.lol/pkg/lol/chk" "smesh.lol/pkg/lol/errorf" "smesh.lol/pkg/lol/log" ) func (ev *E) Verify() (valid bool, err error) { var keys *p8k.Signer if keys, err = p8k.New(); chk.E(err) { return } if err = keys.InitPub(ev.Pubkey); chk.E(err) { return } if valid, err = keys.Verify(ev.ID, ev.Sig); chk.T(err) { id := ev.GetIDBytes() if !bytes.Equal(id, ev.ID) { log.E.Ln([]byte("event ID incorrect")) ev.ID = id err = nil if valid, err = keys.Verify(ev.ID, ev.Sig); chk.E(err) { return } err = errorf.W([]byte("event ID incorrect but signature is valid on correct ID")) } return } return }