decompress method
Implementation
EdwardsPoint decompress() {
final FieldElement y = FieldElement.fromByteArray(data);
final FieldElement ySquare = y.square();
final FieldElement u = ySquare - FieldElement.one;
final FieldElement v = ySquare * _d + FieldElement.one;
final SqrtRatioM1Result sqrt = FieldElement.sqrtRatioM1(u, v);
if (sqrt.wasSquare != 1) {
throw const FormatException('not a valid point');
}
final FieldElement sqrtResult = sqrt.result;
final int isNegative = sqrtResult.isNegative();
final FieldElement x =
(-sqrt.result).select(sqrt.result, isNegative.fastEqual(data.bit(255)));
return EdwardsPoint(x, y, FieldElement.one, x * y);
}