<PackageReference Include="SSH.NET" Version="2020.0.0" />

AbstractF2mFieldElement

using System; namespace Renci.SshNet.Security.Org.BouncyCastle.Math.EC { internal abstract class AbstractF2mFieldElement : ECFieldElement { public virtual ECFieldElement HalfTrace() { int fieldSize = FieldSize; if ((fieldSize & 1) == 0) throw new InvalidOperationException("Half-trace only defined for odd m"); ECFieldElement eCFieldElement = this; ECFieldElement eCFieldElement2 = eCFieldElement; for (int i = 2; i < fieldSize; i += 2) { eCFieldElement = eCFieldElement.SquarePow(2); eCFieldElement2 = eCFieldElement2.Add(eCFieldElement); } return eCFieldElement2; } public virtual int Trace() { int fieldSize = FieldSize; ECFieldElement eCFieldElement = this; ECFieldElement eCFieldElement2 = eCFieldElement; for (int i = 1; i < fieldSize; i++) { eCFieldElement = eCFieldElement.Square(); eCFieldElement2 = eCFieldElement2.Add(eCFieldElement); } if (eCFieldElement2.IsZero) return 0; if (eCFieldElement2.IsOne) return 1; throw new InvalidOperationException("Internal error in trace calculation"); } } }