secp256k1ScalarAdd static method
Implementation
static int secp256k1ScalarAdd(
Secp256k1Scalar r, Secp256k1Scalar a, Secp256k1Scalar b) {
int overflow;
Secp256k1Uint128 t = Secp256k1Uint128();
secp256k1ScalarVerify(a);
secp256k1ScalarVerify(b);
secp256k1U128FromU64(t, a[0]);
secp256k1U128AccumU64(t, b[0]);
r[0] = secp256k1U128ToU64(t);
secp256k1U128Rshift(t, 64);
secp256k1U128AccumU64(t, a[1]);
secp256k1U128AccumU64(t, b[1]);
r[1] = secp256k1U128ToU64(t);
secp256k1U128Rshift(t, 64);
secp256k1U128AccumU64(t, a[2]);
secp256k1U128AccumU64(t, b[2]);
r[2] = secp256k1U128ToU64(t);
secp256k1U128Rshift(t, 64);
secp256k1U128AccumU64(t, a[3]);
secp256k1U128AccumU64(t, b[3]);
r[3] = secp256k1U128ToU64(t);
secp256k1U128Rshift(t, 64);
overflow = secp256k1U128ToU64(t).toInt() + secp256k1ScalarCheckOverflow(r);
_cond(overflow == 0 || overflow == 1, "secp256k1ScalarAdd");
secp256k1ScalarReduce(r, overflow);
secp256k1ScalarVerify(r);
return overflow.toInt();
}