public void Run_WrongSigsTest()
        {
            MockOpData data = new MockOpData(FuncCallName.Pop, FuncCallName.PopIndex,
                                             FuncCallName.PopCount, FuncCallName.PopCount,
                                             FuncCallName.Pop, FuncCallName.PushBool)
            {
                _itemCount       = 8,
                _opCountToReturn = 5,
                popData          = new byte[][] { OpTestCaseHelper.b7, OpTestCaseHelper.num3 },
                popIndexData     = new Dictionary <int, byte[]> {
                    { 3, OpTestCaseHelper.num2 }
                },
                popCountData = new byte[][][]
                {
                    new byte[][]
                    {
                        KeyHelper.Pub1CompBytes, KeyHelper.Pub2CompBytes, KeyHelper.Pub3CompBytes,
                    },
                    new byte[][]
                    {
                        Helper.ShortSig1Bytes, Helper.ShortSig2Bytes,
                    }
                },
                expectedSigs            = new byte[][] { Helper.ShortSig1Bytes, Helper.ShortSig2Bytes },
                expectedPubkeys         = new byte[][] { KeyHelper.Pub1CompBytes, KeyHelper.Pub2CompBytes, KeyHelper.Pub3CompBytes },
                expectedMultiSigGarbage = OpTestCaseHelper.b7,
                sigVerificationSuccess  = false,
                pushBool = false
            };

            OpTestCaseHelper.RunTest <CheckMultiSigOp>(data, OP.CheckMultiSig);
            Assert.Equal(8, data.OpCount);
        }
        public void Run_WrongSigsTest()
        {
            MockOpData data = new MockOpData(FuncCallName.Pop, FuncCallName.PopIndex,
                                             FuncCallName.PopCount, FuncCallName.PopCount,
                                             FuncCallName.Pop)
            {
                _itemCount       = 8,
                _opCountToReturn = 0,
                popData          = new byte[][] { OpTestCaseHelper.b7, OpTestCaseHelper.num3 },
                popIndexData     = new Dictionary <int, byte[]> {
                    { 3, OpTestCaseHelper.num2 }
                },
                popCountData = new byte[][][]
                {
                    new byte[][]
                    {
                        KeyHelper.Pub1CompBytes, KeyHelper.Pub2CompBytes, KeyHelper.Pub3CompBytes
                    },
                    new byte[][]
                    {
                        Helper.ShortSig1Bytes, Helper.ShortSig2Bytes
                    }
                },
                expectedSigs            = new byte[][] { Helper.ShortSig1Bytes, Helper.ShortSig2Bytes },
                expectedPubkeys         = new byte[][] { KeyHelper.Pub1CompBytes, KeyHelper.Pub2CompBytes, KeyHelper.Pub3CompBytes },
                expectedMultiSigGarbage = OpTestCaseHelper.b7,
                sigVerificationSuccess  = false,
            };

            OpTestCaseHelper.RunFailTest <CheckMultiSigVerifyOp>(data, "Signature verification failed.");
        }
Пример #3
0
        public void Run_NoBip65Test()
        {
            MockOpData data = new MockOpData()
            {
                bip65 = false
            };

            OpTestCaseHelper.RunTest <CheckLocktimeVerifyOp>(data, OP.CheckLocktimeVerify);
        }
Пример #4
0
        public void Run_VerifyFailTest()
        {
            MockOpData data = new MockOpData(FuncCallName.Pop)
            {
                _itemCount = 1,
            };

            OpTestCaseHelper.RunFailTest <EqualVerifyOp>(data, Err.OpNotEnoughItems);
        }
        public void Run_NoBip112Test()
        {
            MockOpData data = new MockOpData()
            {
                bip112 = false
            };

            OpTestCaseHelper.RunTest <CheckSequenceVerifyOp>(data, OP.CheckSequenceVerify);
        }
        public void Run_ErrorTest()
        {
            MockOpData data = new MockOpData()
            {
                _itemCount = 1,
            };

            OpTestCaseHelper.RunFailTest <CheckMultiSigVerifyOp>(data, Err.OpNotEnoughItems);
        }
Пример #7
0
        public void Sha256Op_FailTest()
        {
            MockOpData data = new MockOpData()
            {
                _itemCount = 0,
            };

            OpTestCaseHelper.RunFailTest <Sha256Op>(data, Err.OpNotEnoughItems);
        }
