// Sign signs an event with a given privateKey.

func (evt *Event) Sign(privateKey string, signOpts ...schnorr.SignOption) error {

s, err := hex.DecodeString(privateKey)

if err != nil {

return fmt.Errorf("Sign called with invalid private key '%s': %w", privateKey, err)

}

if evt.Tags == nil {

evt.Tags = make(Tags, 0)

}

sk, pk := btcec.PrivKeyFromBytes(s)

pkBytes := pk.SerializeCompressed()

evt.PubKey = hex.EncodeToString(pkBytes[1:])

h := sha256.Sum256(evt.Serialize())

sig, err := schnorr.Sign(sk, h[:], signOpts...)

if err != nil {

return err

}

evt.ID = hex.EncodeToString(h[:])

evt.Sig = hex.EncodeToString(sig.Serialize())

return nil

}

🐶🐾🫡

Reply to this note

Please Login to reply.

Discussion

No replies yet.