init commit
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
|
||||
namespace Org.BouncyCastle.Math.EC;
|
||||
|
||||
public 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");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user