groupHash<SCALAR extends JubJubScalar<SCALAR>, E extends BaseJubJubPoint<SCALAR, E>> static method

E? groupHash<SCALAR extends JubJubScalar<SCALAR>, E extends BaseJubJubPoint<SCALAR, E>>({
  1. required List<int> tag,
  2. required List<int> personalization,
  3. required E fromBytes(
    1. List<int> bytes
    ),
})

Implementation

static E? groupHash<
  SCALAR extends JubJubScalar<SCALAR>,
  E extends BaseJubJubPoint<SCALAR, E>
>({
  required List<int> tag,
  required List<int> personalization,
  required E Function(List<int> bytes) fromBytes,
}) {
  assert(personalization.length == 8);
  final hash = QuickCrypto.blake2s256Hash(
    ghFirstBlock,
    extraBlocks: [tag],
    personalization: personalization,
  );
  try {
    final p = fromBytes(hash).mulByCofactor();
    if (p.isIdentity()) return null;
    return p;
  } catch (_) {}
  return null;
}