74 lines
11 KiB
Java
74 lines
11 KiB
Java
|
package org.bouncycastle.pqc.crypto.newhope;
|
|||
|
|
|||
|
import java.nio.ByteBuffer;
|
|||
|
import org.bouncycastle.i18n.LocalizedMessage;
|
|||
|
|
|||
|
/* loaded from: classes6.dex */
|
|||
|
class NTT {
|
|||
|
private static final short[] BitReverseTable;
|
|||
|
|
|||
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|||
|
public static void mulCoefficients(short[] sArr, short[] sArr2) {
|
|||
|
for (int i = 0; i < 1024; i++) {
|
|||
|
sArr[i] = Reduce.montgomery((sArr[i] & 65535) * (65535 & sArr2[i]));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|||
|
public static void core(short[] sArr, short[] sArr2) {
|
|||
|
for (int i = 0; i < 10; i += 2) {
|
|||
|
int i2 = 1 << i;
|
|||
|
for (int i3 = 0; i3 < i2; i3++) {
|
|||
|
int i4 = 0;
|
|||
|
int i5 = i3;
|
|||
|
while (i5 < 1023) {
|
|||
|
int i6 = sArr[i5] & 65535;
|
|||
|
int i7 = i5 + i2;
|
|||
|
int i8 = sArr[i7] & 65535;
|
|||
|
short s = sArr2[i4];
|
|||
|
sArr[i5] = (short) (i6 + i8);
|
|||
|
sArr[i7] = Reduce.montgomery(s * ((i6 + 36867) - i8));
|
|||
|
i5 += i2 << 1;
|
|||
|
i4++;
|
|||
|
}
|
|||
|
}
|
|||
|
int i9 = i2 << 1;
|
|||
|
for (int i10 = 0; i10 < i9; i10++) {
|
|||
|
int i11 = 0;
|
|||
|
int i12 = i10;
|
|||
|
while (i12 < 1023) {
|
|||
|
int i13 = sArr[i12] & 65535;
|
|||
|
int i14 = i12 + i9;
|
|||
|
int i15 = sArr[i14] & 65535;
|
|||
|
short s2 = sArr2[i11];
|
|||
|
sArr[i12] = Reduce.barrett((short) (i13 + i15));
|
|||
|
sArr[i14] = Reduce.montgomery(s2 * ((i13 + 36867) - i15));
|
|||
|
i12 += i2 << 2;
|
|||
|
i11++;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|||
|
public static void bitReverse(short[] sArr) {
|
|||
|
for (int i = 0; i < 1024; i++) {
|
|||
|
short s = BitReverseTable[i];
|
|||
|
if (i < s) {
|
|||
|
short s2 = sArr[i];
|
|||
|
sArr[i] = sArr[s];
|
|||
|
sArr[s] = s2;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
NTT() {
|
|||
|
}
|
|||
|
|
|||
|
static {
|
|||
|
short[] sArr = new short[1024];
|
|||
|
ByteBuffer.wrap("\u0000\u0000\u0002\u0000\u0001\u0000\u0003\u0000\u0000\u0080\u0002\u0080\u0001\u0080\u0003\u0080\u0000@\u0002@\u0001@\u0003@\u0000À\u0002À\u0001À\u0003À\u0000 \u0002 \u0001 \u0003 \u0000 \u0002 \u0001 \u0003 \u0000`\u0002`\u0001`\u0003`\u0000à\u0002à\u0001à\u0003à\u0000\u0010\u0002\u0010\u0001\u0010\u0003\u0010\u0000\u0090\u0002\u0090\u0001\u0090\u0003\u0090\u0000P\u0002P\u0001P\u0003P\u0000Ð\u0002Ð\u0001Ð\u0003Ð\u00000\u00020\u00010\u00030\u0000°\u0002°\u0001°\u0003°\u0000p\u0002p\u0001p\u0003p\u0000ð\u0002ð\u0001ð\u0003ð\u0000\b\u0002\b\u0001\b\u0003\b\u0000\u0088\u0002\u0088\u0001\u0088\u0003\u0088\u0000H\u0002H\u0001H\u0003H\u0000È\u0002È\u0001È\u0003È\u0000(\u0002(\u0001(\u0003(\u0000¨\u0002¨\u0001¨\u0003¨\u0000h\u0002h\u0001h\u0003h\u0000è\u0002è\u0001è\u0003è\u0000\u0018\u0002\u0018\u0001\u0018\u0003\u0018\u0000\u0098\u0002\u0098\u0001\u0098\u0003\u0098\u0000X\u0002X\u0001X\u0003X\u0000Ø\u0002Ø\u0001Ø\u0003Ø\u00008\u00028\u00018\u00038\u0000¸\u0002¸\u0001¸\u0003¸\u0000x\u0002x\u0001x\u0003x\u0000ø\u0002ø\u0001ø\u0003ø\u0000\u0004\u0002\u0004\u0001\u0004\u0003\u0004\u0000\u0084\u0002\u0084\u0001\u0084\u0003\u0084\u0000D\u0002D\u0001D\u0003D\u0000Ä\u0002Ä\u0001Ä\u0003Ä\u0000$\u0002$\u0001$\u0003$\u0000¤\u0002¤\u0001¤\u0003¤\u0000d\u0002d\u0001d\u0003d\u0000ä\u0002ä\u0001ä\u0003ä\u0000\u0014\u0002\u0014\u0001\u0014\u0003\u0014\u0000\u0094\u0002\u0094\u0001\u0094\u0003\u0094\u0000T\u0002T\u0001T\u0003T\u0000Ô\u0002Ô\u0001Ô\u0003Ô\u00004\u00024\u00014\u00034\u0000´\u0002´\u0001´\u0003´\u0000t\u0002t\u0001t\u0003t\u0000ô\u0002ô\u0001ô\u0003ô\u0000\f\u0002\f\u0001\f\u0003\f\u0000\u008c\u0002\u008c\u0001\u008c\u0003\u008c\u0000L\u0002L\u0001L\u0003L\u0000Ì\u0002Ì\u0001Ì\u0003Ì\u0000,\u0002,\u0001,\u0003,\u0000¬\u0002¬\u0001¬\u0003¬\u0000l\u0002l\u0001l\u0003l\u0000ì\u0002ì\u0001ì\u0003ì\u0000\u001c\u0002\u001c\u0001\u001c\u0003\u001c\u0000\u009c\u0002\u009c\u0001\u009c\u0003\u009c\u0000\\\u0002\\\u0001\\\u0003\\\u0000Ü\u0002Ü\u0001Ü\u0003Ü\u0000<\u0002<\u0001<\u0003<\u0000¼\u0002¼\u0001¼\u0003¼\u0000|\u0002|\u0001|\u0003|\u0000ü\u0002ü\u0001ü\u0003ü\u0000\u0002\u0002\u0002\u0001\u0002\u0003\u0002\u0000\u0082\u0002\u0082\u0001\u0082\u0003\u0082\u0000B\u0002B\u0001B\u0003B\u0000Â\u0002Â\u0001Â\u0003Â\u0000\"\u0002\"\u0001\"\u0003\"\u0000¢\u0002¢\u0001¢\u0003¢\u0000b\u0002b\u0001b\u0003b\u0000â\u0002â\u0001â\u0003â\u0000\u0012\u0002\u0012\u0001\u0012\u0003\u0012\u0000\u0092\u0002\u0092\u0001\u0092\u0003\u0092\u0000R\u0002R\u0001R\u0003R\u0000Ò\u0002Ò\u0001Ò\u0003Ò\u00002\u00022\u00012\u00032\u0000²\u0002²\u0001²\u0003²\u0000r\u0002r\u0001r\u0003r\u0000ò\u0002ò\u0001ò\u0003ò\u0000\n\u0002\n\u0001\n\u0003\n\u0000\u008a\u0002\u008a\u0001\u008a\u0003\u008a\u0000J\u0002J\u0001J\u0003J\u0000Ê\u0002Ê\u0001Ê\u0003Ê\u0000*\u0002*\u0001*\u0003*\u0000ª\u0002ª\u0001ª\u0003ª\u0000j\u0002j\u0001j\u0003j\u0000ê\u0002ê\u0001ê\u0003ê\u0000\u001a\u0002\u001a\u0001\u001a\u0003\u001a\u0000\u009a\u0002\u009a\u0001\u009a\u0003\u009a\u0000Z\u0002Z\u0001Z\u0003Z\u0000Ú\u0002Ú\u0001Ú\u0003Ú\u0000:\u0002:\u0001:\u0003:\u0000º\u0002º\u0001º\u0003º\u0000z\u0002z\u0001z\u0003z\u0000ú\u0002ú\u0001ú\u0003ú\u0000\u0006\u0002\u0006\u0001\u0006\u0003\u0006\u0000\u0086\u0002\u0086\u0001\u0086\u0003\u0086\u0000F\u0002F\u0001F\u0003F\u0000Æ\u0002Æ\u0001Æ\u0003Æ\u0000&\u0002&\u0001&\u0003&\u0000¦\u0002¦\u0001¦\u0003¦\u0000f\u0002f\u0001f\u0003f\u0000æ\u0002æ\u0001æ\u0003æ\u0000\u0016\u0002\u0016\u0001\u0016\u0003\u0016\u0000\u0096\u0002\u0096\u0001\u0096\u0003\u0096\u0000V\u0002V\u0001V\u0003V\u0000Ö\u0002Ö\u0001Ö\u0003Ö\u00006\u00026\u00016\u00036\u0000¶\u0002¶\u0001¶\u0003¶\u0000v\u0002v\u0001v\u0003v\u0000ö\u0002ö\u0001ö\u0003ö\u0000\u000e\u0002\u000e\u0001\u000e\u0003\u000e\u0000\u008e\u0002\u008e\u0001\u008e\u0003\u008e\u0000N\u0002N\u0001N\u0003N\u0000Î\u0002Î\u0001Î\u0003Î\u0000.\u0002.\u0001.\u0003.\u0000®\u0002®\u0001®\u0003®\u0000n\u0002n\u0001n\u0003n\u
|
|||
|
BitReverseTable = sArr;
|
|||
|
}
|
|||
|
}
|