X448Agreement.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using Best.HTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters;
  5. namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Crypto.Agreement
  6. {
  7. public sealed class X448Agreement
  8. : IRawAgreement
  9. {
  10. private X448PrivateKeyParameters m_privateKey;
  11. public void Init(ICipherParameters parameters)
  12. {
  13. m_privateKey = (X448PrivateKeyParameters)parameters;
  14. }
  15. public int AgreementSize
  16. {
  17. get { return X448PrivateKeyParameters.SecretSize; }
  18. }
  19. public void CalculateAgreement(ICipherParameters publicKey, byte[] buf, int off)
  20. {
  21. #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER || UNITY_2021_2_OR_NEWER
  22. CalculateAgreement(publicKey, buf.AsSpan(off));
  23. #else
  24. m_privateKey.GenerateSecret((X448PublicKeyParameters)publicKey, buf, off);
  25. #endif
  26. }
  27. #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER || UNITY_2021_2_OR_NEWER
  28. public void CalculateAgreement(ICipherParameters publicKey, Span<byte> buf)
  29. {
  30. m_privateKey.GenerateSecret((X448PublicKeyParameters)publicKey, buf);
  31. }
  32. #endif
  33. }
  34. }
  35. #pragma warning restore
  36. #endif