func Example_verifySignature() {
	pubKeyBytes, err := hex.DecodeString("02a673638cb9587cb68ea08dbef685c" +
		"6f2d2a751a8b3c6f2a7e9a4999e6e4bfaf5")
	if err != nil {
		fmt.Println(err)
		return
	}
	pubKey, err := soterec.ParsePubKey(pubKeyBytes, soterec.S256())
	if err != nil {
		fmt.Println(err)
		return
	}
	sigBytes, err := hex.DecodeString("30450220090ebfb3690a0ff115bb1b38b" +
		"8b323a667b7653454f1bccb06d4bbdca42c2079022100ec95778b51e707" +
		"1cb1205f8bde9af6592fc978b0452dafe599481c46d6b2e479")
	if err != nil {
		fmt.Println(err)
		return
	}
	signature, err := soterec.ParseSignature(sigBytes, soterec.S256())
	if err != nil {
		fmt.Println(err)
		return
	}
	message := "test message"
	messageHash := chainhash.DoubleHashB([]byte(message))
	verified := signature.Verify(messageHash, pubKey)
	fmt.Println("Signature Verified?", verified)
}
This example demonstrates verifying a secp256k1 signature against a public
key that is first parsed from raw bytes.  The signature is also parsed from
raw bytes.
package soterec_test
import (
	"encoding/hex"
	"fmt"
	"github.com/soteria-dag/soterd/soterec"
	"github.com/soteria-dag/soterd/chaincfg/chainhash"
)
func Example_signMessage() {
	pkBytes, err := hex.DecodeString("22a47fa09a223f2aa079edf85a7c2d4f87" +
		"20ee63e502ee2869afab7de234b80c")
	if err != nil {
		fmt.Println(err)
		return
	}
	privKey, pubKey := soterec.PrivKeyFromBytes(soterec.S256(), pkBytes)
	message := "test message"
	messageHash := chainhash.DoubleHashB([]byte(message))
	signature, err := privKey.Sign(messageHash)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Printf("Serialized Signature: %x\n", signature.Serialize())
	verified := signature.Verify(messageHash, pubKey)
	fmt.Printf("Signature Verified? %v\n", verified)
}