package org.bouncycastle.crypto.digests; import com.google.common.base.Ascii; import com.google.common.primitives.UnsignedBytes; import org.bouncycastle.pqc.jcajce.spec.McElieceCCA2KeyGenParameterSpec; import org.bouncycastle.util.Memoable; import org.bouncycastle.util.Pack; /* loaded from: classes6.dex */ public class SHA1Digest extends GeneralDigest implements EncodableDigest { private static final int DIGEST_LENGTH = 20; private static final int Y1 = 1518500249; private static final int Y2 = 1859775393; private static final int Y3 = -1894007588; private static final int Y4 = -899497514; private int H1; private int H2; private int H3; private int H4; private int H5; private int[] X; private int xOff; private int f(int i, int i2, int i3) { return (i & i2) | (i3 & (~i)); } private int g(int i, int i2, int i3) { return (i & i2) | (i & i3) | (i2 & i3); } private int h(int i, int i2, int i3) { return (i ^ i2) ^ i3; } @Override // org.bouncycastle.crypto.Digest public int getDigestSize() { return 20; } @Override // org.bouncycastle.util.Memoable public void reset(Memoable memoable) { SHA1Digest sHA1Digest = (SHA1Digest) memoable; super.copyIn((GeneralDigest) sHA1Digest); copyIn(sHA1Digest); } @Override // org.bouncycastle.crypto.digests.GeneralDigest, org.bouncycastle.crypto.Digest public void reset() { super.reset(); this.H1 = 1732584193; this.H2 = -271733879; this.H3 = -1732584194; this.H4 = 271733878; this.H5 = -1009589776; this.xOff = 0; int i = 0; while (true) { int[] iArr = this.X; if (i == iArr.length) { return; } iArr[i] = 0; i++; } } @Override // org.bouncycastle.crypto.digests.GeneralDigest protected void processWord(byte[] bArr, int i) { byte b = bArr[i]; byte b2 = bArr[i + 1]; byte b3 = bArr[i + 2]; byte b4 = bArr[i + 3]; int[] iArr = this.X; int i2 = this.xOff; iArr[i2] = (b4 & UnsignedBytes.MAX_VALUE) | (b << Ascii.CAN) | ((b2 & UnsignedBytes.MAX_VALUE) << 16) | ((b3 & UnsignedBytes.MAX_VALUE) << 8); int i3 = i2 + 1; this.xOff = i3; if (i3 == 16) { processBlock(); } } @Override // org.bouncycastle.crypto.digests.GeneralDigest protected void processLength(long j) { if (this.xOff > 14) { processBlock(); } int[] iArr = this.X; iArr[14] = (int) (j >>> 32); iArr[15] = (int) j; } @Override // org.bouncycastle.crypto.digests.GeneralDigest protected void processBlock() { for (int i = 16; i < 80; i++) { int[] iArr = this.X; int i2 = ((iArr[i - 3] ^ iArr[i - 8]) ^ iArr[i - 14]) ^ iArr[i - 16]; iArr[i] = (i2 << 1) | (i2 >>> 31); } int i3 = this.H1; int i4 = this.H2; int i5 = this.H3; int i6 = this.H4; int i7 = this.H5; int i8 = 0; int i9 = 0; while (i8 < 4) { int f = i7 + ((i3 << 5) | (i3 >>> 27)) + f(i4, i5, i6) + this.X[i9] + Y1; int i10 = (i4 << 30) | (i4 >>> 2); int f2 = i6 + ((f << 5) | (f >>> 27)) + f(i3, i10, i5) + this.X[i9 + 1] + Y1; int i11 = (i3 << 30) | (i3 >>> 2); int f3 = i5 + ((f2 << 5) | (f2 >>> 27)) + f(f, i11, i10) + this.X[i9 + 2] + Y1; i7 = (f << 30) | (f >>> 2); i4 = i10 + ((f3 << 5) | (f3 >>> 27)) + f(f2, i7, i11) + this.X[i9 + 3] + Y1; i6 = (f2 << 30) | (f2 >>> 2); i3 = i11 + ((i4 << 5) | (i4 >>> 27)) + f(f3, i6, i7) + this.X[i9 + 4] + Y1; i5 = (f3 << 30) | (f3 >>> 2); i8++; i9 += 5; } int i12 = 0; while (i12 < 4) { int h = i7 + ((i3 << 5) | (i3 >>> 27)) + h(i4, i5, i6) + this.X[i9] + Y2; int i13 = (i4 << 30) | (i4 >>> 2); int h2 = i6 + ((h << 5) | (h >>> 27)) + h(i3, i13, i5) + this.X[i9 + 1] + Y2; int i14 = (i3 << 30) | (i3 >>> 2); int h3 = i5 + ((h2 << 5) | (h2 >>> 27)) + h(h, i14, i13) + this.X[i9 + 2] + Y2; i7 = (h << 30) | (h >>> 2); i4 = i13 + ((h3 << 5) | (h3 >>> 27)) + h(h2, i7, i14) + this.X[i9 + 3] + Y2; i6 = (h2 << 30) | (h2 >>> 2); i3 = i14 + ((i4 << 5) | (i4 >>> 27)) + h(h3, i6, i7) + this.X[i9 + 4] + Y2; i5 = (h3 << 30) | (h3 >>> 2); i12++; i9 += 5; } int i15 = 0; while (i15 < 4) { int g = i7 + (((((i3 << 5) | (i3 >>> 27)) + g(i4, i5, i6)) + this.X[i9]) - 1894007588); int i16 = (i4 << 30) | (i4 >>> 2); int g2 = i6 + (((((g << 5) | (g >>> 27)) + g(i3, i16, i5)) + this.X[i9 + 1]) - 1894007588); int i17 = (i3 << 30) | (i3 >>> 2); int g3 = i5 + (((((g2 << 5) | (g2 >>> 27)) + g(g, i17, i16)) + this.X[i9 + 2]) - 1894007588); i7 = (g << 30) | (g >>> 2); i4 = i16 + (((((g3 << 5) | (g3 >>> 27)) + g(g2, i7, i17)) + this.X[i9 + 3]) - 1894007588); i6 = (g2 << 30) | (g2 >>> 2); i3 = i17 + (((((i4 << 5) | (i4 >>> 27)) + g(g3, i6, i7)) + this.X[i9 + 4]) - 1894007588); i5 = (g3 << 30) | (g3 >>> 2); i15++; i9 += 5; } int i18 = 0; while (i18 <= 3) { int h4 = i7 + (((((i3 << 5) | (i3 >>> 27)) + h(i4, i5, i6)) + this.X[i9]) - 899497514); int i19 = (i4 << 30) | (i4 >>> 2); int h5 = i6 + (((((h4 << 5) | (h4 >>> 27)) + h(i3, i19, i5)) + this.X[i9 + 1]) - 899497514); int i20 = (i3 << 30) | (i3 >>> 2); int h6 = i5 + (((((h5 << 5) | (h5 >>> 27)) + h(h4, i20, i19)) + this.X[i9 + 2]) - 899497514); i7 = (h4 << 30) | (h4 >>> 2); i4 = i19 + (((((h6 << 5) | (h6 >>> 27)) + h(h5, i7, i20)) + this.X[i9 + 3]) - 899497514); i6 = (h5 << 30) | (h5 >>> 2); i3 = i20 + (((((i4 << 5) | (i4 >>> 27)) + h(h6, i6, i7)) + this.X[i9 + 4]) - 899497514); i5 = (h6 << 30) | (h6 >>> 2); i18++; i9 += 5; } this.H1 += i3; this.H2 += i4; this.H3 += i5; this.H4 += i6; this.H5 += i7; this.xOff = 0; for (int i21 = 0; i21 < 16; i21++) { this.X[i21] = 0; } } @Override // org.bouncycastle.crypto.digests.EncodableDigest public byte[] getEncodedState() { byte[] bArr = new byte[(this.xOff << 2) + 40]; super.populateState(bArr); Pack.intToBigEndian(this.H1, bArr, 16); Pack.intToBigEndian(this.H2, bArr, 20); Pack.intToBigEndian(this.H3, bArr, 24); Pack.intToBigEndian(this.H4, bArr, 28); Pack.intToBigEndian(this.H5, bArr, 32); Pack.intToBigEndian(this.xOff, bArr, 36); for (int i = 0; i != this.xOff; i++) { Pack.intToBigEndian(this.X[i], bArr, (i << 2) + 40); } return bArr; } @Override // org.bouncycastle.crypto.Digest public String getAlgorithmName() { return McElieceCCA2KeyGenParameterSpec.SHA1; } @Override // org.bouncycastle.crypto.Digest public int doFinal(byte[] bArr, int i) { finish(); Pack.intToBigEndian(this.H1, bArr, i); Pack.intToBigEndian(this.H2, bArr, i + 4); Pack.intToBigEndian(this.H3, bArr, i + 8); Pack.intToBigEndian(this.H4, bArr, i + 12); Pack.intToBigEndian(this.H5, bArr, i + 16); reset(); return 20; } @Override // org.bouncycastle.util.Memoable public Memoable copy() { return new SHA1Digest(this); } private void copyIn(SHA1Digest sHA1Digest) { this.H1 = sHA1Digest.H1; this.H2 = sHA1Digest.H2; this.H3 = sHA1Digest.H3; this.H4 = sHA1Digest.H4; this.H5 = sHA1Digest.H5; int[] iArr = sHA1Digest.X; System.arraycopy(iArr, 0, this.X, 0, iArr.length); this.xOff = sHA1Digest.xOff; } public SHA1Digest(byte[] bArr) { super(bArr); this.X = new int[80]; this.H1 = Pack.bigEndianToInt(bArr, 16); this.H2 = Pack.bigEndianToInt(bArr, 20); this.H3 = Pack.bigEndianToInt(bArr, 24); this.H4 = Pack.bigEndianToInt(bArr, 28); this.H5 = Pack.bigEndianToInt(bArr, 32); this.xOff = Pack.bigEndianToInt(bArr, 36); for (int i = 0; i != this.xOff; i++) { this.X[i] = Pack.bigEndianToInt(bArr, (i << 2) + 40); } } public SHA1Digest(SHA1Digest sHA1Digest) { super(sHA1Digest); this.X = new int[80]; copyIn(sHA1Digest); } public SHA1Digest() { this.X = new int[80]; reset(); } }