// SignatureScriptAlt creates an input signature script for tx to spend coins sent // from a previous output to the owner of privKey. tx must include all // transaction inputs and outputs, however txin scripts are allowed to be filled // or empty. The returned script is calculated to be used as the idx'th txin // sigscript for tx. subscript is the PkScript of the previous output being used // as the idx'th input. privKey is serialized in the respective format for the // ECDSA type. This format must match the same format used to generate the payment // address, or the script validation will fail. func SignatureScriptAlt(tx *wire.MsgTx, idx int, subscript []byte, hashType SigHashType, privKey chainec.PrivateKey, compress bool, sigType int) ([]byte, error) { sig, err := RawTxInSignatureAlt(tx, idx, subscript, hashType, privKey, sigTypes(sigType)) if err != nil { return nil, err } pubx, puby := privKey.Public() var pub chainec.PublicKey switch sigTypes(sigType) { case edwards: pub = chainec.Edwards.NewPublicKey(pubx, puby) case secSchnorr: pub = chainec.SecSchnorr.NewPublicKey(pubx, puby) } pkData := pub.Serialize() return NewScriptBuilder().AddData(sig).AddData(pkData).Script() }