Пример #8
0
        public void Run_FailTest()
        {
            MockOpData data = new MockOpData(FuncCallName.Peek)
            {
                _itemCount = 0,
            };

            OpTestCaseHelper.RunFailTest <SizeOp>(data, Err.OpNotEnoughItems);
        }
Пример #9
0
        public void Run_NotEqualVerify_Test(byte[] ba1, byte[] ba2)
        {
            MockOpData data = new MockOpData(FuncCallName.Pop, FuncCallName.Pop)
            {
                _itemCount = 2,
                popData    = new byte[][] { ba1, ba2 },
            };

            OpTestCaseHelper.RunFailTest <EqualVerifyOp>(data, "Top two stack items are not equal.");
        }
Пример #10
0
        public void Run_NotVerifiable_Test(byte[] ba)
        {
            MockOpData data = new MockOpData(FuncCallName.Pop)
            {
                _itemCount = 1,
                popData    = new byte[][] { ba },
            };

            OpTestCaseHelper.RunFailTest <VerifyOp>(data, "Top stack item value was 'false'.");
        }
Пример #11
0
        public void Run_EqualVerify_Test(byte[] ba1, byte[] ba2)
        {
            MockOpData data = new MockOpData(FuncCallName.Pop, FuncCallName.Pop)
            {
                _itemCount = 2,
                popData    = new byte[][] { ba1, ba2 },
            };

            OpTestCaseHelper.RunTest <EqualVerifyOp>(data, OP.EqualVerify);
        }
Пример #12
0
        public void Hash160OpTest()
        {
            MockOpData data = new MockOpData(FuncCallName.Pop, FuncCallName.Push)
            {
                _itemCount = 1,
                popData    = new byte[][] { message },
                pushData   = new byte[][] { expHash160 }
            };

            OpTestCaseHelper.RunTest <Hash160Op>(data, OP.HASH160);
        }
Пример #13
0
        public void Sha256OpTest()
        {
            MockOpData data = new MockOpData(FuncCallName.Pop, FuncCallName.Push)
            {
                _itemCount = 1,
                popData    = new byte[][] { message },
                pushData   = new byte[][] { expSha256 }
            };

            OpTestCaseHelper.RunTest <Sha256Op>(data, OP.SHA256);
        }
Пример #14
0
        public void RipeMd160OpTest()
        {
            MockOpData data = new MockOpData(FuncCallName.Pop, FuncCallName.Push)
            {
                _itemCount = 1,
                popData    = new byte[][] { message },
                pushData   = new byte[][] { expRipeMd }
            };

            OpTestCaseHelper.RunTest <RipeMd160Op>(data, OP.RIPEMD160);
        }
Пример #15
0
        public void Run_Verifiable_Test()
        {
            MockOpData data = new MockOpData(FuncCallName.Pop)
            {
                _itemCount = 1,
                // Any value apart from 0 and -0 are considered true
                popData = new byte[][] { OpTestCaseHelper.b1 },
            };

            OpTestCaseHelper.RunTest <VerifyOp>(data, OP.VERIFY);
        }
Пример #16
0
        public void Run_Equal_Test(byte[] ba1, byte[] ba2)
        {
            MockOpData data = new MockOpData(FuncCallName.Pop, FuncCallName.Pop, FuncCallName.PushBool)
            {
                _itemCount = 2,
                popData    = new byte[][] { ba1, ba2 },
                pushBool   = true
            };

            OpTestCaseHelper.RunTest <EqualOp>(data, OP.EQUAL);
        }
        public void Run_ErrorTest(FuncCallName[] expFuncCalls, int count, bool strict, byte[][][] expPopData, string expErr)
        {
            MockOpData data = new MockOpData(expFuncCalls)
            {
                _itemCount     = count,
                popCountData   = expPopData,
                IsStrictDerSig = strict
            };

            OpTestCaseHelper.RunFailTest <CheckSigOp>(data, expErr);
        }
Пример #18
0
        public void RunTest()
        {
            MockOpData data = new MockOpData(FuncCallName.Peek, FuncCallName.Push)
            {
                _itemCount    = 1,
                _altItemCount = 0,
                peekData      = new byte[][] { OpTestCaseHelper.b1 },
                pushData      = new byte[][] { OpTestCaseHelper.num3 },
            };

            OpTestCaseHelper.RunTest <SizeOp>(data, OP.SIZE);
        }
