public void ConstructAesCspCrng() { var crng = new CypherBasedPrngGenerator(_ZeroKey32Bytes, NativeCryptoPrimitives.GetAes256Csp(), SHA256.Create(), new CypherCounter(16)); // Creating a generator should not actually generate any bytes. Assert.AreEqual(crng.BytesGenerated, 0L); Assert.AreEqual(crng.BytesRequested, 0L); }
public void GenerateSingleBlockAesCsp() { var crng = new CypherBasedPrngGenerator(_ZeroKey32Bytes, NativeCryptoPrimitives.GetAes256Csp(), SHA256.Create(), new CypherCounter(16), 0); var buffer = new byte[crng.BlockSizeBytes]; crng.FillWithRandomBytes(buffer); Assert.IsFalse(buffer.All(b => b == 0)); Assert.AreEqual(crng.BytesGenerated, buffer.Length + (crng.BlockSizeBytes * 2)); Assert.AreEqual(crng.BytesRequested, buffer.Length); }
public void AesCyphersProduceSameRandomBlocks() { var crngManaged = new CypherBasedPrngGenerator(_ZeroKey32Bytes, CryptoPrimitive.Aes256Managed(), SHA256.Create(), new CypherCounter(16)); var crngCsp = new CypherBasedPrngGenerator(_ZeroKey32Bytes, NativeCryptoPrimitives.GetAes256Csp(), SHA256.Create(), new CypherCounter(16)); var bufferManaged = new byte[crngManaged.BlockSizeBytes * 2]; var bufferCsp = new byte[crngManaged.BlockSizeBytes * 2]; crngManaged.FillWithRandomBytes(bufferManaged); crngCsp.FillWithRandomBytes(bufferCsp); CollectionAssert.AreEqual(bufferManaged, bufferCsp); }