ParametersWithIV.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities;
  5. namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters
  6. {
  7. public class ParametersWithIV
  8. : ICipherParameters
  9. {
  10. private readonly ICipherParameters m_parameters;
  11. private readonly byte[] m_iv;
  12. public ParametersWithIV(ICipherParameters parameters, byte[] iv)
  13. : this(parameters, iv, 0, iv.Length)
  14. {
  15. }
  16. public ParametersWithIV(ICipherParameters parameters, byte[] iv, int ivOff, int ivLen)
  17. {
  18. m_parameters = parameters;
  19. m_iv = Arrays.CopyOfRange(iv, ivOff, ivOff + ivLen);
  20. }
  21. #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER || UNITY_2021_2_OR_NEWER
  22. public ParametersWithIV(ICipherParameters parameters, ReadOnlySpan<byte> iv)
  23. {
  24. m_parameters = parameters;
  25. m_iv = iv.ToArray();
  26. }
  27. #endif
  28. public byte[] GetIV()
  29. {
  30. return (byte[])m_iv.Clone();
  31. }
  32. public ICipherParameters Parameters => m_parameters;
  33. }
  34. }
  35. #pragma warning restore
  36. #endif