public void CSBadSerializeGroupElementArrayTest()
        {
            GroupElement[] input = StaticHelperClass.GenerateRandomBases(10, paramIndex);

            StaticHelperClass.TryBodyDelegate negativeLength =
                new StaticHelperClass.TryBodyDelegate(
                    () => {
                string[] serialized = CryptoSerializer.SerializeGroupElementArray(input, 3, -1, "blah");
            });
            StaticHelperClass.AssertThrowsException(negativeLength, typeof(Exception), "negative output length");

            // zero output length
            string[] output = CryptoSerializer.SerializeGroupElementArray(input, 3, 0, "blah");
            Assert.AreEqual(0, output.Length, "output.Length.");

            // output length too long
            StaticHelperClass.TryBodyDelegate outputLengthTooLarge =
                new StaticHelperClass.TryBodyDelegate(
                    () =>
            {
                string[] serialized = CryptoSerializer.SerializeGroupElementArray(input, 3, 9, "blah");
            });
            StaticHelperClass.AssertThrowsException(outputLengthTooLarge, typeof(Exception), "Output length too large");

            // copy index negative
            StaticHelperClass.TryBodyDelegate startIndexNegative =
                new StaticHelperClass.TryBodyDelegate(
                    () =>
            {
                string[] serialized = CryptoSerializer.SerializeGroupElementArray(input, -1, 4, "blah");
            });
            StaticHelperClass.AssertThrowsException(startIndexNegative, typeof(Exception), "Start index is negative.");
        }
        public void CSBadDeserializeFieldZqElementArrayTest()
        {
            FieldZqElement[] input      = StaticHelperClass.GenerateRandomExponents(10, paramIndex);
            string[]         serialized = CryptoSerializer.SerializeFieldZqElementArray(input, 3, 4, "blah");
            Assert.AreEqual(4, serialized.Length, "serialized array length");

            StaticHelperClass.TryBodyDelegate negativeStartIndex =
                new StaticHelperClass.TryBodyDelegate(
                    () =>
            {
                FieldZqElement[] output = CryptoSerializer.DeserializeFieldZqElementArray(serialized, -1, 10, "blah", crypto.Group);
            });
            StaticHelperClass.AssertThrowsException(negativeStartIndex, typeof(Exception), "negative start index");


            StaticHelperClass.TryBodyDelegate startIndexTooLarge =
                new StaticHelperClass.TryBodyDelegate(
                    () =>
            {
                FieldZqElement[] output = CryptoSerializer.DeserializeFieldZqElementArray(serialized, 8, 10, "blah", crypto.Group);
            });
            StaticHelperClass.AssertThrowsException(startIndexTooLarge, typeof(Exception), "start index too large");

            StaticHelperClass.TryBodyDelegate startIndexWaytooLarge =
                new StaticHelperClass.TryBodyDelegate(
                    () =>
            {
                FieldZqElement[] output = CryptoSerializer.DeserializeFieldZqElementArray(serialized, 11, 10, "blah", crypto.Group);
            });
            StaticHelperClass.AssertThrowsException(startIndexWaytooLarge, typeof(Exception), "start index greater than output length ");
        }
