package org.bouncycastle.crypto.digests; import org.bouncycastle.crypto.ExtendedDigest; import org.bouncycastle.util.Memoable; import org.bouncycastle.util.Pack; /* loaded from: classes6.dex */ public abstract class LongDigest implements ExtendedDigest, Memoable, EncodableDigest { private static final int BYTE_LENGTH = 128; static final long[] K = {4794697086780616226L, 8158064640168781261L, -5349999486874862801L, -1606136188198331460L, 4131703408338449720L, 6480981068601479193L, -7908458776815382629L, -6116909921290321640L, -2880145864133508542L, 1334009975649890238L, 2608012711638119052L, 6128411473006802146L, 8268148722764581231L, -9160688886553864527L, -7215885187991268811L, -4495734319001033068L, -1973867731355612462L, -1171420211273849373L, 1135362057144423861L, 2597628984639134821L, 3308224258029322869L, 5365058923640841347L, 6679025012923562964L, 8573033837759648693L, -7476448914759557205L, -6327057829258317296L, -5763719355590565569L, -4658551843659510044L, -4116276920077217854L, -3051310485924567259L, 489312712824947311L, 1452737877330783856L, 2861767655752347644L, 3322285676063803686L, 5560940570517711597L, 5996557281743188959L, 7280758554555802590L, 8532644243296465576L, -9096487096722542874L, -7894198246740708037L, -6719396339535248540L, -6333637450476146687L, -4446306890439682159L, -4076793802049405392L, -3345356375505022440L, -2983346525034927856L, -860691631967231958L, 1182934255886127544L, 1847814050463011016L, 2177327727835720531L, 2830643537854262169L, 3796741975233480872L, 4115178125766777443L, 5681478168544905931L, 6601373596472566643L, 7507060721942968483L, 8399075790359081724L, 8693463985226723168L, -8878714635349349518L, -8302665154208450068L, -8016688836872298968L, -6606660893046293015L, -4685533653050689259L, -4147400797238176981L, -3880063495543823972L, -3348786107499101689L, -1523767162380948706L, -757361751448694408L, 500013540394364858L, 748580250866718886L, 1242879168328830382L, 1977374033974150939L, 2944078676154940804L, 3659926193048069267L, 4368137639120453308L, 4836135668995329356L, 5532061633213252278L, 6448918945643986474L, 6902733635092675308L, 7801388544844847127L}; protected long H1; protected long H2; protected long H3; protected long H4; protected long H5; protected long H6; protected long H7; protected long H8; private long[] W; private long byteCount1; private long byteCount2; private int wOff; private byte[] xBuf; private int xBufOff; private long Ch(long j, long j2, long j3) { return (j & j2) ^ (j3 & (~j)); } private long Maj(long j, long j2, long j3) { return ((j & j2) ^ (j & j3)) ^ (j2 & j3); } private long Sigma0(long j) { return (((j >>> 8) | (j << 56)) ^ ((j << 63) | (j >>> 1))) ^ (j >>> 7); } private long Sigma1(long j) { return (((j >>> 61) | (j << 3)) ^ ((j << 45) | (j >>> 19))) ^ (j >>> 6); } private long Sum0(long j) { return (((j >>> 34) | (j << 30)) ^ ((j << 36) | (j >>> 28))) ^ ((j >>> 39) | (j << 25)); } private long Sum1(long j) { return (((j >>> 18) | (j << 46)) ^ ((j << 50) | (j >>> 14))) ^ ((j >>> 41) | (j << 23)); } @Override // org.bouncycastle.crypto.ExtendedDigest public int getByteLength() { return 128; } @Override // org.bouncycastle.crypto.Digest public void update(byte[] bArr, int i, int i2) { while (this.xBufOff != 0 && i2 > 0) { update(bArr[i]); i++; i2--; } while (i2 > this.xBuf.length) { processWord(bArr, i); byte[] bArr2 = this.xBuf; i += bArr2.length; i2 -= bArr2.length; this.byteCount1 += bArr2.length; } while (i2 > 0) { update(bArr[i]); i++; i2--; } } @Override // org.bouncycastle.crypto.Digest public void update(byte b) { byte[] bArr = this.xBuf; int i = this.xBufOff; int i2 = i + 1; this.xBufOff = i2; bArr[i] = b; if (i2 == bArr.length) { processWord(bArr, 0); this.xBufOff = 0; } this.byteCount1++; } /* JADX INFO: Access modifiers changed from: protected */ public void restoreState(byte[] bArr) { int bigEndianToInt = Pack.bigEndianToInt(bArr, 8); this.xBufOff = bigEndianToInt; System.arraycopy(bArr, 0, this.xBuf, 0, bigEndianToInt); this.byteCount1 = Pack.bigEndianToLong(bArr, 12); this.byteCount2 = Pack.bigEndianToLong(bArr, 20); this.H1 = Pack.bigEndianToLong(bArr, 28); this.H2 = Pack.bigEndianToLong(bArr, 36); this.H3 = Pack.bigEndianToLong(bArr, 44); this.H4 = Pack.bigEndianToLong(bArr, 52); this.H5 = Pack.bigEndianToLong(bArr, 60); this.H6 = Pack.bigEndianToLong(bArr, 68); this.H7 = Pack.bigEndianToLong(bArr, 76); this.H8 = Pack.bigEndianToLong(bArr, 84); this.wOff = Pack.bigEndianToInt(bArr, 92); for (int i = 0; i < this.wOff; i++) { this.W[i] = Pack.bigEndianToLong(bArr, (i << 3) + 96); } } @Override // org.bouncycastle.crypto.Digest public void reset() { this.byteCount1 = 0L; this.byteCount2 = 0L; int i = 0; this.xBufOff = 0; int i2 = 0; while (true) { byte[] bArr = this.xBuf; if (i2 >= bArr.length) { break; } bArr[i2] = 0; i2++; } this.wOff = 0; while (true) { long[] jArr = this.W; if (i == jArr.length) { return; } jArr[i] = 0; i++; } } protected void processWord(byte[] bArr, int i) { this.W[this.wOff] = Pack.bigEndianToLong(bArr, i); int i2 = this.wOff + 1; this.wOff = i2; if (i2 == 16) { processBlock(); } } protected void processLength(long j, long j2) { if (this.wOff > 14) { processBlock(); } long[] jArr = this.W; jArr[14] = j2; jArr[15] = j; } protected void processBlock() { adjustByteCounts(); for (int i = 16; i <= 79; i++) { long[] jArr = this.W; long Sigma1 = Sigma1(jArr[i - 2]); long[] jArr2 = this.W; jArr[i] = Sigma1 + jArr2[i - 7] + Sigma0(jArr2[i - 15]) + this.W[i - 16]; } long j = this.H1; long j2 = this.H2; long j3 = this.H3; long j4 = this.H4; long j5 = this.H5; long j6 = this.H6; long j7 = this.H7; long j8 = j6; long j9 = j4; int i2 = 0; long j10 = j2; long j11 = j3; long j12 = j5; int i3 = 0; long j13 = this.H8; long j14 = j; long j15 = j7; while (i3 < 10) { long Sum1 = Sum1(j12); long j16 = j12; long Ch = Ch(j12, j8, j15); long[] jArr3 = K; int i4 = i2 + 1; long j17 = j13 + Sum1 + Ch + jArr3[i2] + this.W[i2]; long j18 = j9 + j17; long Sum0 = j17 + Sum0(j14) + Maj(j14, j10, j11); int i5 = i2 + 2; long Sum12 = j15 + Sum1(j18) + Ch(j18, j16, j8) + jArr3[i4] + this.W[i4]; long j19 = j11 + Sum12; long Sum02 = Sum12 + Sum0(Sum0) + Maj(Sum0, j14, j10); int i6 = i2 + 3; long Sum13 = j8 + Sum1(j19) + Ch(j19, j18, j16) + jArr3[i5] + this.W[i5]; long j20 = j10 + Sum13; long Sum03 = Sum13 + Sum0(Sum02) + Maj(Sum02, Sum0, j14); int i7 = i2 + 4; long Sum14 = j16 + Sum1(j20) + Ch(j20, j19, j18) + jArr3[i6] + this.W[i6]; long j21 = j14 + Sum14; long Sum04 = Sum14 + Sum0(Sum03) + Maj(Sum03, Sum02, Sum0); int i8 = i2 + 5; long Sum15 = j18 + Sum1(j21) + Ch(j21, j20, j19) + jArr3[i7] + this.W[i7]; long j22 = Sum0 + Sum15; long Sum05 = Sum15 + Sum0(Sum04) + Maj(Sum04, Sum03, Sum02); int i9 = i2 + 6; long Sum16 = j19 + Sum1(j22) + Ch(j22, j21, j20) + jArr3[i8] + this.W[i8]; long j23 = Sum02 + Sum16; long Sum06 = Sum16 + Sum0(Sum05) + Maj(Sum05, Sum04, Sum03); j15 = j23; int i10 = i2 + 7; long Sum17 = j20 + Sum1(j23) + Ch(j23, j22, j21) + jArr3[i9] + this.W[i9]; long j24 = Sum03 + Sum17; long Sum07 = Sum0(Sum06); long Maj = Maj(Sum06, Sum05, Sum04); j10 = Sum17 + Sum07 + Maj; i2 += 8; long Sum18 = j21 + Sum1(j24) + Ch(j24, j15, j22) + jArr3[i10] + this.W[i10]; long Sum08 = Sum0(j10); long Maj2 = Maj(j10, Sum06, Sum05); i3++; j12 = Sum04 + Sum18; j14 = Sum18 + Sum08 + Maj2; j8 = j24; j11 = Sum06; j13 = j22; j9 = Sum05; } this.H1 += j14; this.H2 += j10; this.H3 += j11; this.H4 += j9; this.H5 += j12; this.H6 += j8; this.H7 += j15; this.H8 += j13; this.wOff = 0; for (int i11 = 0; i11 < 16; i11++) { this.W[i11] = 0; } } /* JADX INFO: Access modifiers changed from: protected */ public void populateState(byte[] bArr) { System.arraycopy(this.xBuf, 0, bArr, 0, this.xBufOff); Pack.intToBigEndian(this.xBufOff, bArr, 8); Pack.longToBigEndian(this.byteCount1, bArr, 12); Pack.longToBigEndian(this.byteCount2, bArr, 20); Pack.longToBigEndian(this.H1, bArr, 28); Pack.longToBigEndian(this.H2, bArr, 36); Pack.longToBigEndian(this.H3, bArr, 44); Pack.longToBigEndian(this.H4, bArr, 52); Pack.longToBigEndian(this.H5, bArr, 60); Pack.longToBigEndian(this.H6, bArr, 68); Pack.longToBigEndian(this.H7, bArr, 76); Pack.longToBigEndian(this.H8, bArr, 84); Pack.intToBigEndian(this.wOff, bArr, 92); for (int i = 0; i < this.wOff; i++) { Pack.longToBigEndian(this.W[i], bArr, (i << 3) + 96); } } /* JADX INFO: Access modifiers changed from: protected */ public int getEncodedStateSize() { return (this.wOff << 3) + 96; } public void finish() { adjustByteCounts(); long j = this.byteCount1; long j2 = this.byteCount2; byte b = Byte.MIN_VALUE; while (true) { update(b); if (this.xBufOff == 0) { processLength(j << 3, j2); processBlock(); return; } b = 0; } } /* JADX INFO: Access modifiers changed from: protected */ public void copyIn(LongDigest longDigest) { byte[] bArr = longDigest.xBuf; System.arraycopy(bArr, 0, this.xBuf, 0, bArr.length); this.xBufOff = longDigest.xBufOff; this.byteCount1 = longDigest.byteCount1; this.byteCount2 = longDigest.byteCount2; this.H1 = longDigest.H1; this.H2 = longDigest.H2; this.H3 = longDigest.H3; this.H4 = longDigest.H4; this.H5 = longDigest.H5; this.H6 = longDigest.H6; this.H7 = longDigest.H7; this.H8 = longDigest.H8; long[] jArr = longDigest.W; System.arraycopy(jArr, 0, this.W, 0, jArr.length); this.wOff = longDigest.wOff; } private void adjustByteCounts() { long j = this.byteCount1; if (j > 2305843009213693951L) { this.byteCount2 += j >>> 61; this.byteCount1 = j & 2305843009213693951L; } } /* JADX INFO: Access modifiers changed from: protected */ public LongDigest(LongDigest longDigest) { this.xBuf = new byte[8]; this.W = new long[80]; copyIn(longDigest); } /* JADX INFO: Access modifiers changed from: protected */ public LongDigest() { this.xBuf = new byte[8]; this.W = new long[80]; this.xBufOff = 0; reset(); } }