secp256k1FeFromSigned62 static method

void secp256k1FeFromSigned62(
  1. Secp256k1Fe r,
  2. Secp256k1ModinvSigned a
)

Implementation

static void secp256k1FeFromSigned62(Secp256k1Fe r, Secp256k1ModinvSigned a) {
  final BigInt m52 = (maxU64 >> 12).toUnsigned64;
  final BigInt a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4];
  _cond(a0 >> 62 == BigInt.zero, "secp256k1FeFromSigned62");
  _cond(a1 >> 62 == BigInt.zero, "secp256k1FeFromSigned62");
  _cond(a2 >> 62 == BigInt.zero, "secp256k1FeFromSigned62");
  _cond(a3 >> 62 == BigInt.zero, "secp256k1FeFromSigned62");
  _cond(a4 >> 8 == BigInt.zero, "secp256k1FeFromSigned62");

  r[0] = a0 & m52;
  r[1] = (a0 >> 52 | a1 << 10) & m52;
  r[2] = (a1 >> 42 | a2 << 20) & m52;
  r[3] = (a2 >> 32 | a3 << 30) & m52;
  r[4] = (a3 >> 22 | a4 << 40);
}