- Added realracing3-community.apk (71.57 MB) - Removed 32-bit support (armeabi-v7a) - Only includes arm64-v8a libraries - Decompiled source code included - Added README-community.md with analysis
114 lines
4.4 KiB
Java
114 lines
4.4 KiB
Java
package okhttp3.internal.tls;
|
|
|
|
import androidx.webkit.ProxyConfig;
|
|
import csdk.gluads.Consts;
|
|
import java.security.cert.CertificateParsingException;
|
|
import java.security.cert.X509Certificate;
|
|
import java.util.ArrayList;
|
|
import java.util.Collection;
|
|
import java.util.Collections;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.Locale;
|
|
import javax.net.ssl.HostnameVerifier;
|
|
import javax.net.ssl.SSLException;
|
|
import javax.net.ssl.SSLSession;
|
|
import okhttp3.internal.Util;
|
|
|
|
/* loaded from: classes5.dex */
|
|
public final class OkHostnameVerifier implements HostnameVerifier {
|
|
public static final OkHostnameVerifier INSTANCE = new OkHostnameVerifier();
|
|
|
|
@Override // javax.net.ssl.HostnameVerifier
|
|
public boolean verify(String str, SSLSession sSLSession) {
|
|
try {
|
|
return verify(str, (X509Certificate) sSLSession.getPeerCertificates()[0]);
|
|
} catch (SSLException unused) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public boolean verify(String str, X509Certificate x509Certificate) {
|
|
if (Util.verifyAsIpAddress(str)) {
|
|
return verifyIpAddress(str, x509Certificate);
|
|
}
|
|
return verifyHostname(str, x509Certificate);
|
|
}
|
|
|
|
public final boolean verifyIpAddress(String str, X509Certificate x509Certificate) {
|
|
List subjectAltNames = getSubjectAltNames(x509Certificate, 7);
|
|
int size = subjectAltNames.size();
|
|
for (int i = 0; i < size; i++) {
|
|
if (str.equalsIgnoreCase((String) subjectAltNames.get(i))) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public final boolean verifyHostname(String str, X509Certificate x509Certificate) {
|
|
String lowerCase = str.toLowerCase(Locale.US);
|
|
Iterator it = getSubjectAltNames(x509Certificate, 2).iterator();
|
|
while (it.hasNext()) {
|
|
if (verifyHostname(lowerCase, (String) it.next())) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static List allSubjectAltNames(X509Certificate x509Certificate) {
|
|
List subjectAltNames = getSubjectAltNames(x509Certificate, 7);
|
|
List subjectAltNames2 = getSubjectAltNames(x509Certificate, 2);
|
|
ArrayList arrayList = new ArrayList(subjectAltNames.size() + subjectAltNames2.size());
|
|
arrayList.addAll(subjectAltNames);
|
|
arrayList.addAll(subjectAltNames2);
|
|
return arrayList;
|
|
}
|
|
|
|
public static List getSubjectAltNames(X509Certificate x509Certificate, int i) {
|
|
Integer num;
|
|
String str;
|
|
ArrayList arrayList = new ArrayList();
|
|
try {
|
|
Collection<List<?>> subjectAlternativeNames = x509Certificate.getSubjectAlternativeNames();
|
|
if (subjectAlternativeNames == null) {
|
|
return Collections.emptyList();
|
|
}
|
|
for (List<?> list : subjectAlternativeNames) {
|
|
if (list != null && list.size() >= 2 && (num = (Integer) list.get(0)) != null && num.intValue() == i && (str = (String) list.get(1)) != null) {
|
|
arrayList.add(str);
|
|
}
|
|
}
|
|
return arrayList;
|
|
} catch (CertificateParsingException unused) {
|
|
return Collections.emptyList();
|
|
}
|
|
}
|
|
|
|
public boolean verifyHostname(String str, String str2) {
|
|
if (str != null && str.length() != 0 && !str.startsWith(Consts.STRING_PERIOD) && !str.endsWith("..") && str2 != null && str2.length() != 0 && !str2.startsWith(Consts.STRING_PERIOD) && !str2.endsWith("..")) {
|
|
if (!str.endsWith(Consts.STRING_PERIOD)) {
|
|
str = str + '.';
|
|
}
|
|
if (!str2.endsWith(Consts.STRING_PERIOD)) {
|
|
str2 = str2 + '.';
|
|
}
|
|
String lowerCase = str2.toLowerCase(Locale.US);
|
|
if (!lowerCase.contains(ProxyConfig.MATCH_ALL_SCHEMES)) {
|
|
return str.equals(lowerCase);
|
|
}
|
|
if (!lowerCase.startsWith("*.") || lowerCase.indexOf(42, 1) != -1 || str.length() < lowerCase.length() || "*.".equals(lowerCase)) {
|
|
return false;
|
|
}
|
|
String substring = lowerCase.substring(1);
|
|
if (!str.endsWith(substring)) {
|
|
return false;
|
|
}
|
|
int length = str.length() - substring.length();
|
|
return length <= 0 || str.lastIndexOf(46, length - 1) == -1;
|
|
}
|
|
return false;
|
|
}
|
|
}
|