diff options
Diffstat (limited to 'crypto/src/cms/CMSProcessableFile.cs')
-rw-r--r-- | crypto/src/cms/CMSProcessableFile.cs | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/crypto/src/cms/CMSProcessableFile.cs b/crypto/src/cms/CMSProcessableFile.cs new file mode 100644 index 000000000..cbc74f44b --- /dev/null +++ b/crypto/src/cms/CMSProcessableFile.cs @@ -0,0 +1,54 @@ +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; + } + } +} |