public static IEnumerable <object[]> GetMultiSigOutOfRangeExCases() { var rdm = new MockSerializableRedeemScript(RedeemScriptType.MultiSig, new byte[1], 0); var tx = new MockTxIdTx("") { TxInList = new TxIn[1] }; var zero = new PushDataOp(OP._0); var one = new PushDataOp(OP._1); var two = new PushDataOp(OP._2); var neg = new PushDataOp(OP.Negative1); var chsig = new CheckMultiSigOp(); yield return(new object[] { Helper.ShortSig1, rdm, tx, -1, "Invalid input index." }); yield return(new object[] { Helper.ShortSig1, rdm, tx, 1, "Invalid input index." }); yield return(new object[] { Helper.ShortSig1, new MockSerializableRedeemScript(RedeemScriptType.MultiSig, new byte[Constants.MaxScriptItemLength + 1], 0), tx, 0, "Redeem script is bigger than allowed length." }); yield return(new object[] { Helper.ShortSig1, new MockEvaluatableRedeemScript(RedeemScriptType.MultiSig, new IOperation[] { neg }, 0), tx, 0, "M can not be negative." }); yield return(new object[] { Helper.ShortSig1, new MockEvaluatableRedeemScript(RedeemScriptType.MultiSig, new IOperation[] { zero }, 0), tx, 0, "M value zero is not allowed" }); yield return(new object[] { Helper.ShortSig1, new MockEvaluatableRedeemScript(RedeemScriptType.MultiSig, new IOperation[] { one, neg, chsig }, 0), tx, 0, "N can not be negative." }); yield return(new object[] { Helper.ShortSig1, new MockEvaluatableRedeemScript(RedeemScriptType.MultiSig, new IOperation[] { one, zero, chsig }, 0), tx, 0, "N value zero is not allowed" }); yield return(new object[] { Helper.ShortSig1, new MockEvaluatableRedeemScript(RedeemScriptType.MultiSig, new IOperation[] { two, one, chsig }, 0), tx, 0, "M can not be bigger than N." }); }
public static IEnumerable <object[]> GetMultiSigNullExCases() { var rdm = new MockSerializableRedeemScript(RedeemScriptType.MultiSig, new byte[1], 0); var tx = new MockTxIdTx("") { TxInList = new TxIn[1] }; yield return(new object[] { null, rdm, tx, 0, "Signature can not be null." }); yield return(new object[] { Helper.ShortSig1, null, tx, 0, "Redeem script can not be null." }); yield return(new object[] { Helper.ShortSig1, rdm, null, 0, "Transaction can not be null." }); }
public static IEnumerable <object[]> GetMultiSigArgExCases() { var tx = new MockTxIdTx("") { TxInList = new TxIn[1] }; PushDataOp badNum = new PushDataOp(); badNum.TryRead(new FastStreamReader(new byte[] { 1, 0 }), out _); var two = new PushDataOp(OP._2); var chsig = new CheckMultiSigOp(); yield return(new object[] { Helper.ShortSig1, new MockSerializableRedeemScript(RedeemScriptType.Empty, new byte[0], 0), tx, 0, "Invalid redeem script type." }); yield return(new object[] { Helper.ShortSig1, new MockEvaluatableRedeemScript(RedeemScriptType.MultiSig, null, 0), tx, 0, "Can not evaluate redeem script: Foo" }); yield return(new object[] { Helper.ShortSig1, new MockEvaluatableRedeemScript(RedeemScriptType.MultiSig, new IOperation[] { badNum }, 0), tx, 0, "Invalid m" }); yield return(new object[] { Helper.ShortSig1, new MockEvaluatableRedeemScript(RedeemScriptType.MultiSig, new IOperation[] { two, badNum, chsig }, 0), tx, 0, "Invalid n" }); }