public void TestEach()
		{
			byte[] testData = Encoding.ASCII.GetBytes("Hello world!");

			CmsCompressedDataStreamGenerator gen = new CmsCompressedDataStreamGenerator();
			MemoryStream bOut = new MemoryStream();

			Stream cOut = gen.Open(bOut, CmsCompressedDataStreamGenerator.ZLib);

			cOut.Write(testData, 0, testData.Length);

			cOut.Close();

			CmsCompressedDataParser ed = new CmsCompressedDataParser(bOut.ToArray());

			Assert.IsTrue(Arrays.AreEqual(testData, CmsTestUtil.StreamToByteArray(ed.GetContent().ContentStream)));
		}
		public void Test1000()
		{
			byte[] testData = new byte[10000];
			SecureRandom rand = new SecureRandom();

			rand.SetSeed(0);

			for (int i = 0; i != 10; i++)
			{
				CmsCompressedDataStreamGenerator gen = new CmsCompressedDataStreamGenerator();
				MemoryStream bOut = new MemoryStream();

				Stream cOut = gen.Open(bOut, CmsCompressedDataStreamGenerator.ZLib);

				rand.NextBytes(testData);

				cOut.Write(testData, 0, testData.Length);

				cOut.Close();

				CmsCompressedDataParser ed = new CmsCompressedDataParser(bOut.ToArray());

				Assert.IsTrue(Arrays.AreEqual(testData, CmsTestUtil.StreamToByteArray(ed.GetContent().ContentStream)));
			}
		}
        public void TestSha1WithRsa()
        {
            IList certList = new ArrayList();
            IList crlList = new ArrayList();
            MemoryStream bOut = new MemoryStream();

            certList.Add(OrigCert);
            certList.Add(SignCert);

            crlList.Add(SignCrl);
            crlList.Add(OrigCrl);

            IX509Store x509Certs = X509StoreFactory.Create(
                "Certificate/Collection",
                new X509CollectionStoreParameters(certList));
            IX509Store x509Crls = X509StoreFactory.Create(
                "CRL/Collection",
                new X509CollectionStoreParameters(crlList));

            CmsSignedDataStreamGenerator gen = new CmsSignedDataStreamGenerator();

            gen.AddSigner(OrigKP.Private, OrigCert, CmsSignedDataStreamGenerator.DigestSha1);

            gen.AddCertificates(x509Certs);
            gen.AddCrls(x509Crls);

            Stream sigOut = gen.Open(bOut);

            CmsCompressedDataStreamGenerator cGen = new CmsCompressedDataStreamGenerator();

            Stream cOut = cGen.Open(sigOut, CmsCompressedDataStreamGenerator.ZLib);

            byte[] testBytes = Encoding.ASCII.GetBytes(TestMessage);
            cOut.Write(testBytes, 0, testBytes.Length);

            cOut.Close();

            sigOut.Close();

            CheckSigParseable(bOut.ToArray());

            // generate compressed stream
            MemoryStream cDataOut = new MemoryStream();

            cOut = cGen.Open(cDataOut, CmsCompressedDataStreamGenerator.ZLib);

            cOut.Write(testBytes, 0, testBytes.Length);

            cOut.Close();

            CmsSignedDataParser sp = new CmsSignedDataParser(
                new CmsTypedStream(new MemoryStream(cDataOut.ToArray(), false)), bOut.ToArray());

            sp.GetSignedContent().Drain();

            //
            // compute expected content digest
            //
            IDigest md = DigestUtilities.GetDigest("SHA1");
            byte[] cDataOutBytes = cDataOut.ToArray();
            md.BlockUpdate(cDataOutBytes, 0, cDataOutBytes.Length);
            byte[] hash = DigestUtilities.DoFinal(md);

            VerifySignatures(sp, hash);
        }