secp256k1ScalarFromSigned62 static method

void secp256k1ScalarFromSigned62(
  1. Secp256k1Scalar r,
  2. Secp256k1ModinvSigned a
)

Implementation

static void secp256k1ScalarFromSigned62(
    Secp256k1Scalar r, Secp256k1ModinvSigned a) {
  BigInt a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4];

  _cond(a0 >> 62 == BigInt.zero, "secp256k1ScalarFromSigned62");
  _cond(a1 >> 62 == BigInt.zero, "secp256k1ScalarFromSigned62");
  _cond(a2 >> 62 == BigInt.zero, "secp256k1ScalarFromSigned62");
  _cond(a3 >> 62 == BigInt.zero, "secp256k1ScalarFromSigned62");
  _cond(a4 >> 8 == BigInt.zero, "secp256k1ScalarFromSigned62");

  r[0] = (a0 | a1 << 62).toUnsigned64;
  r[1] = (a1 >> 2 | a2 << 60).toUnsigned64;
  r[2] = (a2 >> 4 | a3 << 58).toUnsigned64;
  r[3] = (a3 >> 6 | a4 << 56).toUnsigned64;

  secp256k1ScalarVerify(r);
}