operator + method
Implementation
@override
ECPoint? operator +(ECPoint? b) {
if (isInfinity) {
return b;
}
if (b!.isInfinity) {
return this;
}
// Check if b = this or b = -this
if (x == b.x) {
if (y == b.y) {
// this = b, i.e. this must be doubled
return twice();
}
// this = -b, i.e. the result is the point at infinity
return curve.infinity as ECPoint?;
}
var gamma = (b.y! - y!) / (b.x! - x!);
var x3 = (gamma.square() - x!) - b.x!;
var y3 = (gamma * (x! - x3)) - y!;
return ECPoint(curve as ECCurve, x3 as ECFieldElement?,
y3 as ECFieldElement?, isCompressed);
}