Пример #19
0
        public void Run_ItemCountOverflowTest2()
        {
            MockOpData data = new MockOpData(FuncCallName.Peek, FuncCallName.Push)
            {
                _itemCount    = 501,
                _altItemCount = 500,
                peekData      = new byte[][] { OpTestCaseHelper.b1 },
                pushData      = new byte[][] { OpTestCaseHelper.num3 },
            };

            OpTestCaseHelper.RunFailTest <SizeOp>(data, Err.OpStackItemOverflow);
        }
Пример #20
0
        public void Run_ErrorTest(FuncCallName[] expFuncCalls, int count, bool strict, byte[][][] expPopData, string expErr)
        {
            // Note that MockOpData makes sure IOpData.Verify() is _not_ called in any of these cases
            MockOpData data = new MockOpData(expFuncCalls)
            {
                _itemCount     = count,
                popCountData   = expPopData,
                IsStrictDerSig = strict
            };

            OpTestCaseHelper.RunFailTest <CheckSigVerifyOp>(data, expErr);
        }
        public void Run_FailTest(int count, long expSeq, byte[] peekData, string expErr)
        {
            MockOpData data = new MockOpData(FuncCallName.Peek)
            {
                _itemCount                  = count,
                bip112                      = true,
                expectedSequence            = expSeq,
                SequenceVerificationSuccess = false,
                peekData                    = new byte[][] { peekData }
            };

            OpTestCaseHelper.RunFailTest <CheckSequenceVerifyOp>(data, expErr);
        }
Пример #22
0
        public void RunTest()
        {
            MockOpData data = new MockOpData(FuncCallName.Peek)
            {
                _itemCount                  = 1,
                bip65                       = true,
                expectedLocktime            = 16,
                locktimeVerificationSuccess = true,
                peekData                    = new byte[][] { OpTestCaseHelper.num16 }
            };

            OpTestCaseHelper.RunTest <CheckLocktimeVerifyOp>(data, OP.CheckLocktimeVerify);
        }
        public void RunTest()
        {
            MockOpData data = new MockOpData(FuncCallName.Peek)
            {
                _itemCount                  = 1,
                bip112                      = true,
                expectedSequence            = 17,
                SequenceVerificationSuccess = true,
                peekData                    = new byte[][] { OpTestCaseHelper.num17 }
            };

            OpTestCaseHelper.RunTest <CheckSequenceVerifyOp>(data, OP.CheckSequenceVerify);
        }
Пример #24
0
        public void Run_WrongSigTest()
        {
            MockOpData data = new MockOpData(FuncCallName.PopCount)
            {
                _itemCount             = 2,
                expectedSig            = Helper.ShortSig1,
                expectedPubkey         = KeyHelper.Pub1,
                expectedSigBa          = Helper.ShortSig1Bytes,
                sigVerificationSuccess = false,
                popCountData           = new byte[][][] { new byte[][] { Helper.ShortSig1Bytes, KeyHelper.Pub1CompBytes } },
            };

            OpTestCaseHelper.RunFailTest <CheckSigVerifyOp>(data, "Signature verification failed.");
        }
Пример #25
0
        public void Run_CorrectSigTest()
        {
            MockOpData data = new MockOpData(FuncCallName.PopCount)
            {
                _itemCount             = 2,
                expectedSig            = Helper.ShortSig1,
                expectedPubkey         = KeyHelper.Pub1,
                expectedSigBa          = Helper.ShortSig1Bytes,
                sigVerificationSuccess = true,
                popCountData           = new byte[][][] { new byte[][] { Helper.ShortSig1Bytes, KeyHelper.Pub1CompBytes } },
            };

            OpTestCaseHelper.RunTest <CheckSigVerifyOp>(data, OP.CheckSigVerify);
        }
        public void RunTest(Signature expSig, PublicKey expPub, byte[] expSigBa, bool success, bool der, byte[][] pop, bool expBool)
        {
            MockOpData data = new MockOpData(FuncCallName.PopCount, FuncCallName.PushBool)
            {
                _itemCount             = 2,
                expectedSig            = expSig,
                expectedPubkey         = expPub,
                expectedSigBa          = expSigBa,
                sigVerificationSuccess = success,
                IsStrictDerSig         = der,
                popCountData           = new byte[][][] { pop },
                pushBool = expBool
            };

            OpTestCaseHelper.RunTest <CheckSigOp>(data, OP.CheckSig);
        }