Skip to content
Snippets Groups Projects
Unverified Commit 6a9ec283 authored by Sean Young's avatar Sean Young Committed by GitHub
Browse files

Merge pull request #833 from silasdavis/governance

Check ChainID in Verify!
parents 07746593 face4ace
No related branches found
No related tags found
No related merge requests found
......@@ -184,7 +184,7 @@ func (exe *executor) Execute(txEnv *txs.Envelope) (txe *exec.TxExecution, err er
logger.TraceMsg("Executing transaction", "tx", txEnv.String())
// Verify transaction signature against inputs
err = txEnv.Verify(exe.stateCache)
err = txEnv.Verify(exe.stateCache, exe.blockchain.ChainID())
if err != nil {
return nil, err
}
......
......@@ -77,12 +77,16 @@ func (txEnv *Envelope) Validate() error {
// Verifies the validity of the Signatories' Signatures in the Envelope. The Signatories must
// appear in the same order as the inputs as returned by Tx.GetInputs().
func (txEnv *Envelope) Verify(getter state.AccountGetter) error {
func (txEnv *Envelope) Verify(getter state.AccountGetter, chainID string) error {
err := txEnv.Validate()
if err != nil {
return err
}
errPrefix := fmt.Sprintf("could not verify transaction %X", txEnv.Tx.Hash())
if txEnv.Tx.ChainID != chainID {
return fmt.Errorf("%s: ChainID in envelope is %s but receiving chain has ID %s",
errPrefix, txEnv.Tx.ChainID, chainID)
}
inputs := txEnv.Tx.GetInputs()
if len(inputs) != len(txEnv.Signatories) {
return fmt.Errorf("%s: number of inputs (= %v) should equal number of signatories (= %v)",
......
......@@ -216,5 +216,5 @@ func testTxSignVerify(t *testing.T, tx payload.Payload) {
}
txEnv := Enclose(chainID, tx)
require.NoError(t, txEnv.Sign(signers...), "Error signing tx: %s", debug.Stack())
require.NoError(t, txEnv.Verify(nil), "Error verifying tx: %s", debug.Stack())
require.NoError(t, txEnv.Verify(nil, chainID), "Error verifying tx: %s", debug.Stack())
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment