package com.huawei.appgallery.serviceverifykit.c; import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.pm.Signature; import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import com.huawei.appgallery.serviceverifykit.api.ServiceVerifyKit; import com.huawei.appgallery.serviceverifykit.d.c; import com.huawei.appgallery.serviceverifykit.d.d.b; import com.huawei.hms.framework.common.ContainerUtils; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class a { private String a; private String b; private String c; private String d; private String e; private Map<String, String[]> f = new HashMap(); private Map<String, Integer> g = new HashMap(); private int h; private List<String> i = new ArrayList(); private List<ServiceVerifyKit.b> j = new ArrayList(); private int k = 0; private String l; private String m; private Intent n; private ServiceVerifyKit.Builder.ComponentType o; private int p = 0; private int q = 0; private int r = 0; private int s = 0; private Context t; private String u; public a(Context context) { this.t = context; } private int a(Bundle bundle, int i2) { if (!bundle.containsKey("ag.application.base_priority")) { return i2 + 1000; } try { return i2 + bundle.getInt("ag.application.base_priority"); } catch (Exception unused) { b bVar = b.b; bVar.a("MatchAppFinder", "skip package " + bundle.getString("ag.application.base_priority") + " is not number"); return i2 + 1000; } } private int a(Bundle bundle, int i2, List<ServiceVerifyKit.b> list) { int i3 = 0; for (ServiceVerifyKit.b bVar : list) { if (i2 == 1) { if (!bundle.containsKey(bVar.a()) || !bundle.get(bVar.a()).toString().equals(bVar.b())) { return 0; } i3 = 1; } else if (i2 != 2) { b.b.a("MatchAppFinder", "error input preferred package name"); } else if (bundle.containsKey(bVar.a()) && bundle.get(bVar.a()).toString().equals(bVar.b())) { i3++; } } return i3; } private int a(Bundle bundle, String str) { if (bundle.containsKey(this.l)) { return bundle.getString(this.l).equalsIgnoreCase(str) ? 1 : -1; } return 0; } private int a(String str, List<String> list) { int i2 = 0; for (String str2 : list) { if (str2.equals(str)) { i2 = 1; } } return i2; } private com.huawei.appgallery.serviceverifykit.a.a a(PackageInfo packageInfo, String str, String str2, int i2) { b bVar; StringBuilder sb; Bundle bundle = packageInfo.applicationInfo.metaData; if (bundle == null) { bVar = b.b; sb = new StringBuilder("skip package "); sb.append(str2); str2 = " for metadata is null"; } else { int a2 = a(bundle, this.u); if (bundle.containsKey(this.d) || bundle.containsKey(this.e)) { if (!a(bundle, str2, str)) { bVar = b.b; sb = new StringBuilder("checkSinger failed, packageName is "); } else { this.p = i2; } } else if (a(str2, str)) { this.q = 1; this.p = this.g.get(str2).intValue(); } else { bVar = b.b; sb = new StringBuilder("Legacy is false, packageName is "); } if (!this.i.isEmpty()) { this.r = a(str2, this.i); } if (!this.j.isEmpty()) { this.s = a(bundle, this.k, this.j); } return new com.huawei.appgallery.serviceverifykit.a.a(str2, a(bundle, this.p), this.q, a2, this.r, this.s); } sb.append(str2); bVar.a("MatchAppFinder", sb.toString()); return null; } private String a(ResolveInfo resolveInfo) { ServiceVerifyKit.Builder.ComponentType componentType = this.o; return ((componentType == ServiceVerifyKit.Builder.ComponentType.ACTIVITY || componentType == ServiceVerifyKit.Builder.ComponentType.BROADCAST) ? resolveInfo.activityInfo.applicationInfo : resolveInfo.serviceInfo.applicationInfo).packageName; } private static String a(String str) { b bVar; String str2; try { return (String) Class.forName("android.os.SystemProperties").getMethod("get", String.class).invoke(null, str); } catch (ClassNotFoundException unused) { bVar = b.b; str2 = "getSystemProperties ClassNotFoundException"; bVar.a("MatchAppFinder", str2); return ""; } catch (Exception unused2) { bVar = b.b; str2 = "getSystemProperties Exception while getting system property"; bVar.a("MatchAppFinder", str2); return ""; } } private List<ResolveInfo> a(PackageManager packageManager) { ServiceVerifyKit.Builder.ComponentType componentType = this.o; return componentType == null ? packageManager.queryIntentServices(new Intent(this.a), this.h) : componentType == ServiceVerifyKit.Builder.ComponentType.ACTIVITY ? packageManager.queryIntentActivities(this.n, this.h) : componentType == ServiceVerifyKit.Builder.ComponentType.BROADCAST ? packageManager.queryBroadcastReceivers(this.n, this.h) : packageManager.queryIntentServices(this.n, this.h); } private List<com.huawei.appgallery.serviceverifykit.a.a> a(List<ResolveInfo> list, PackageManager packageManager, int i2) { StringBuilder sb; String str; b bVar; ArrayList arrayList = new ArrayList(); for (ResolveInfo resolveInfo : list) { String a2 = a(resolveInfo); try { PackageInfo packageInfo = packageManager.getPackageInfo(a2, i2); if (packageInfo.applicationInfo == null) { bVar = b.b; sb = new StringBuilder("skip package "); sb.append(a2); str = " for ApplicationInfo is null"; } else { Signature[] signatureArr = packageInfo.signatures; if (signatureArr == null || signatureArr.length <= 0) { bVar = b.b; sb = new StringBuilder("skip package "); sb.append(a2); str = " for no sign"; } else { byte[] byteArray = signatureArr[0].toByteArray(); if (byteArray.length == 0) { bVar = b.b; sb = new StringBuilder("skip package "); sb.append(a2); str = " for sign is empty"; } else { try { com.huawei.appgallery.serviceverifykit.a.a a3 = a(packageInfo, com.huawei.appgallery.serviceverifykit.d.b.b(MessageDigest.getInstance("SHA-256").digest(byteArray), true), a2, resolveInfo.priority); if (a3 != null) { arrayList.add(a3); } } catch (NoSuchAlgorithmException unused) { bVar = b.b; sb = new StringBuilder("skip package "); sb.append(a2); str = " for AlgorithmException"; } } } } } catch (PackageManager.NameNotFoundException unused2) { bVar = b.b; sb = new StringBuilder("skip package "); sb.append(a2); str = " for PackageInfo is null"; } sb.append(str); bVar.a("MatchAppFinder", sb.toString()); } return arrayList; } private boolean a(Bundle bundle, String str, String str2) { b bVar; String str3; if (!bundle.containsKey(this.d) || !bundle.containsKey(this.e)) { bVar = b.b; str3 = "skip package " + str + " for no signer or no certChain"; } else { if (a(str + ContainerUtils.FIELD_DELIMITER + str2, bundle.getString(this.d), bundle.getString(this.e))) { return true; } bVar = b.b; str3 = "checkSinger failed"; } bVar.a("MatchAppFinder", str3); return false; } private boolean a(String str, String str2) { String[] strArr; if (this.f.containsKey(str) && (strArr = this.f.get(str)) != null) { for (String str3 : strArr) { if (str2.equals(str3)) { return true; } } } return false; } private boolean a(String str, String str2, String str3) { b bVar; String str4; if (TextUtils.isEmpty(str2) || TextUtils.isEmpty(str3)) { bVar = b.b; str4 = "args is invalid"; } else { List<X509Certificate> b2 = c.b(str3); if (b2.size() == 0) { bVar = b.b; str4 = "certChain is empty"; } else if (!c.a(c.a(this.t), b2)) { bVar = b.b; str4 = "failed to verify cert chain"; } else { X509Certificate x509Certificate = b2.get(0); if (!c.a(x509Certificate, this.b)) { bVar = b.b; str4 = "CN is invalid"; } else if (!c.b(x509Certificate, this.c)) { bVar = b.b; str4 = "OU is invalid"; } else { byte[] bArr = null; try { bArr = str.getBytes("UTF-8"); } catch (UnsupportedEncodingException e2) { b.b.a("MatchAppFinder", "checkCertChain UnsupportedEncodingException:", e2); } if (c.a(x509Certificate, bArr, com.huawei.appgallery.serviceverifykit.d.a.a(str2))) { return true; } bVar = b.b; str4 = "signature is invalid"; } } } bVar.a("MatchAppFinder", str4); return false; } public List<com.huawei.appgallery.serviceverifykit.a.a> a() { PackageManager packageManager = this.t.getPackageManager(); List<ResolveInfo> a2 = a(packageManager); if (a2.size() == 0) { return null; } this.u = TextUtils.isEmpty(this.m) ? Build.MANUFACTURER : a(this.m); return a(a2, packageManager, this.h | 128 | 64); } public void a(String str, String str2, String str3, String str4, String str5, Map<String, String[]> map, Map<String, Integer> map2, int i2, List<String> list, List<ServiceVerifyKit.b> list2, int i3, String str6, String str7, Intent intent, ServiceVerifyKit.Builder.ComponentType componentType) { this.a = str; this.b = str2; this.c = str3; this.d = str4; this.e = str5; this.f = map; this.g = map2; this.h = i2; this.i = list; this.j = list2; this.k = i3; this.l = str6; this.m = str7; this.n = intent; this.o = componentType; } }