NonMemoableDigest.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. namespace Best.HTTP.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. #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER || UNITY_2021_2_OR_NEWER
  42. public virtual void BlockUpdate(ReadOnlySpan<byte> input)
  43. {
  44. mBaseDigest.BlockUpdate(input);
  45. }
  46. #endif
  47. public virtual int DoFinal(byte[] output, int outOff)
  48. {
  49. return mBaseDigest.DoFinal(output, outOff);
  50. }
  51. #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER || UNITY_2021_2_OR_NEWER
  52. public virtual int DoFinal(Span<byte> output)
  53. {
  54. return mBaseDigest.DoFinal(output);
  55. }
  56. #endif
  57. public virtual void Reset()
  58. {
  59. mBaseDigest.Reset();
  60. }
  61. public virtual int GetByteLength()
  62. {
  63. return mBaseDigest.GetByteLength();
  64. }
  65. }
  66. }
  67. #pragma warning restore
  68. #endif