SetBufferSize() 공개 메소드

Set the underlying string size for encapsulated data.
public SetBufferSize ( int bufferSize ) : void
bufferSize int Length of octet strings to buffer the data.
리턴 void
		public void TestKeyTransAes128Throughput()
		{
			byte[] data = new byte[40001];
			for (int i = 0; i != data.Length; i++)
			{
				data[i] = (byte)(i & 0xff);
			}

			//
			// buffered
			//
			CmsEnvelopedDataStreamGenerator edGen = new CmsEnvelopedDataStreamGenerator();

			edGen.SetBufferSize(BufferSize);

			edGen.AddKeyTransRecipient(ReciCert);

			MemoryStream bOut = new MemoryStream();

			Stream outStream = edGen.Open(bOut, CmsEnvelopedDataGenerator.Aes128Cbc);

			for (int i = 0; i != data.Length; i++)
			{
				outStream.WriteByte(data[i]);
			}

			outStream.Close();

			CmsEnvelopedDataParser		ep = new CmsEnvelopedDataParser(bOut.ToArray());
			RecipientInformationStore	recipients = ep.GetRecipientInfos();
			ICollection					c = recipients.GetRecipients();

			IEnumerator e = c.GetEnumerator();

			if (e.MoveNext())
			{
				RecipientInformation recipient = (RecipientInformation) e.Current;

				Assert.AreEqual(recipient.KeyEncryptionAlgOid, PkcsObjectIdentifiers.RsaEncryption.Id);

				CmsTypedStream recData = recipient.GetContentStream(ReciKP.Private);

				Stream dataStream = recData.ContentStream;
				MemoryStream dataOut = new MemoryStream();
				int len;
				byte[] buf = new byte[BufferSize];
				int count = 0;

				while (count != 10 && (len = dataStream.Read(buf, 0, buf.Length)) > 0)
				{
					Assert.AreEqual(buf.Length, len);

					dataOut.Write(buf, 0, buf.Length);
					count++;
				}

				len = dataStream.Read(buf, 0, buf.Length);
				dataOut.Write(buf, 0, len);

				Assert.IsTrue(Arrays.AreEqual(data, dataOut.ToArray()));
			}
			else
			{
				Assert.Fail("recipient not found.");
			}
		}
		public void TestKeyTransAes128Buffered()
		{
			byte[] data = new byte[2000];
			for (int i = 0; i != 2000; i++)
			{
				data[i] = (byte)(i & 0xff);
			}

			//
			// unbuffered
			//
			CmsEnvelopedDataStreamGenerator edGen = new CmsEnvelopedDataStreamGenerator();

			edGen.AddKeyTransRecipient(ReciCert);

			MemoryStream  bOut = new MemoryStream();

			Stream outStream = edGen.Open(
				bOut, CmsEnvelopedDataGenerator.Aes128Cbc);

			for (int i = 0; i != 2000; i++)
			{
				outStream.WriteByte(data[i]);
			}

			outStream.Close();

			VerifyData(bOut.ToArray(), CmsEnvelopedDataGenerator.Aes128Cbc, data);

			int unbufferedLength = bOut.ToArray().Length;

			//
			// buffered - less than default of 1000
			//
			edGen = new CmsEnvelopedDataStreamGenerator();

			edGen.SetBufferSize(300);

			edGen.AddKeyTransRecipient(ReciCert);

			bOut.SetLength(0);

			outStream = edGen.Open(bOut, CmsEnvelopedDataGenerator.Aes128Cbc);

			for (int i = 0; i != 2000; i++)
			{
				outStream.WriteByte(data[i]);
			}

			outStream.Close();

			VerifyData(bOut.ToArray(), CmsEnvelopedDataGenerator.Aes128Cbc, data);

			Assert.IsTrue(unbufferedLength < bOut.ToArray().Length);
		}