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();
}