public void ShouldVerifyPQProperly(string hash, int counter, string pHex, string qHex, string seedHex, bool success, string testName) { var sha = GetSha(hash); var firstSeed = new BitString(seedHex).ToPositiveBigInteger(); var p = new BitString(pHex).ToPositiveBigInteger(); var q = new BitString(qHex).ToPositiveBigInteger(); var seed = new DomainSeed(firstSeed); var count = new Counter(counter); var subject = new ProbablePQGeneratorValidator(sha); var result = subject.Validate(p, q, seed, count); Assert.AreEqual(success, result.Success, result.ErrorMessage); }
public void ShouldGeneratePQProperly(string hash, int L, int N, int counter, string seedHex, string pHex, string qHex, string testName) { var sha = GetSha(hash); var seed = new BitString(seedHex); var seedLen = seed.BitLength; var p = new BitString(pHex).ToPositiveBigInteger(); var q = new BitString(qHex).ToPositiveBigInteger(); var fakeSha = new FakeSha(sha); var subject = new ProbablePQGeneratorValidator(fakeSha, EntropyProviderTypes.Testable); subject.AddEntropy(seed); var result = subject.Generate(L, N, seedLen); Assert.IsTrue(result.Success, result.ErrorMessage); Assert.AreEqual(p, result.P, "p"); Assert.AreEqual(q, result.Q, "q"); Assert.AreEqual(counter, result.Count.Count, "count"); Console.Write($"Hash functions run: {fakeSha.Count}"); }