CMSProcessableInputStream.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using System.IO;
  5. using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
  6. using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.IO;
  7. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Cms
  8. {
  9. public class CmsProcessableInputStream
  10. : CmsProcessable, CmsReadable
  11. {
  12. private readonly Stream input;
  13. private bool used = false;
  14. public CmsProcessableInputStream(Stream input)
  15. {
  16. this.input = input;
  17. }
  18. public virtual Stream GetInputStream()
  19. {
  20. CheckSingleUsage();
  21. return input;
  22. }
  23. public virtual void Write(Stream output)
  24. {
  25. CheckSingleUsage();
  26. Streams.PipeAll(input, output);
  27. BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Platform.Dispose(input);
  28. }
  29. [Obsolete]
  30. public virtual object GetContent()
  31. {
  32. return GetInputStream();
  33. }
  34. protected virtual void CheckSingleUsage()
  35. {
  36. lock (this)
  37. {
  38. if (used)
  39. throw new InvalidOperationException("CmsProcessableInputStream can only be used once");
  40. used = true;
  41. }
  42. }
  43. }
  44. }
  45. #pragma warning restore
  46. #endif