init commit

This commit is contained in:
2025-10-09 09:57:24 +09:00
commit 4d551bd74f
6636 changed files with 1218703 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
using System;
namespace Org.BouncyCastle.Math.EC;
public abstract class AbstractFpPoint : ECPointBase
{
protected internal override bool CompressionYTilde => AffineYCoord.TestBitZero();
protected AbstractFpPoint(ECCurve curve, ECFieldElement x, ECFieldElement y, bool withCompression)
: base(curve, x, y, withCompression)
{
}
protected AbstractFpPoint(ECCurve curve, ECFieldElement x, ECFieldElement y, ECFieldElement[] zs, bool withCompression)
: base(curve, x, y, zs, withCompression)
{
}
protected override bool SatisfiesCurveEquation()
{
ECFieldElement rawXCoord = base.RawXCoord;
ECFieldElement rawYCoord = base.RawYCoord;
ECFieldElement eCFieldElement = Curve.A;
ECFieldElement eCFieldElement2 = Curve.B;
ECFieldElement eCFieldElement3 = rawYCoord.Square();
switch (CurveCoordinateSystem)
{
case 1:
{
ECFieldElement eCFieldElement6 = base.RawZCoords[0];
if (!eCFieldElement6.IsOne)
{
ECFieldElement b3 = eCFieldElement6.Square();
ECFieldElement b4 = eCFieldElement6.Multiply(b3);
eCFieldElement3 = eCFieldElement3.Multiply(eCFieldElement6);
eCFieldElement = eCFieldElement.Multiply(b3);
eCFieldElement2 = eCFieldElement2.Multiply(b4);
}
break;
}
case 2:
case 3:
case 4:
{
ECFieldElement eCFieldElement4 = base.RawZCoords[0];
if (!eCFieldElement4.IsOne)
{
ECFieldElement eCFieldElement5 = eCFieldElement4.Square();
ECFieldElement b = eCFieldElement5.Square();
ECFieldElement b2 = eCFieldElement5.Multiply(b);
eCFieldElement = eCFieldElement.Multiply(b);
eCFieldElement2 = eCFieldElement2.Multiply(b2);
}
break;
}
default:
throw new InvalidOperationException("unsupported coordinate system");
case 0:
break;
}
ECFieldElement other = rawXCoord.Square().Add(eCFieldElement).Multiply(rawXCoord)
.Add(eCFieldElement2);
return eCFieldElement3.Equals(other);
}
public override ECPoint Subtract(ECPoint b)
{
if (b.IsInfinity)
{
return this;
}
return Add(b.Negate());
}
}