code: func Sign(hash []byte, prv *ecdsa.PrivateKey) (sig []byte, err error) {
  	if len(hash) != 32 {
  		return nil, fmt.Errorf("hash is required to be exactly 32 bytes (%d)", len(hash))
  	}
  	seckey := math.PaddedBigBytes(prv.D, prv.Params().BitSize/8)
  	defer zeroBytes(seckey)
  	return secp256k1.Sign(hash, seckey)
  }
docs: // Sign calculates an ECDSA signature.
  //
  // This function is susceptible to chosen plaintext attacks that can leak
  // information about the private key that is used for signing. Callers must
  // be aware that the given hash cannot be chosen by an adversery. Common
  // solution is to hash any input before calculating the signature.
  //
  // The produced signature is in the [R || S || V] format where V is 0 or 1.