Esempio n. 1
0
        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."
            });
        }
Esempio n. 2
0
        public override bool Run(IOpData opData, out string error)
        {
            IOperation cms = new CheckMultiSigOp();
            IOperation ver = new VerifyOp();

            if (!cms.Run(opData, out error))
            {
                return(false);
            }

            return(ver.Run(opData, out error));
        }
Esempio n. 3
0
        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"
            });
        }