isInMainSubgroup function

bool isInMainSubgroup(
  1. List<Int32List> point
)

Implementation

bool isInMainSubgroup(List<Int32List> point) {
  var tweetNacl = tweet_nacl.TweetNaCl();
  final L = tweetNacl.L;
  final result = [gf(), gf(), gf(), gf()];
  // multiply by group order
  tweetNacl.scalarmult(result, point, L, 0);
  // check if result is neutral element
  final areEqual = tweetNacl.neq25519(result[1], result[2]);
  final isZero = tweetNacl.neq25519(gf(), result[0]);
  // yes, this is supposed to be bit OR
  return 0 == (areEqual | isZero);
}