jimu-decompiled/sources/okhttp3/internal/tls/DistinguishedNameParser.java
2025-05-13 19:24:51 +02:00

420 lines
12 KiB
Java

package okhttp3.internal.tls;
import javax.security.auth.x500.X500Principal;
/* loaded from: classes2.dex */
final class DistinguishedNameParser {
private int beg;
private char[] chars;
private int cur;
private final String dn;
private int end;
private final int length;
private int pos;
DistinguishedNameParser(X500Principal x500Principal) {
this.dn = x500Principal.getName("RFC2253");
this.length = this.dn.length();
}
/* JADX WARN: Code restructure failed: missing block: B:24:0x00a7, code lost:
return new java.lang.String(r1, r2, r8.cur - r2);
*/
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct code enable 'Show inconsistent code' option in preferences
*/
private java.lang.String escapedAV() {
/*
r8 = this;
int r0 = r8.pos
r8.beg = r0
r8.end = r0
L6:
int r0 = r8.pos
int r1 = r8.length
if (r0 < r1) goto L19
java.lang.String r0 = new java.lang.String
char[] r1 = r8.chars
int r2 = r8.beg
int r3 = r8.end
int r3 = r3 - r2
r0.<init>(r1, r2, r3)
return r0
L19:
char[] r1 = r8.chars
char r2 = r1[r0]
r3 = 44
r4 = 43
r5 = 59
r6 = 32
if (r2 == r6) goto L60
if (r2 == r5) goto L53
r5 = 92
if (r2 == r5) goto L40
if (r2 == r4) goto L53
if (r2 == r3) goto L53
int r2 = r8.end
int r3 = r2 + 1
r8.end = r3
char r3 = r1[r0]
r1[r2] = r3
int r0 = r0 + 1
r8.pos = r0
goto L6
L40:
int r0 = r8.end
int r2 = r0 + 1
r8.end = r2
char r2 = r8.getEscaped()
r1[r0] = r2
int r0 = r8.pos
int r0 = r0 + 1
r8.pos = r0
goto L6
L53:
java.lang.String r0 = new java.lang.String
char[] r1 = r8.chars
int r2 = r8.beg
int r3 = r8.end
int r3 = r3 - r2
r0.<init>(r1, r2, r3)
return r0
L60:
int r2 = r8.end
r8.cur = r2
int r0 = r0 + 1
r8.pos = r0
int r0 = r2 + 1
r8.end = r0
r1[r2] = r6
L6e:
int r0 = r8.pos
int r1 = r8.length
if (r0 >= r1) goto L87
char[] r1 = r8.chars
char r2 = r1[r0]
if (r2 != r6) goto L87
int r2 = r8.end
int r7 = r2 + 1
r8.end = r7
r1[r2] = r6
int r0 = r0 + 1
r8.pos = r0
goto L6e
L87:
int r0 = r8.pos
int r1 = r8.length
if (r0 == r1) goto L9b
char[] r1 = r8.chars
char r2 = r1[r0]
if (r2 == r3) goto L9b
char r2 = r1[r0]
if (r2 == r4) goto L9b
char r0 = r1[r0]
if (r0 != r5) goto L6
L9b:
java.lang.String r0 = new java.lang.String
char[] r1 = r8.chars
int r2 = r8.beg
int r3 = r8.cur
int r3 = r3 - r2
r0.<init>(r1, r2, r3)
return r0
*/
throw new UnsupportedOperationException("Method not decompiled: okhttp3.internal.tls.DistinguishedNameParser.escapedAV():java.lang.String");
}
private int getByte(int i) {
int i2;
int i3;
int i4 = i + 1;
if (i4 >= this.length) {
throw new IllegalStateException("Malformed DN: " + this.dn);
}
char c = this.chars[i];
if (c >= '0' && c <= '9') {
i2 = c - '0';
} else if (c >= 'a' && c <= 'f') {
i2 = c - 'W';
} else {
if (c < 'A' || c > 'F') {
throw new IllegalStateException("Malformed DN: " + this.dn);
}
i2 = c - '7';
}
char c2 = this.chars[i4];
if (c2 >= '0' && c2 <= '9') {
i3 = c2 - '0';
} else if (c2 >= 'a' && c2 <= 'f') {
i3 = c2 - 'W';
} else {
if (c2 < 'A' || c2 > 'F') {
throw new IllegalStateException("Malformed DN: " + this.dn);
}
i3 = c2 - '7';
}
return (i2 << 4) + i3;
}
private char getEscaped() {
this.pos++;
int i = this.pos;
if (i == this.length) {
throw new IllegalStateException("Unexpected end of DN: " + this.dn);
}
char c = this.chars[i];
if (c != ' ' && c != '%' && c != '\\' && c != '_' && c != '\"' && c != '#') {
switch (c) {
case '*':
case '+':
case ',':
break;
default:
switch (c) {
case ';':
case '<':
case '=':
case '>':
break;
default:
return getUTF8();
}
}
}
return this.chars[this.pos];
}
private char getUTF8() {
int i;
int i2;
int i3 = getByte(this.pos);
this.pos++;
if (i3 < 128) {
return (char) i3;
}
if (i3 < 192 || i3 > 247) {
return '?';
}
if (i3 <= 223) {
i2 = i3 & 31;
i = 1;
} else if (i3 <= 239) {
i = 2;
i2 = i3 & 15;
} else {
i = 3;
i2 = i3 & 7;
}
for (int i4 = 0; i4 < i; i4++) {
this.pos++;
int i5 = this.pos;
if (i5 == this.length || this.chars[i5] != '\\') {
return '?';
}
this.pos = i5 + 1;
int i6 = getByte(this.pos);
this.pos++;
if ((i6 & 192) != 128) {
return '?';
}
i2 = (i2 << 6) + (i6 & 63);
}
return (char) i2;
}
private String hexAV() {
int i = this.pos;
if (i + 4 >= this.length) {
throw new IllegalStateException("Unexpected end of DN: " + this.dn);
}
this.beg = i;
this.pos = i + 1;
while (true) {
int i2 = this.pos;
if (i2 == this.length) {
break;
}
char[] cArr = this.chars;
if (cArr[i2] == '+' || cArr[i2] == ',' || cArr[i2] == ';') {
break;
}
if (cArr[i2] == ' ') {
this.end = i2;
this.pos = i2 + 1;
while (true) {
int i3 = this.pos;
if (i3 >= this.length || this.chars[i3] != ' ') {
break;
}
this.pos = i3 + 1;
}
} else {
if (cArr[i2] >= 'A' && cArr[i2] <= 'F') {
cArr[i2] = (char) (cArr[i2] + ' ');
}
this.pos++;
}
}
this.end = this.pos;
int i4 = this.end;
int i5 = this.beg;
int i6 = i4 - i5;
if (i6 < 5 || (i6 & 1) == 0) {
throw new IllegalStateException("Unexpected end of DN: " + this.dn);
}
byte[] bArr = new byte[i6 / 2];
int i7 = i5 + 1;
for (int i8 = 0; i8 < bArr.length; i8++) {
bArr[i8] = (byte) getByte(i7);
i7 += 2;
}
return new String(this.chars, this.beg, i6);
}
private String nextAT() {
while (true) {
int i = this.pos;
if (i >= this.length || this.chars[i] != ' ') {
break;
}
this.pos = i + 1;
}
int i2 = this.pos;
if (i2 == this.length) {
return null;
}
this.beg = i2;
this.pos = i2 + 1;
while (true) {
int i3 = this.pos;
if (i3 >= this.length) {
break;
}
char[] cArr = this.chars;
if (cArr[i3] == '=' || cArr[i3] == ' ') {
break;
}
this.pos = i3 + 1;
}
int i4 = this.pos;
if (i4 >= this.length) {
throw new IllegalStateException("Unexpected end of DN: " + this.dn);
}
this.end = i4;
if (this.chars[i4] == ' ') {
while (true) {
int i5 = this.pos;
if (i5 >= this.length) {
break;
}
char[] cArr2 = this.chars;
if (cArr2[i5] == '=' || cArr2[i5] != ' ') {
break;
}
this.pos = i5 + 1;
}
char[] cArr3 = this.chars;
int i6 = this.pos;
if (cArr3[i6] != '=' || i6 == this.length) {
throw new IllegalStateException("Unexpected end of DN: " + this.dn);
}
}
this.pos++;
while (true) {
int i7 = this.pos;
if (i7 >= this.length || this.chars[i7] != ' ') {
break;
}
this.pos = i7 + 1;
}
int i8 = this.end;
int i9 = this.beg;
if (i8 - i9 > 4) {
char[] cArr4 = this.chars;
if (cArr4[i9 + 3] == '.' && (cArr4[i9] == 'O' || cArr4[i9] == 'o')) {
char[] cArr5 = this.chars;
int i10 = this.beg;
if (cArr5[i10 + 1] == 'I' || cArr5[i10 + 1] == 'i') {
char[] cArr6 = this.chars;
int i11 = this.beg;
if (cArr6[i11 + 2] == 'D' || cArr6[i11 + 2] == 'd') {
this.beg += 4;
}
}
}
}
char[] cArr7 = this.chars;
int i12 = this.beg;
return new String(cArr7, i12, this.end - i12);
}
private String quotedAV() {
this.pos++;
this.beg = this.pos;
this.end = this.beg;
while (true) {
int i = this.pos;
if (i == this.length) {
throw new IllegalStateException("Unexpected end of DN: " + this.dn);
}
char[] cArr = this.chars;
if (cArr[i] == '\"') {
this.pos = i + 1;
while (true) {
int i2 = this.pos;
if (i2 >= this.length || this.chars[i2] != ' ') {
break;
}
this.pos = i2 + 1;
}
char[] cArr2 = this.chars;
int i3 = this.beg;
return new String(cArr2, i3, this.end - i3);
}
if (cArr[i] == '\\') {
cArr[this.end] = getEscaped();
} else {
cArr[this.end] = cArr[i];
}
this.pos++;
this.end++;
}
}
public String findMostSpecific(String str) {
this.pos = 0;
this.beg = 0;
this.end = 0;
this.cur = 0;
this.chars = this.dn.toCharArray();
String nextAT = nextAT();
if (nextAT == null) {
return null;
}
do {
int i = this.pos;
if (i == this.length) {
return null;
}
char c = this.chars[i];
String escapedAV = c != '\"' ? c != '#' ? (c == '+' || c == ',' || c == ';') ? "" : escapedAV() : hexAV() : quotedAV();
if (str.equalsIgnoreCase(nextAT)) {
return escapedAV;
}
int i2 = this.pos;
if (i2 >= this.length) {
return null;
}
char[] cArr = this.chars;
if (cArr[i2] != ',' && cArr[i2] != ';' && cArr[i2] != '+') {
throw new IllegalStateException("Malformed DN: " + this.dn);
}
this.pos++;
nextAT = nextAT();
} while (nextAT != null);
throw new IllegalStateException("Malformed DN: " + this.dn);
}
}