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
}