public void VerifySubgroupGroupTest()

in UProveUnitTest/GroupTest.cs [89:171]


        public void VerifySubgroupGroupTest()
        {
            SubgroupGroup Gq = SubgroupGroup.CreateSubgroupGroup(
                StaticTestHelpers.IntToBigEndianBytes(2), // p
                StaticTestHelpers.IntToBigEndianBytes(2), // q
                StaticTestHelpers.IntToBigEndianBytes(0), // g
                null,
                null);
            try { Gq.Verify(); Assert.Fail(); }
            catch (InvalidUProveArtifactException) { }

            Gq = SubgroupGroup.CreateSubgroupGroup(
                            StaticTestHelpers.IntToBigEndianBytes(6), // p not prime
                            StaticTestHelpers.IntToBigEndianBytes(2), // q
                            StaticTestHelpers.IntToBigEndianBytes(0), // g
                            null,
                            null);
            try { Gq.Verify(); Assert.Fail(); }
            catch (InvalidUProveArtifactException) { }

            Gq = SubgroupGroup.CreateSubgroupGroup(
                            StaticTestHelpers.IntToBigEndianBytes(7), // p
                            StaticTestHelpers.IntToBigEndianBytes(2), // q
                            StaticTestHelpers.IntToBigEndianBytes(0), // g
                            null,
                            null);
            try { Gq.Verify(); Assert.Fail(); }
            catch (InvalidUProveArtifactException) { }

            Gq = SubgroupGroup.CreateSubgroupGroup(
                            StaticTestHelpers.IntToBigEndianBytes(7), // p
                            StaticTestHelpers.IntToBigEndianBytes(4), // q not prime
                            StaticTestHelpers.IntToBigEndianBytes(0), // g
                            null,
                            null);
            try { Gq.Verify(); Assert.Fail(); }
            catch (InvalidUProveArtifactException) { }

            Gq = SubgroupGroup.CreateSubgroupGroup(
                            StaticTestHelpers.IntToBigEndianBytes(7), // p
                            StaticTestHelpers.IntToBigEndianBytes(5), // q doesnt divide p - 1
                            StaticTestHelpers.IntToBigEndianBytes(0), // g
                            null,
                            null);
            try { Gq.Verify(); Assert.Fail(); }
            catch (InvalidUProveArtifactException) { }

            Gq = SubgroupGroup.CreateSubgroupGroup(
                            StaticTestHelpers.IntToBigEndianBytes(7), // p
                            StaticTestHelpers.IntToBigEndianBytes(3), // q
                            StaticTestHelpers.IntToBigEndianBytes(0), // g
                            null,
                            null);
            try { Gq.Verify(); Assert.Fail(); }
            catch (InvalidUProveArtifactException) { }

            Gq = SubgroupGroup.CreateSubgroupGroup(
                            StaticTestHelpers.IntToBigEndianBytes(7), // p
                            StaticTestHelpers.IntToBigEndianBytes(3), // q
                            StaticTestHelpers.IntToBigEndianBytes(1), // g invalid value
                            null,
                            null);
            try { Gq.Verify(); Assert.Fail(); }
            catch (InvalidUProveArtifactException) { }

            Gq = SubgroupGroup.CreateSubgroupGroup(
                StaticTestHelpers.IntToBigEndianBytes(7), // p
                StaticTestHelpers.IntToBigEndianBytes(3), // q
                StaticTestHelpers.IntToBigEndianBytes(5), // g^q mod p != 1
                null,
                null);
            try { Gq.Verify(); Assert.Fail(); }
            catch (InvalidUProveArtifactException) { }

            // Valid subgroup description
            Gq = SubgroupGroup.CreateSubgroupGroup(
                StaticTestHelpers.IntToBigEndianBytes(7), // p
                StaticTestHelpers.IntToBigEndianBytes(3), // q
                StaticTestHelpers.IntToBigEndianBytes(2), // g
                null,
                null);
            Gq.Verify();
        }