package org.bouncycastle.math.ec.custom.sec; import java.math.BigInteger; import org.bouncycastle.math.raw.Nat; import org.bouncycastle.math.raw.Nat256; /* loaded from: classes6.dex */ public class SecP256K1Field { private static final int P7 = -1; private static final int PExt15 = -1; private static final int PInv33 = 977; static final int[] P = {-977, -2, -1, -1, -1, -1, -1, -1}; static final int[] PExt = {954529, 1954, 1, 0, 0, 0, 0, 0, -1954, -3, -1, -1, -1, -1, -1, -1}; private static final int[] PExtInv = {-954529, -1955, -2, -1, -1, -1, -1, -1, 1953, 2}; public static void twice(int[] iArr, int[] iArr2) { if (Nat.shiftUpBit(8, iArr, 0, iArr2) != 0 || (iArr2[7] == -1 && Nat256.gte(iArr2, P))) { Nat.add33To(8, PInv33, iArr2); } } public static void subtractExt(int[] iArr, int[] iArr2, int[] iArr3) { if (Nat.sub(16, iArr, iArr2, iArr3) != 0) { int[] iArr4 = PExtInv; if (Nat.subFrom(iArr4.length, iArr4, iArr3) != 0) { Nat.decAt(16, iArr3, iArr4.length); } } } public static void subtract(int[] iArr, int[] iArr2, int[] iArr3) { if (Nat256.sub(iArr, iArr2, iArr3) != 0) { Nat.sub33From(8, PInv33, iArr3); } } public static void squareN(int[] iArr, int i, int[] iArr2) { int[] createExt = Nat256.createExt(); Nat256.square(iArr, createExt); while (true) { reduce(createExt, iArr2); i--; if (i <= 0) { return; } else { Nat256.square(iArr2, createExt); } } } public static void square(int[] iArr, int[] iArr2) { int[] createExt = Nat256.createExt(); Nat256.square(iArr, createExt); reduce(createExt, iArr2); } public static void reduce32(int i, int[] iArr) { if ((i == 0 || Nat256.mul33WordAdd(PInv33, i, iArr, 0) == 0) && !(iArr[7] == -1 && Nat256.gte(iArr, P))) { return; } Nat.add33To(8, PInv33, iArr); } public static void reduce(int[] iArr, int[] iArr2) { if (Nat256.mul33DWordAdd(PInv33, Nat256.mul33Add(PInv33, iArr, 8, iArr, 0, iArr2, 0), iArr2, 0) != 0 || (iArr2[7] == -1 && Nat256.gte(iArr2, P))) { Nat.add33To(8, PInv33, iArr2); } } public static void negate(int[] iArr, int[] iArr2) { if (Nat256.isZero(iArr)) { Nat256.zero(iArr2); } else { Nat256.sub(P, iArr, iArr2); } } public static void multiplyAddToExt(int[] iArr, int[] iArr2, int[] iArr3) { if (Nat256.mulAddTo(iArr, iArr2, iArr3) != 0 || (iArr3[15] == -1 && Nat.gte(16, iArr3, PExt))) { int[] iArr4 = PExtInv; if (Nat.addTo(iArr4.length, iArr4, iArr3) != 0) { Nat.incAt(16, iArr3, iArr4.length); } } } public static void multiply(int[] iArr, int[] iArr2, int[] iArr3) { int[] createExt = Nat256.createExt(); Nat256.mul(iArr, iArr2, createExt); reduce(createExt, iArr3); } public static void half(int[] iArr, int[] iArr2) { if ((iArr[0] & 1) == 0) { Nat.shiftDownBit(8, iArr, 0, iArr2); } else { Nat.shiftDownBit(8, iArr2, Nat256.add(iArr, P, iArr2)); } } public static int[] fromBigInteger(BigInteger bigInteger) { int[] fromBigInteger = Nat256.fromBigInteger(bigInteger); if (fromBigInteger[7] == -1) { int[] iArr = P; if (Nat256.gte(fromBigInteger, iArr)) { Nat256.subFrom(iArr, fromBigInteger); } } return fromBigInteger; } public static void addOne(int[] iArr, int[] iArr2) { if (Nat.inc(8, iArr, iArr2) != 0 || (iArr2[7] == -1 && Nat256.gte(iArr2, P))) { Nat.add33To(8, PInv33, iArr2); } } public static void addExt(int[] iArr, int[] iArr2, int[] iArr3) { if (Nat.add(16, iArr, iArr2, iArr3) != 0 || (iArr3[15] == -1 && Nat.gte(16, iArr3, PExt))) { int[] iArr4 = PExtInv; if (Nat.addTo(iArr4.length, iArr4, iArr3) != 0) { Nat.incAt(16, iArr3, iArr4.length); } } } public static void add(int[] iArr, int[] iArr2, int[] iArr3) { if (Nat256.add(iArr, iArr2, iArr3) != 0 || (iArr3[7] == -1 && Nat256.gte(iArr3, P))) { Nat.add33To(8, PInv33, iArr3); } } }