// SignTx signs every input of the given MsgTx by looking up (on the addr // manager) the redeem script for each of them and constructing the signature // script using that and the given raw signatures. // This function must be called with the manager unlocked. func SignTx(msgtx *wire.MsgTx, sigs TxSigs, mgr *waddrmgr.Manager, store *wtxmgr.Store) error { // We use time.Now() here as we're not going to store the new TxRecord // anywhere -- we just need it to pass to store.PreviousPkScripts(). rec, err := wtxmgr.NewTxRecordFromMsgTx(msgtx, time.Now()) if err != nil { return newError(ErrTxSigning, "failed to construct TxRecord for signing", err) } pkScripts, err := store.PreviousPkScripts(rec, nil) if err != nil { return newError(ErrTxSigning, "failed to obtain pkScripts for signing", err) } for i, pkScript := range pkScripts { if err = signMultiSigUTXO(mgr, msgtx, i, pkScript, sigs[i]); err != nil { return err } } return nil }