what-the-bank/sources/o/OxE.java

81 lines
3.1 KiB
Java
Raw Permalink Normal View History

2024-07-27 18:17:47 +07:00
package o;
import java.security.GeneralSecurityException;
import java.security.spec.AlgorithmParameterSpec;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.GCMParameterSpec;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
/* loaded from: classes2.dex */
public final class OxE implements InterfaceC4280bVg {
private static final ThreadLocal<Cipher> e = new ThreadLocal<Cipher>() { // from class: o.OxE.5
@Override // java.lang.ThreadLocal
protected final /* synthetic */ Cipher initialValue() {
return d();
}
private static Cipher d() {
try {
return YYT.a.e("AES/GCM-SIV/NoPadding");
} catch (GeneralSecurityException e2) {
throw new IllegalStateException(e2);
}
}
};
private final SecretKey d;
public OxE(byte[] bArr) throws GeneralSecurityException {
ifG.e(bArr.length);
this.d = new SecretKeySpec(bArr, "AES");
}
@Override // o.InterfaceC4280bVg
public final byte[] b(byte[] bArr, byte[] bArr2) throws GeneralSecurityException {
if (bArr.length > 2147483619) {
throw new GeneralSecurityException("plaintext too long");
}
byte[] bArr3 = new byte[bArr.length + 28];
byte[] b = YTf.b(12);
System.arraycopy(b, 0, bArr3, 0, 12);
AlgorithmParameterSpec e2 = e(b, b.length);
ThreadLocal<Cipher> threadLocal = e;
threadLocal.get().init(1, this.d, e2);
if (bArr2 != null && bArr2.length != 0) {
threadLocal.get().updateAAD(bArr2);
}
int doFinal = threadLocal.get().doFinal(bArr, 0, bArr.length, bArr3, 12);
if (doFinal == bArr.length + 16) {
return bArr3;
}
throw new GeneralSecurityException(String.format("encryption failed; GCM tag must be %s bytes, but got only %s bytes", 16, Integer.valueOf(doFinal - bArr.length)));
}
@Override // o.InterfaceC4280bVg
public final byte[] d(byte[] bArr, byte[] bArr2) throws GeneralSecurityException {
if (bArr.length < 28) {
throw new GeneralSecurityException("ciphertext too short");
}
AlgorithmParameterSpec e2 = e(bArr, 12);
ThreadLocal<Cipher> threadLocal = e;
threadLocal.get().init(2, this.d, e2);
if (bArr2 != null && bArr2.length != 0) {
threadLocal.get().updateAAD(bArr2);
}
return threadLocal.get().doFinal(bArr, 12, bArr.length - 12);
}
private static AlgorithmParameterSpec e(byte[] bArr, int i) throws GeneralSecurityException {
try {
Class.forName("javax.crypto.spec.GCMParameterSpec");
return new GCMParameterSpec(128, bArr, 0, i);
} catch (ClassNotFoundException unused) {
if ("The Android Project".equals(System.getProperty("java.vendor"))) {
return new IvParameterSpec(bArr, 0, i);
}
throw new GeneralSecurityException("cannot use AES-GCM: javax.crypto.spec.GCMParameterSpec not found");
}
}
}