245 lines
7.3 KiB
Java
245 lines
7.3 KiB
Java
package okhttp3.internal;
|
|
|
|
import java.net.IDN;
|
|
import java.net.InetAddress;
|
|
import java.util.Locale;
|
|
import o.C14957gcv;
|
|
import o.C15111ghZ;
|
|
import o.gdP;
|
|
import o.gdZ;
|
|
|
|
/* loaded from: classes.dex */
|
|
public final class HostnamesKt {
|
|
public static final String toCanonicalHost(String str) {
|
|
InetAddress decodeIpv6;
|
|
C14957gcv.e(str, "");
|
|
if (!gdZ.d((CharSequence) str, (CharSequence) ":", false)) {
|
|
try {
|
|
String ascii = IDN.toASCII(str);
|
|
C14957gcv.c((Object) ascii, "");
|
|
Locale locale = Locale.US;
|
|
C14957gcv.c(locale, "");
|
|
String lowerCase = ascii.toLowerCase(locale);
|
|
C14957gcv.c((Object) lowerCase, "");
|
|
if (lowerCase.length() == 0) {
|
|
return null;
|
|
}
|
|
if (containsInvalidHostnameAsciiCodes(lowerCase)) {
|
|
return null;
|
|
}
|
|
return lowerCase;
|
|
} catch (IllegalArgumentException unused) {
|
|
return null;
|
|
}
|
|
}
|
|
if (gdZ.e(str, "[", false) && gdZ.d(str, "]", false)) {
|
|
decodeIpv6 = decodeIpv6(str, 1, str.length() - 1);
|
|
} else {
|
|
decodeIpv6 = decodeIpv6(str, 0, str.length());
|
|
}
|
|
if (decodeIpv6 == null) {
|
|
return null;
|
|
}
|
|
byte[] address = decodeIpv6.getAddress();
|
|
if (address.length == 16) {
|
|
C14957gcv.c(address, "");
|
|
return inet6AddressToAscii(address);
|
|
}
|
|
if (address.length == 4) {
|
|
return decodeIpv6.getHostAddress();
|
|
}
|
|
StringBuilder sb = new StringBuilder("Invalid IPv6 address: '");
|
|
sb.append(str);
|
|
sb.append('\'');
|
|
throw new AssertionError(sb.toString());
|
|
}
|
|
|
|
private static final boolean containsInvalidHostnameAsciiCodes(String str) {
|
|
int length = str.length();
|
|
for (int i = 0; i < length; i++) {
|
|
char charAt = str.charAt(i);
|
|
if (C14957gcv.a(charAt, 31) <= 0 || C14957gcv.a(charAt, 127) >= 0 || gdZ.a((CharSequence) " #%/:?@[\\]", charAt, 0, false) != -1) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/* JADX WARN: Code restructure failed: missing block: B:25:0x0072, code lost:
|
|
|
|
return null;
|
|
*/
|
|
/* JADX WARN: Removed duplicated region for block: B:15:0x004d */
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
private static final java.net.InetAddress decodeIpv6(java.lang.String r11, int r12, int r13) {
|
|
/*
|
|
r0 = 16
|
|
byte[] r1 = new byte[r0]
|
|
r2 = -1
|
|
r3 = 0
|
|
r5 = r2
|
|
r6 = r5
|
|
r4 = r3
|
|
L9:
|
|
r7 = 0
|
|
if (r12 >= r13) goto L73
|
|
if (r4 != r0) goto Lf
|
|
return r7
|
|
Lf:
|
|
int r8 = r12 + 2
|
|
if (r8 > r13) goto L26
|
|
java.lang.String r9 = "::"
|
|
boolean r9 = o.gdZ.a(r11, r9, r12, r3)
|
|
if (r9 == 0) goto L26
|
|
if (r5 == r2) goto L1e
|
|
return r7
|
|
L1e:
|
|
int r4 = r4 + 2
|
|
r5 = r4
|
|
if (r8 != r13) goto L24
|
|
goto L73
|
|
L24:
|
|
r6 = r8
|
|
goto L49
|
|
L26:
|
|
if (r4 == 0) goto L48
|
|
java.lang.String r8 = ":"
|
|
boolean r8 = o.gdZ.a(r11, r8, r12, r3)
|
|
if (r8 == 0) goto L33
|
|
int r12 = r12 + 1
|
|
goto L48
|
|
L33:
|
|
java.lang.String r8 = "."
|
|
boolean r12 = o.gdZ.a(r11, r8, r12, r3)
|
|
if (r12 == 0) goto L47
|
|
int r12 = r4 + (-2)
|
|
boolean r11 = decodeIpv4Suffix(r11, r6, r13, r1, r12)
|
|
if (r11 != 0) goto L44
|
|
return r7
|
|
L44:
|
|
int r4 = r4 + 2
|
|
goto L73
|
|
L47:
|
|
return r7
|
|
L48:
|
|
r6 = r12
|
|
L49:
|
|
r8 = r3
|
|
r12 = r6
|
|
L4b:
|
|
if (r12 >= r13) goto L5d
|
|
char r9 = r11.charAt(r12)
|
|
int r9 = okhttp3.internal.Util.parseHexDigit(r9)
|
|
if (r9 == r2) goto L5d
|
|
int r8 = r8 << 4
|
|
int r8 = r8 + r9
|
|
int r12 = r12 + 1
|
|
goto L4b
|
|
L5d:
|
|
int r9 = r12 - r6
|
|
if (r9 == 0) goto L72
|
|
r10 = 4
|
|
if (r9 > r10) goto L72
|
|
int r7 = r8 >>> 8
|
|
byte r7 = (byte) r7
|
|
r1[r4] = r7
|
|
int r7 = r4 + 2
|
|
byte r8 = (byte) r8
|
|
int r4 = r4 + 1
|
|
r1[r4] = r8
|
|
r4 = r7
|
|
goto L9
|
|
L72:
|
|
return r7
|
|
L73:
|
|
if (r4 == r0) goto L84
|
|
if (r5 != r2) goto L78
|
|
return r7
|
|
L78:
|
|
int r11 = r4 - r5
|
|
int r12 = 16 - r11
|
|
java.lang.System.arraycopy(r1, r5, r1, r12, r11)
|
|
int r0 = r0 - r4
|
|
int r0 = r0 + r5
|
|
java.util.Arrays.fill(r1, r5, r0, r3)
|
|
L84:
|
|
java.net.InetAddress r11 = java.net.InetAddress.getByAddress(r1)
|
|
return r11
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: okhttp3.internal.HostnamesKt.decodeIpv6(java.lang.String, int, int):java.net.InetAddress");
|
|
}
|
|
|
|
private static final boolean decodeIpv4Suffix(String str, int i, int i2, byte[] bArr, int i3) {
|
|
int i4 = i3;
|
|
while (i < i2) {
|
|
if (i4 == bArr.length) {
|
|
return false;
|
|
}
|
|
if (i4 != i3) {
|
|
if (str.charAt(i) != '.') {
|
|
return false;
|
|
}
|
|
i++;
|
|
}
|
|
int i5 = i;
|
|
int i6 = 0;
|
|
while (i5 < i2) {
|
|
char charAt = str.charAt(i5);
|
|
if (C14957gcv.a(charAt, 48) < 0 || C14957gcv.a(charAt, 57) > 0) {
|
|
break;
|
|
}
|
|
if ((i6 == 0 && i != i5) || (i6 = ((i6 * 10) + charAt) - 48) > 255) {
|
|
return false;
|
|
}
|
|
i5++;
|
|
}
|
|
if (i5 - i == 0) {
|
|
return false;
|
|
}
|
|
bArr[i4] = (byte) i6;
|
|
i4++;
|
|
i = i5;
|
|
}
|
|
return i4 == i3 + 4;
|
|
}
|
|
|
|
private static final String inet6AddressToAscii(byte[] bArr) {
|
|
int i = -1;
|
|
int i2 = 0;
|
|
int i3 = 0;
|
|
int i4 = 0;
|
|
while (i3 < bArr.length) {
|
|
int i5 = i3;
|
|
while (i5 < 16 && bArr[i5] == 0 && bArr[i5 + 1] == 0) {
|
|
i5 += 2;
|
|
}
|
|
int i6 = i5 - i3;
|
|
if (i6 > i4 && i6 >= 4) {
|
|
i = i3;
|
|
i4 = i6;
|
|
}
|
|
i3 = i5 + 2;
|
|
}
|
|
C15111ghZ c15111ghZ = new C15111ghZ();
|
|
while (i2 < bArr.length) {
|
|
if (i2 == i) {
|
|
c15111ghZ.b(58);
|
|
i2 += i4;
|
|
if (i2 == 16) {
|
|
c15111ghZ.b(58);
|
|
}
|
|
} else {
|
|
if (i2 > 0) {
|
|
c15111ghZ.b(58);
|
|
}
|
|
c15111ghZ.l((Util.and(bArr[i2], 255) << 8) | Util.and(bArr[i2 + 1], 255));
|
|
i2 += 2;
|
|
}
|
|
}
|
|
return c15111ghZ.b(c15111ghZ.c, gdP.a);
|
|
}
|
|
}
|