NonMemoableDigest.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Digests
  5. {
  6. /**
  7. * Wrapper removes exposure to the IMemoable interface on an IDigest implementation.
  8. */
  9. public class NonMemoableDigest
  10. : IDigest
  11. {
  12. protected readonly IDigest mBaseDigest;
  13. /**
  14. * Base constructor.
  15. *
  16. * @param baseDigest underlying digest to use.
  17. * @exception IllegalArgumentException if baseDigest is null
  18. */
  19. public NonMemoableDigest(IDigest baseDigest)
  20. {
  21. if (baseDigest == null)
  22. throw new ArgumentNullException("baseDigest");
  23. this.mBaseDigest = baseDigest;
  24. }
  25. public virtual string AlgorithmName
  26. {
  27. get { return mBaseDigest.AlgorithmName; }
  28. }
  29. public virtual int GetDigestSize()
  30. {
  31. return mBaseDigest.GetDigestSize();
  32. }
  33. public virtual void Update(byte input)
  34. {
  35. mBaseDigest.Update(input);
  36. }
  37. public virtual void BlockUpdate(byte[] input, int inOff, int len)
  38. {
  39. mBaseDigest.BlockUpdate(input, inOff, len);
  40. }
  41. public virtual int DoFinal(byte[] output, int outOff)
  42. {
  43. return mBaseDigest.DoFinal(output, outOff);
  44. }
  45. public virtual void Reset()
  46. {
  47. mBaseDigest.Reset();
  48. }
  49. public virtual int GetByteLength()
  50. {
  51. return mBaseDigest.GetByteLength();
  52. }
  53. }
  54. }
  55. #pragma warning restore
  56. #endif