Blake3Parameters.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. /// <summary>Blake3 Parameters.</summary>
  8. public sealed class Blake3Parameters
  9. : ICipherParameters
  10. {
  11. private const int KeyLen = 32;
  12. private byte[] m_theKey;
  13. private byte[] m_theContext;
  14. /// <summary>Create a key parameter.</summary>
  15. /// <param name="pContext">the context</param>
  16. /// <returns>the parameter</returns>
  17. public static Blake3Parameters Context(byte[] pContext)
  18. {
  19. if (pContext == null)
  20. throw new ArgumentNullException(nameof(pContext));
  21. Blake3Parameters myParams = new Blake3Parameters();
  22. myParams.m_theContext = Arrays.Clone(pContext);
  23. return myParams;
  24. }
  25. /// <summary>Create a key parameter.</summary>
  26. /// <param name="pKey">the key</param>
  27. /// <returns>the parameter</returns>
  28. public static Blake3Parameters Key(byte[] pKey)
  29. {
  30. if (pKey == null)
  31. throw new ArgumentNullException(nameof(pKey));
  32. if (pKey.Length != KeyLen)
  33. throw new ArgumentException("Invalid key length", nameof(pKey));
  34. Blake3Parameters myParams = new Blake3Parameters();
  35. myParams.m_theKey = Arrays.Clone(pKey);
  36. return myParams;
  37. }
  38. /// <summary>Obtain the key.</summary>
  39. /// <returns>the key</returns>
  40. public byte[] GetKey() => Arrays.Clone(m_theKey);
  41. /// <summary>Clear the key bytes.</summary>
  42. public void ClearKey()
  43. {
  44. Arrays.Fill(m_theKey, 0);
  45. }
  46. /// <summary>Obtain the salt.</summary>
  47. /// <returns>the salt</returns>
  48. public byte[] GetContext() => Arrays.Clone(m_theContext);
  49. }
  50. }
  51. #pragma warning restore
  52. #endif