예제 #3
0
        public void SMBadConstructorTest()
        {
            ProverSetMembershipParameters badProver = new ProverSetMembershipParameters(_cryptoParameters);

            StaticHelperClass.AssertThrowsException(
                new StaticHelperClass.TryBodyDelegate(() => { SetMembershipProof proof = new SetMembershipProof(badProver); }),
                typeof(Exception),
                "Constructor SetMembershipProof called with bad prover parameters.");
        }
        public void CSCheckDeserializationInputTest()
        {
            PrivateType serializer = new PrivateType(typeof(CryptoSerializer));

            object [] parameters = new object[] { new string[] { "b", "a" }, 0, 0, "lalla", null };
            StaticHelperClass.AssertThrowsException(
                () => { serializer.InvokeStatic("CheckDeserializationInput", parameters); },
                typeof(SerializationException),
                "Group is null");
        }
        public void BDBadProverParameterTest()
        {
            ProverBitDecompositionParameters prover = new ProverBitDecompositionParameters(
                new PedersenCommitment(_parameters[2].FieldZq.GetElement(10), _parameters[2]),
                4,
                _parameters[2]);


            prover.Witnesses[3] = new PedersenCommitment(_parameters[2].FieldZq.GetElement(2), _parameters[2]);
            StaticHelperClass.AssertThrowsException
            (
                () => { BitDecompositionProof proof = new BitDecompositionProof(prover); },
                typeof(Exception),
                "Bad prover parameters."
            );
        }
        public void CSGenericBadSerializationTest()
        {
            StaticHelperClass.AssertThrowsException(
                () => { CryptoSerializer.Deserialize <SetMembershipProof>("bad jsonString"); },
                typeof(SerializationException),
                "deserialization");

            ProverSetMembershipParameters prover = new ProverSetMembershipParameters(crypto);

            FieldZqElement [] memberSet = crypto.FieldZq.GetRandomElements(10, true);
            prover.setProverParameters(memberSet[0], memberSet);
            SetMembershipProof proof         = new SetMembershipProof(prover);
            PrivateObject      proofAccessor = new PrivateObject(proof);

            proofAccessor.SetProperty("c", null);

            StaticHelperClass.AssertThrowsException(
                () => { CryptoSerializer.Serialize <SetMembershipProof>(proof); },
                typeof(SerializationException),
                "serialization");
        }
        public void CSBadSerializeFieldZqElementArrayTest()
        {
            FieldZqElement[] input = StaticHelperClass.GenerateRandomExponents(10, paramIndex);

            StaticHelperClass.TryBodyDelegate negativeLength =
                new StaticHelperClass.TryBodyDelegate(
                    () =>
            {
                string[] serialized = CryptoSerializer.SerializeFieldZqElementArray(input, 3, -1, "blah");
            });
            StaticHelperClass.AssertThrowsException(negativeLength, typeof(Exception), "negative output length");

            // zero output length
            string[] output = CryptoSerializer.SerializeFieldZqElementArray(input, 3, 0, "blah");
            Assert.AreEqual(0, output.Length, "output.Length.");

            // output length too long
            StaticHelperClass.TryBodyDelegate outputLengthTooLarge =
                new StaticHelperClass.TryBodyDelegate(
                    () =>
            {
                string[] serialized = CryptoSerializer.SerializeFieldZqElementArray(input, 3, 9, "blah");
            });
            StaticHelperClass.AssertThrowsException(outputLengthTooLarge, typeof(Exception), "Output length too large");

            // copy index negative
            StaticHelperClass.TryBodyDelegate startIndexNegative =
                new StaticHelperClass.TryBodyDelegate(
                    () =>
            {
                string[] serialized = CryptoSerializer.SerializeFieldZqElementArray(input, -1, 4, "blah");
            });
            StaticHelperClass.AssertThrowsException(startIndexNegative, typeof(Exception), "Start index is negative.");

            string[] jsonStrings = new string[32];
            StaticHelperClass.AssertThrowsException(
                () => { CryptoSerializer.DeserializeFieldZqElementArray(jsonStrings, 0, 0, "field", null); },
                typeof(SerializationException),
                "Group is null.");
        }
예제 #8
0
        public void SMIndexOfCommittedValueTest()
        {
            // place index in set
            ProverSetMembershipParameters prover = new ProverSetMembershipParameters(_cryptoParameters);

            prover.setProverParameters(ValidDaysOfTheWeek[4], ValidDaysOfTheWeek);
            Assert.AreEqual(4, prover.IndexOfCommittedValueInSet, "computed wrong index of committed value.");

            // now index is not in set
            FieldZqElement badday = _cryptoParameters.FieldZq.One;

            prover.setProverParameters(badday, ValidDaysOfTheWeek);
            StaticHelperClass.AssertThrowsException(
                new StaticHelperClass.TryBodyDelegate(() => { int index = prover.IndexOfCommittedValueInSet; }),
                typeof(Exception),
                "Witness not in memberset.");

            // prover parameters not set yet
            prover = new ProverSetMembershipParameters(_cryptoParameters);
            StaticHelperClass.AssertThrowsException(
                new StaticHelperClass.TryBodyDelegate(() => { int index = prover.IndexOfCommittedValueInSet; }),
                typeof(Exception),
                "witness set to null.");
        }