add libsecp256k1 wrapper for sign/verify.

This commit is contained in:
fiatjaf
2024-05-29 15:32:49 -03:00
parent 0e93b1173f
commit 427bfc7a4b
4 changed files with 132 additions and 0 deletions

26
libsecp256k1/verify.go Normal file
View File

@@ -0,0 +1,26 @@
package libsecp256k1
import (
"crypto/sha256"
"encoding/hex"
"fmt"
"github.com/nbd-wtf/go-nostr"
)
func (c *Context) CheckSignature(evt *nostr.Event) (bool, error) {
var pk [32]byte
_, err := hex.Decode(pk[:], []byte(evt.PubKey))
if err != nil {
return false, fmt.Errorf("event pubkey '%s' is invalid hex: %w", evt.PubKey, err)
}
var sig [64]byte
_, err = hex.Decode(sig[:], []byte(evt.Sig))
if err != nil {
return false, fmt.Errorf("event signature '%s' is invalid hex: %w", evt.Sig, err)
}
msg := sha256.Sum256(evt.Serialize())
return c.Verify(msg, sig, pk), nil
}