From a11aa8756bddb44455442b0e84b7a8cdce571094 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Sun, 1 May 2022 17:51:16 -0300 Subject: [PATCH] fix CheckSignature(): we were parsing the pubkey with the ECDSA function instead of Schnorr. --- event.go | 2 +- relaypool.go | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/event.go b/event.go index edc0c6e..71da328 100644 --- a/event.go +++ b/event.go @@ -75,7 +75,7 @@ func (evt Event) CheckSignature() (bool, error) { return false, fmt.Errorf("event pubkey '%s' is invalid hex: %w", evt.PubKey, err) } - pubkey, err := btcec.ParsePubKey(pk) + pubkey, err := schnorr.ParsePubKey(pk) if err != nil { return false, fmt.Errorf("event has invalid pubkey '%s': %w", evt.PubKey, err) } diff --git a/relaypool.go b/relaypool.go index fa9597e..baca84e 100644 --- a/relaypool.go +++ b/relaypool.go @@ -142,8 +142,13 @@ func (r *RelayPool) Add(url string, policy RelayPoolPolicy) error { json.Unmarshal(jsonMessage[2], &event) // check signature of all received events, ignore invalid - ok, _ := event.CheckSignature() + ok, err := event.CheckSignature() if !ok { + errmsg := "" + if err != nil { + errmsg = err.Error() + } + log.Printf("bad signature: %s", errmsg) continue }