PallasNativePoint.hashToCurve constructor
PallasNativePoint.hashToCurve(
{ - required String domainPrefix,
- required List<int> message,
})
Implementation
factory PallasNativePoint.hashToCurve({
required String domainPrefix,
required List<int> message,
}) {
final hashToField = PastaUtils.hashToFiled(
curveId: PastaCurveParams.pallas.name.curveId,
domainPrefix: domainPrefix,
message: message,
);
final PallasNativeFp a = PallasNativeFp.fromBytes64(hashToField.$1);
final PallasNativeFp b = PallasNativeFp.fromBytes64(hashToField.$2);
final q0 = PastaUtils.mapToCurveSimpleSwu(
u: a,
theta: PallasNativeFp.theta(),
z: PallasNativeFp.z(),
isogenyParams: PastaCurveParams.isoPallasNative,
r: PallasNativeFp.r(),
);
final q0Point = PallasIsoNativePoint(x: q0.$1, y: q0.$2, z: q0.$3);
final q1 = PastaUtils.mapToCurveSimpleSwu(
u: b,
theta: PallasNativeFp.theta(),
z: PallasNativeFp.z(),
isogenyParams: PastaCurveParams.isoPallasNative,
r: PallasNativeFp.r(),
);
final q1Point = PallasIsoNativePoint(x: q1.$1, y: q1.$2, z: q1.$3);
final r = q0Point + q1Point;
assert(r.isOnCurve());
final point = PastaUtils.isoMap(
p: (r.x, r.y, r.z),
iso: PallasFPConst.isogenyConstantsNative,
);
return PallasNativePoint(x: point.$1, y: point.$2, z: point.$3);
}