<PackageReference Include="BouncyCastle.Cryptography" Version="2.6.1" />

ECPublicKeyParameters

using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Math.EC; namespace Org.BouncyCastle.Crypto.Parameters { public class ECPublicKeyParameters : ECKeyParameters { private readonly ECPoint m_q; public ECPoint Q => m_q; public ECPublicKeyParameters(ECPoint q, ECDomainParameters parameters) : this("EC", q, parameters) { } public ECPublicKeyParameters(string algorithm, ECPoint q, ECDomainParameters parameters) : base(algorithm, false, parameters) { m_q = ECDomainParameters.ValidatePublicPoint(base.Parameters.Curve, q); } public ECPublicKeyParameters(string algorithm, ECPoint q, DerObjectIdentifier publicKeyParamSet) : base(algorithm, false, publicKeyParamSet) { m_q = ECDomainParameters.ValidatePublicPoint(base.Parameters.Curve, q); } public override bool Equals(object obj) { ECPublicKeyParameters eCPublicKeyParameters = obj as ECPublicKeyParameters; if (eCPublicKeyParameters != null) return Equals(eCPublicKeyParameters); return false; } protected bool Equals(ECPublicKeyParameters other) { if (m_q.Equals(other.m_q)) return Equals((ECKeyParameters)other); return false; } public override int GetHashCode() { return m_q.GetHashCode() ^ base.GetHashCode(); } } }