private void ParallelTest() { CSPRng rng = new CSPRng(); byte[] key = rng.GetBytes(32); byte[] iv = rng.GetBytes(8); byte[] data = rng.GetBytes(2048); byte[] enc = new byte[2048]; byte[] dec = new byte[2048]; rng.Dispose(); using (ChaCha chacha = new ChaCha(10)) { // encrypt linear chacha.Initialize(new KeyParams(key, iv)); chacha.IsParallel = false; chacha.Transform(data, enc); // decrypt parallel chacha.Initialize(new KeyParams(key, iv)); chacha.IsParallel = true; chacha.ParallelBlockSize = 2048; chacha.Transform(enc, dec); } if (!Compare.AreEqual(data, dec)) throw new Exception("ChaCha: Decrypted arrays are not equal!"); }
/// <summary> /// Tests the SecureRandom access methods and return ranges /// </summary> /// <returns>Status</returns> public string Test() { try { SecRandTest(); RandRangeTest(new BBSG(), 10); OnProgress(new TestEventArgs("Passed BBSG threshhold tests..")); RandRangeTest(new CCG(), 10); OnProgress(new TestEventArgs("Passed CCG threshhold tests..")); RandRangeTest(new CSPRng()); OnProgress(new TestEventArgs("Passed CSPRng threshhold tests..")); RandRangeTest(new CTRPrng()); OnProgress(new TestEventArgs("Passed CTRPrng threshhold tests..")); RandRangeTest(new DGCPrng()); OnProgress(new TestEventArgs("Passed DGCPrng threshhold tests..")); RandRangeTest(new MODEXPG(), 10); OnProgress(new TestEventArgs("Passed MODEXPG threshhold tests..")); RandRangeTest(new QCG1(), 10); OnProgress(new TestEventArgs("Passed QCG1 threshhold tests..")); RandRangeTest(new QCG2(), 10); OnProgress(new TestEventArgs("Passed QCG2 threshhold tests..")); RandRangeTest(new SP20Prng(), 10); OnProgress(new TestEventArgs("Passed SP20Prng threshhold tests..")); byte[] pass, salt; CSPRng rand = new CSPRng(); pass = rand.GetBytes(23); salt = rand.GetBytes(256); rand.Dispose(); RandRangeTest(new PBPRng(new SHA512(), pass, salt)); OnProgress(new TestEventArgs("Passed PBPRng threshhold tests..")); return SUCCESS; } catch (Exception Ex) { string message = Ex.Message == null ? "" : Ex.Message; throw new Exception(FAILURE + message); } }