Initial import of ADIF API reverse-engineering toolkit
This commit is contained in:
@@ -0,0 +1,167 @@
|
||||
package com.google.android.gms.common;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.Signature;
|
||||
import android.util.Log;
|
||||
import com.google.android.gms.common.annotation.KeepForSdk;
|
||||
import com.google.android.gms.common.internal.Preconditions;
|
||||
import com.google.android.gms.common.internal.ShowFirstParty;
|
||||
import com.google.errorprone.annotations.RestrictedInheritance;
|
||||
import java.util.Set;
|
||||
|
||||
@ShowFirstParty
|
||||
@KeepForSdk
|
||||
@RestrictedInheritance(allowedOnPath = ".*java.*/com/google/android/gms/common/testing/.*", explanation = "Sub classing of GMS Core's APIs are restricted to testing fakes.", link = "go/gmscore-restrictedinheritance")
|
||||
/* loaded from: classes3.dex */
|
||||
public class GoogleSignatureVerifier {
|
||||
private static GoogleSignatureVerifier zza;
|
||||
private static volatile Set zzb;
|
||||
private final Context zzc;
|
||||
private volatile String zzd;
|
||||
|
||||
public GoogleSignatureVerifier(Context context) {
|
||||
this.zzc = context.getApplicationContext();
|
||||
}
|
||||
|
||||
@KeepForSdk
|
||||
public static GoogleSignatureVerifier getInstance(Context context) {
|
||||
Preconditions.checkNotNull(context);
|
||||
synchronized (GoogleSignatureVerifier.class) {
|
||||
try {
|
||||
if (zza == null) {
|
||||
zzn.zze(context);
|
||||
zza = new GoogleSignatureVerifier(context);
|
||||
}
|
||||
} catch (Throwable th) {
|
||||
throw th;
|
||||
}
|
||||
}
|
||||
return zza;
|
||||
}
|
||||
|
||||
public static final zzj zza(PackageInfo packageInfo, zzj... zzjVarArr) {
|
||||
Signature[] signatureArr = packageInfo.signatures;
|
||||
if (signatureArr == null) {
|
||||
return null;
|
||||
}
|
||||
if (signatureArr.length != 1) {
|
||||
Log.w("GoogleSignatureVerifier", "Package has more than one signature.");
|
||||
return null;
|
||||
}
|
||||
zzk zzkVar = new zzk(packageInfo.signatures[0].toByteArray());
|
||||
for (int i = 0; i < zzjVarArr.length; i++) {
|
||||
if (zzjVarArr[i].equals(zzkVar)) {
|
||||
return zzjVarArr[i];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static final boolean zzb(PackageInfo packageInfo, boolean z3) {
|
||||
if (z3 && packageInfo != null && ("com.android.vending".equals(packageInfo.packageName) || "com.google.android.gms".equals(packageInfo.packageName))) {
|
||||
ApplicationInfo applicationInfo = packageInfo.applicationInfo;
|
||||
z3 = (applicationInfo == null || (applicationInfo.flags & 129) == 0) ? false : true;
|
||||
}
|
||||
if (packageInfo != null && packageInfo.signatures != null) {
|
||||
if ((z3 ? zza(packageInfo, zzm.zza) : zza(packageInfo, zzm.zza[0])) != null) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@SuppressLint({"PackageManagerGetSignatures"})
|
||||
private final zzx zzc(String str, boolean z3, boolean z4) {
|
||||
zzx zzc;
|
||||
ApplicationInfo applicationInfo;
|
||||
if (str == null) {
|
||||
return zzx.zzc("null pkg");
|
||||
}
|
||||
if (str.equals(this.zzd)) {
|
||||
return zzx.zzb();
|
||||
}
|
||||
if (zzn.zzg()) {
|
||||
zzc = zzn.zzb(str, GooglePlayServicesUtilLight.honorsDebugCertificates(this.zzc), false, false);
|
||||
} else {
|
||||
try {
|
||||
PackageInfo packageInfo = this.zzc.getPackageManager().getPackageInfo(str, 64);
|
||||
boolean honorsDebugCertificates = GooglePlayServicesUtilLight.honorsDebugCertificates(this.zzc);
|
||||
if (packageInfo == null) {
|
||||
zzc = zzx.zzc("null pkg");
|
||||
} else {
|
||||
Signature[] signatureArr = packageInfo.signatures;
|
||||
if (signatureArr == null || signatureArr.length != 1) {
|
||||
zzc = zzx.zzc("single cert required");
|
||||
} else {
|
||||
zzk zzkVar = new zzk(packageInfo.signatures[0].toByteArray());
|
||||
String str2 = packageInfo.packageName;
|
||||
zzx zza2 = zzn.zza(str2, zzkVar, honorsDebugCertificates, false);
|
||||
zzc = (!zza2.zza || (applicationInfo = packageInfo.applicationInfo) == null || (applicationInfo.flags & 2) == 0 || !zzn.zza(str2, zzkVar, false, true).zza) ? zza2 : zzx.zzc("debuggable release cert app rejected");
|
||||
}
|
||||
}
|
||||
} catch (PackageManager.NameNotFoundException e4) {
|
||||
return zzx.zzd("no pkg ".concat(str), e4);
|
||||
}
|
||||
}
|
||||
if (zzc.zza) {
|
||||
this.zzd = str;
|
||||
}
|
||||
return zzc;
|
||||
}
|
||||
|
||||
@KeepForSdk
|
||||
public boolean isGooglePublicSignedPackage(PackageInfo packageInfo) {
|
||||
if (packageInfo == null) {
|
||||
return false;
|
||||
}
|
||||
if (zzb(packageInfo, false)) {
|
||||
return true;
|
||||
}
|
||||
if (zzb(packageInfo, true)) {
|
||||
if (GooglePlayServicesUtilLight.honorsDebugCertificates(this.zzc)) {
|
||||
return true;
|
||||
}
|
||||
Log.w("GoogleSignatureVerifier", "Test-keys aren't accepted on this build.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@ShowFirstParty
|
||||
@KeepForSdk
|
||||
public boolean isPackageGoogleSigned(String str) {
|
||||
zzx zzc = zzc(str, false, false);
|
||||
zzc.zze();
|
||||
return zzc.zza;
|
||||
}
|
||||
|
||||
@ShowFirstParty
|
||||
@KeepForSdk
|
||||
public boolean isUidGoogleSigned(int i) {
|
||||
zzx zzc;
|
||||
int length;
|
||||
String[] packagesForUid = this.zzc.getPackageManager().getPackagesForUid(i);
|
||||
if (packagesForUid != null && (length = packagesForUid.length) != 0) {
|
||||
zzc = null;
|
||||
int i4 = 0;
|
||||
while (true) {
|
||||
if (i4 >= length) {
|
||||
Preconditions.checkNotNull(zzc);
|
||||
break;
|
||||
}
|
||||
zzc = zzc(packagesForUid[i4], false, false);
|
||||
if (zzc.zza) {
|
||||
break;
|
||||
}
|
||||
i4++;
|
||||
}
|
||||
} else {
|
||||
zzc = zzx.zzc("no pkgs");
|
||||
}
|
||||
zzc.zze();
|
||||
return zzc.zza;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user