func ParseDERSignature(sigStr []byte, curve elliptic.Curve) (*Signature, error) {
	sig, err := ec.ParseDERSignature(sigStr, curve)
	return (*Signature)(sig), err
}
ParseDERSignature recovers the signature from a sigStr.
package asymmetric
import (
	"crypto/elliptic"
	"errors"
	"math/big"
	hsp "github.com/SQLess/HashStablePack/marshalhash"
	ec "github.com/btcsuite/btcd/btcec"
	lru "github.com/hashicorp/golang-lru"
	"github.com/SQLess/SQLess/crypto/secp256k1"
	"github.com/SQLess/SQLess/utils"
)
var (
	BypassSignature = false
	bypassS         *Signature
	verifyCache     *lru.Cache
)
func init() {
	priv, _ := ec.NewPrivateKey(ec.S256())
	ss, _ := (*ec.PrivateKey)(priv).Sign(([]byte)("00000000000000000000000000000000"))
	bypassS = (*Signature)(ss)
	verifyCache, _ = lru.New(256)
}
type Signature struct {
	R *big.Int
	S *big.Int
}
func (s *Signature) Serialize() []byte {
	return (*ec.Signature)(s).Serialize()
}
func ParseSignature(sigStr []byte) (*Signature, error) {
	return ParseDERSignature(sigStr, ec.S256())
}