code: func VerifySignature(pubkey, hash, signature []byte) bool {
  	if len(signature) != 64 {
  		return false
  	}
  	sig := &btcec.Signature{R: new(big.Int).SetBytes(signature[:32]), S: new(big.Int).SetBytes(signature[32:])}
  	key, err := btcec.ParsePubKey(pubkey, btcec.S256())
  	if err != nil {
  		return false
  	}
  	// Reject malleable signatures. libsecp256k1 does this check but btcec doesn't.
  	if sig.S.Cmp(secp256k1halfN) > 0 {
  		return false
  	}
  	return sig.Verify(hash, key)
  }
docs: // VerifySignature checks that the given public key created signature over hash.
  // The public key should be in compressed (33 bytes) or uncompressed (65 bytes) format.
  // The signature should have the 64 byte [R || S] format.