HandshakeMessageInput.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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.Tls.Crypto;
  6. using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.IO;
  7. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Tls
  8. {
  9. // TODO Rewrite without MemoryStream
  10. public sealed class HandshakeMessageInput
  11. : MemoryStream
  12. {
  13. private readonly int m_offset;
  14. internal HandshakeMessageInput(byte[] buf, int offset, int length)
  15. #if PORTABLE || NETFX_CORE
  16. : base(buf, offset, length, false)
  17. #else
  18. : base(buf, offset, length, false, true)
  19. #endif
  20. {
  21. #if PORTABLE || NETFX_CORE
  22. this.m_offset = 0;
  23. #else
  24. this.m_offset = offset;
  25. #endif
  26. }
  27. public void UpdateHash(TlsHash hash)
  28. {
  29. Streams.WriteBufTo(this, new TlsHashSink(hash));
  30. }
  31. internal void UpdateHashPrefix(TlsHash hash, int bindersSize)
  32. {
  33. #if PORTABLE || NETFX_CORE
  34. byte[] buf = ToArray();
  35. int count = buf.Length;
  36. #else
  37. byte[] buf = GetBuffer();
  38. int count = (int)Length;
  39. #endif
  40. hash.Update(buf, m_offset, count - bindersSize);
  41. }
  42. internal void UpdateHashSuffix(TlsHash hash, int bindersSize)
  43. {
  44. #if PORTABLE || NETFX_CORE
  45. byte[] buf = ToArray();
  46. int count = buf.Length;
  47. #else
  48. byte[] buf = GetBuffer();
  49. int count = (int)Length;
  50. #endif
  51. hash.Update(buf, m_offset + count - bindersSize, bindersSize);
  52. }
  53. }
  54. }
  55. #pragma warning restore
  56. #endif