mirror of
https://github.com/nbd-wtf/go-nostr.git
synced 2025-03-18 13:53:03 +01:00
27 lines
575 B
Go
27 lines
575 B
Go
package libsecp256k1
|
|
|
|
import (
|
|
"crypto/sha256"
|
|
"encoding/hex"
|
|
"fmt"
|
|
|
|
"github.com/nbd-wtf/go-nostr"
|
|
)
|
|
|
|
func 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 Verify(msg, sig, pk), nil
|
|
}
|