P128Pow5T3Fq constructor

P128Pow5T3Fq({
  1. MdsGenerateResult<VestaFq>? constants,
})

Implementation

factory P128Pow5T3Fq({MdsGenerateResult<VestaFq>? constants}) {
  if (constants != null && !PoseidonSpec.isValidConstants(constants)) {
    throw ArgumentException.invalidOperationArguments(
      "P128Pow5T3Fq",
      reason: "Invalid constants length.",
    );
  }
  constants ??= PoseidonUtils.generateConstants<VestaFq>(
    fromBytes: (bytes) {
      if (bytes.length == 32) {
        return VestaFq.fromBytes(bytes);
      }
      return VestaFq.fromBytes64(bytes);
    },
    zero: VestaFq.zero(),
    one: VestaFq.one(),
  );
  return P128Pow5T3Fq._(constants);
}