DtlsEpoch.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls
  5. {
  6. internal class DtlsEpoch
  7. {
  8. private readonly DtlsReplayWindow mReplayWindow = new DtlsReplayWindow();
  9. private readonly int mEpoch;
  10. private readonly TlsCipher mCipher;
  11. private long mSequenceNumber = 0;
  12. internal DtlsEpoch(int epoch, TlsCipher cipher)
  13. {
  14. if (epoch < 0)
  15. throw new ArgumentException("must be >= 0", "epoch");
  16. if (cipher == null)
  17. throw new ArgumentNullException("cipher");
  18. this.mEpoch = epoch;
  19. this.mCipher = cipher;
  20. }
  21. internal long AllocateSequenceNumber()
  22. {
  23. // TODO Check for overflow
  24. return mSequenceNumber++;
  25. }
  26. internal TlsCipher Cipher
  27. {
  28. get { return mCipher; }
  29. }
  30. internal int Epoch
  31. {
  32. get { return mEpoch; }
  33. }
  34. internal DtlsReplayWindow ReplayWindow
  35. {
  36. get { return mReplayWindow; }
  37. }
  38. internal long SequenceNumber
  39. {
  40. get { return mSequenceNumber; }
  41. }
  42. }
  43. }
  44. #pragma warning restore
  45. #endif