1 files changed, 57 insertions, 0 deletions
diff --git a/Crypto/src/cms/CMSProcessableFile.cs b/Crypto/src/cms/CMSProcessableFile.cs
new file mode 100644
index 000000000..548dc8efb
--- /dev/null
+++ b/Crypto/src/cms/CMSProcessableFile.cs
@@ -0,0 +1,57 @@
+#if !PORTABLE
+
+using System;
+using System.IO;
+
+using Org.BouncyCastle.Utilities.IO;
+
+namespace Org.BouncyCastle.Cms
+{
+ /**
+ * a holding class for a file of data to be processed.
+ */
+ public class CmsProcessableFile
+ : CmsProcessable, CmsReadable
+ {
+ private const int DefaultBufSize = 32 * 1024;
+
+ private readonly FileInfo _file;
+ private readonly int _bufSize;
+
+ public CmsProcessableFile(
+ FileInfo file)
+ : this(file, DefaultBufSize)
+ {
+ }
+
+ public CmsProcessableFile(
+ FileInfo file,
+ int bufSize)
+ {
+ _file = file;
+ _bufSize = bufSize;
+ }
+
+ public virtual Stream GetInputStream()
+ {
+ return new FileStream(
+ _file.FullName, FileMode.Open, FileAccess.Read, FileShare.Read, _bufSize);
+ }
+
+ public virtual void Write(
+ Stream zOut)
+ {
+ Stream inStr = GetInputStream();
+ Streams.PipeAll(inStr, zOut);
+ inStr.Close();
+ }
+
+ /// <returns>The file handle</returns>
+ [Obsolete]
+ public virtual object GetContent()
+ {
+ return _file;
+ }
+ }
+}
+#endif
\ No newline at end of file
|