SM2KeyExchangePublicParameters.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using BestHTTP.SecureProtocol.Org.BouncyCastle.Math.EC;
  5. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters
  6. {
  7. /// <summary>Public parameters for an SM2 key exchange.</summary>
  8. /// <remarks>In this case the ephemeralPublicKey provides the random point used in the algorithm.</remarks>
  9. public class SM2KeyExchangePublicParameters
  10. : ICipherParameters
  11. {
  12. private readonly ECPublicKeyParameters mStaticPublicKey;
  13. private readonly ECPublicKeyParameters mEphemeralPublicKey;
  14. public SM2KeyExchangePublicParameters(
  15. ECPublicKeyParameters staticPublicKey,
  16. ECPublicKeyParameters ephemeralPublicKey)
  17. {
  18. if (staticPublicKey == null)
  19. throw new ArgumentNullException("staticPublicKey");
  20. if (ephemeralPublicKey == null)
  21. throw new ArgumentNullException("ephemeralPublicKey");
  22. if (!staticPublicKey.Parameters.Equals(ephemeralPublicKey.Parameters))
  23. throw new ArgumentException("Static and ephemeral public keys have different domain parameters");
  24. this.mStaticPublicKey = staticPublicKey;
  25. this.mEphemeralPublicKey = ephemeralPublicKey;
  26. }
  27. public virtual ECPublicKeyParameters StaticPublicKey
  28. {
  29. get { return mStaticPublicKey; }
  30. }
  31. public virtual ECPublicKeyParameters EphemeralPublicKey
  32. {
  33. get { return mEphemeralPublicKey; }
  34. }
  35. }
  36. }
  37. #pragma warning restore
  38. #endif