what-the-bank/sources/org/bouncycastle/crypto/digests/SHA512tDigest.java

228 lines
7.2 KiB
Java
Raw Permalink Normal View History

2024-07-27 18:17:47 +07:00
package org.bouncycastle.crypto.digests;
import org.bouncycastle.util.Memoable;
import org.bouncycastle.util.MemoableResetException;
import org.bouncycastle.util.Pack;
/* loaded from: classes6.dex */
public class SHA512tDigest extends LongDigest {
private long H1t;
private long H2t;
private long H3t;
private long H4t;
private long H5t;
private long H6t;
private long H7t;
private long H8t;
private int digestLength;
@Override // org.bouncycastle.util.Memoable
public void reset(Memoable memoable) {
SHA512tDigest sHA512tDigest = (SHA512tDigest) memoable;
if (this.digestLength != sHA512tDigest.digestLength) {
throw new MemoableResetException("digestLength inappropriate in other");
}
super.copyIn(sHA512tDigest);
this.H1t = sHA512tDigest.H1t;
this.H2t = sHA512tDigest.H2t;
this.H3t = sHA512tDigest.H3t;
this.H4t = sHA512tDigest.H4t;
this.H5t = sHA512tDigest.H5t;
this.H6t = sHA512tDigest.H6t;
this.H7t = sHA512tDigest.H7t;
this.H8t = sHA512tDigest.H8t;
}
@Override // org.bouncycastle.crypto.digests.LongDigest, org.bouncycastle.crypto.Digest
public void reset() {
super.reset();
this.H1 = this.H1t;
this.H2 = this.H2t;
this.H3 = this.H3t;
this.H4 = this.H4t;
this.H5 = this.H5t;
this.H6 = this.H6t;
this.H7 = this.H7t;
this.H8 = this.H8t;
}
@Override // org.bouncycastle.crypto.digests.EncodableDigest
public byte[] getEncodedState() {
int encodedStateSize = getEncodedStateSize();
byte[] bArr = new byte[encodedStateSize + 4];
populateState(bArr);
Pack.intToBigEndian(this.digestLength << 3, bArr, encodedStateSize);
return bArr;
}
@Override // org.bouncycastle.crypto.Digest
public int getDigestSize() {
return this.digestLength;
}
@Override // org.bouncycastle.crypto.Digest
public String getAlgorithmName() {
StringBuilder sb = new StringBuilder("SHA-512/");
sb.append(Integer.toString(this.digestLength << 3));
return sb.toString();
}
@Override // org.bouncycastle.crypto.Digest
public int doFinal(byte[] bArr, int i) {
finish();
longToBigEndian(this.H1, bArr, i, this.digestLength);
longToBigEndian(this.H2, bArr, i + 8, this.digestLength - 8);
longToBigEndian(this.H3, bArr, i + 16, this.digestLength - 16);
longToBigEndian(this.H4, bArr, i + 24, this.digestLength - 24);
longToBigEndian(this.H5, bArr, i + 32, this.digestLength - 32);
longToBigEndian(this.H6, bArr, i + 40, this.digestLength - 40);
longToBigEndian(this.H7, bArr, i + 48, this.digestLength - 48);
longToBigEndian(this.H8, bArr, i + 56, this.digestLength - 56);
reset();
return this.digestLength;
}
@Override // org.bouncycastle.util.Memoable
public Memoable copy() {
return new SHA512tDigest(this);
}
/* JADX WARN: Code restructure failed: missing block: B:8:0x0071, code lost:
if (r3 > 10) goto L6;
*/
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
private void tIvGenerate(int r3) {
/*
r2 = this;
r0 = -3482333909917012819(0xcfac43c256196cad, double:-6.392239886847908E75)
r2.H1 = r0
r0 = 2216346199247487646(0x1ec20b20216f029e, double:1.604250256667292E-160)
r2.H2 = r0
r0 = -7364697282686394994(0x99cb56d75b315d8e, double:-2.0106609494103695E-184)
r2.H3 = r0
r0 = 65953792586715988(0xea509ffab89354, double:2.9978976005667514E-304)
r2.H4 = r0
r0 = -816286391624063116(0xf4abf7da08432774, double:-1.0252515228978657E254)
r2.H5 = r0
r0 = 4512832404995164602(0x3ea0cd298e9bc9ba, double:5.007211971427005E-7)
r2.H6 = r0
r0 = -5033199132376557362(0xba267c0e5ee418ce, double:-1.418977391716189E-28)
r2.H7 = r0
r0 = -124578254951840548(0xfe4568bcb6db84dc, double:-1.7921927020935902E300)
r2.H8 = r0
r0 = 83
r2.update(r0)
r0 = 72
r2.update(r0)
r0 = 65
r2.update(r0)
r0 = 45
r2.update(r0)
r0 = 53
r2.update(r0)
r0 = 49
r2.update(r0)
r0 = 50
r2.update(r0)
r0 = 47
r2.update(r0)
r0 = 100
r1 = 10
if (r3 <= r0) goto L71
int r0 = r3 / 100
int r0 = r0 + 48
byte r0 = (byte) r0
r2.update(r0)
int r3 = r3 % 100
goto L73
L71:
if (r3 <= r1) goto L7c
L73:
int r0 = r3 / 10
int r0 = r0 + 48
byte r0 = (byte) r0
r2.update(r0)
int r3 = r3 % r1
L7c:
int r3 = r3 + 48
byte r3 = (byte) r3
r2.update(r3)
r2.finish()
long r0 = r2.H1
r2.H1t = r0
long r0 = r2.H2
r2.H2t = r0
long r0 = r2.H3
r2.H3t = r0
long r0 = r2.H4
r2.H4t = r0
long r0 = r2.H5
r2.H5t = r0
long r0 = r2.H6
r2.H6t = r0
long r0 = r2.H7
r2.H7t = r0
long r0 = r2.H8
r2.H8t = r0
return
*/
throw new UnsupportedOperationException("Method not decompiled: org.bouncycastle.crypto.digests.SHA512tDigest.tIvGenerate(int):void");
}
private static int readDigestLength(byte[] bArr) {
return Pack.bigEndianToInt(bArr, bArr.length - 4);
}
private static void longToBigEndian(long j, byte[] bArr, int i, int i2) {
if (i2 > 0) {
intToBigEndian((int) (j >>> 32), bArr, i, i2);
if (i2 > 4) {
intToBigEndian((int) j, bArr, i + 4, i2 - 4);
}
}
}
private static void intToBigEndian(int i, byte[] bArr, int i2, int i3) {
int min = Math.min(4, i3);
while (true) {
min--;
if (min < 0) {
return;
} else {
bArr[i2 + min] = (byte) (i >>> ((3 - min) << 3));
}
}
}
public SHA512tDigest(byte[] bArr) {
this(readDigestLength(bArr));
restoreState(bArr);
}
public SHA512tDigest(SHA512tDigest sHA512tDigest) {
super(sHA512tDigest);
this.digestLength = sHA512tDigest.digestLength;
reset(sHA512tDigest);
}
public SHA512tDigest(int i) {
if (i >= 512) {
throw new IllegalArgumentException("bitLength cannot be >= 512");
}
if (i % 8 != 0) {
throw new IllegalArgumentException("bitLength needs to be a multiple of 8");
}
if (i == 384) {
throw new IllegalArgumentException("bitLength cannot be 384 use SHA384 instead");
}
int i2 = i / 8;
this.digestLength = i2;
tIvGenerate(i2 << 3);
reset();
}
}