- 28,932 files - Full Java source code - Smali files - Resources Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
164 lines
5.0 KiB
Java
164 lines
5.0 KiB
Java
package androidx.browser.trusted;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
import java.io.ByteArrayInputStream;
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.DataInputStream;
|
|
import java.io.DataOutputStream;
|
|
import java.io.IOException;
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.Collections;
|
|
import java.util.Comparator;
|
|
import java.util.List;
|
|
|
|
/* loaded from: classes.dex */
|
|
final class TokenContents {
|
|
|
|
@NonNull
|
|
private final byte[] mContents;
|
|
|
|
@Nullable
|
|
private List<byte[]> mFingerprints;
|
|
|
|
@Nullable
|
|
private String mPackageName;
|
|
|
|
@NonNull
|
|
public static TokenContents deserialize(@NonNull byte[] bArr) {
|
|
return new TokenContents(bArr);
|
|
}
|
|
|
|
private TokenContents(@NonNull byte[] bArr) {
|
|
this.mContents = bArr;
|
|
}
|
|
|
|
@NonNull
|
|
public static TokenContents create(String str, List<byte[]> list) throws IOException {
|
|
return new TokenContents(createToken(str, list), str, list);
|
|
}
|
|
|
|
private TokenContents(@NonNull byte[] bArr, @NonNull String str, @NonNull List<byte[]> list) {
|
|
this.mContents = bArr;
|
|
this.mPackageName = str;
|
|
this.mFingerprints = new ArrayList(list.size());
|
|
for (byte[] bArr2 : list) {
|
|
this.mFingerprints.add(Arrays.copyOf(bArr2, bArr2.length));
|
|
}
|
|
}
|
|
|
|
@NonNull
|
|
public String getPackageName() throws IOException {
|
|
parseIfNeeded();
|
|
String str = this.mPackageName;
|
|
if (str != null) {
|
|
return str;
|
|
}
|
|
throw new IllegalStateException();
|
|
}
|
|
|
|
public int getFingerprintCount() throws IOException {
|
|
parseIfNeeded();
|
|
List<byte[]> list = this.mFingerprints;
|
|
if (list == null) {
|
|
throw new IllegalStateException();
|
|
}
|
|
return list.size();
|
|
}
|
|
|
|
@NonNull
|
|
public byte[] getFingerprint(int i) throws IOException {
|
|
parseIfNeeded();
|
|
List<byte[]> list = this.mFingerprints;
|
|
if (list == null) {
|
|
throw new IllegalStateException();
|
|
}
|
|
return Arrays.copyOf(list.get(i), this.mFingerprints.get(i).length);
|
|
}
|
|
|
|
@NonNull
|
|
public byte[] serialize() {
|
|
byte[] bArr = this.mContents;
|
|
return Arrays.copyOf(bArr, bArr.length);
|
|
}
|
|
|
|
public boolean equals(Object obj) {
|
|
if (this == obj) {
|
|
return true;
|
|
}
|
|
if (obj == null || TokenContents.class != obj.getClass()) {
|
|
return false;
|
|
}
|
|
return Arrays.equals(this.mContents, ((TokenContents) obj).mContents);
|
|
}
|
|
|
|
public int hashCode() {
|
|
return Arrays.hashCode(this.mContents);
|
|
}
|
|
|
|
@NonNull
|
|
private static byte[] createToken(@NonNull String str, @NonNull List<byte[]> list) throws IOException {
|
|
Collections.sort(list, new Comparator() { // from class: androidx.browser.trusted.TokenContents$$ExternalSyntheticLambda0
|
|
@Override // java.util.Comparator
|
|
public final int compare(Object obj, Object obj2) {
|
|
int compareByteArrays;
|
|
compareByteArrays = TokenContents.compareByteArrays((byte[]) obj, (byte[]) obj2);
|
|
return compareByteArrays;
|
|
}
|
|
});
|
|
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
|
DataOutputStream dataOutputStream = new DataOutputStream(byteArrayOutputStream);
|
|
dataOutputStream.writeUTF(str);
|
|
dataOutputStream.writeInt(list.size());
|
|
for (byte[] bArr : list) {
|
|
dataOutputStream.writeInt(bArr.length);
|
|
dataOutputStream.write(bArr);
|
|
}
|
|
dataOutputStream.flush();
|
|
return byteArrayOutputStream.toByteArray();
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static int compareByteArrays(byte[] bArr, byte[] bArr2) {
|
|
if (bArr == bArr2) {
|
|
return 0;
|
|
}
|
|
if (bArr == null) {
|
|
return -1;
|
|
}
|
|
if (bArr2 == null) {
|
|
return 1;
|
|
}
|
|
for (int i = 0; i < Math.min(bArr.length, bArr2.length); i++) {
|
|
byte b = bArr[i];
|
|
byte b2 = bArr2[i];
|
|
if (b != b2) {
|
|
return b - b2;
|
|
}
|
|
}
|
|
if (bArr.length != bArr2.length) {
|
|
return bArr.length - bArr2.length;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
private void parseIfNeeded() throws IOException {
|
|
if (this.mPackageName != null) {
|
|
return;
|
|
}
|
|
DataInputStream dataInputStream = new DataInputStream(new ByteArrayInputStream(this.mContents));
|
|
this.mPackageName = dataInputStream.readUTF();
|
|
int readInt = dataInputStream.readInt();
|
|
this.mFingerprints = new ArrayList(readInt);
|
|
for (int i = 0; i < readInt; i++) {
|
|
int readInt2 = dataInputStream.readInt();
|
|
byte[] bArr = new byte[readInt2];
|
|
if (dataInputStream.read(bArr) != readInt2) {
|
|
throw new IllegalStateException("Could not read fingerprint");
|
|
}
|
|
this.mFingerprints.add(bArr);
|
|
}
|
|
}
|
|
}
|