what-the-bank/sources/io/grpc/okhttp/internal/DistinguishedNameParser.java

443 lines
13 KiB
Java

package io.grpc.okhttp.internal;
import javax.security.auth.x500.X500Principal;
/* loaded from: classes6.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;
public DistinguishedNameParser(X500Principal x500Principal) {
String name = x500Principal.getName("RFC2253");
this.dn = name;
this.length = name.length();
}
private String nextAT() {
int i;
int i2;
int i3;
int i4;
char c;
char c2;
char c3;
int i5;
int i6;
char c4;
char c5;
while (true) {
i = this.pos;
i2 = this.length;
if (i >= i2 || this.chars[i] != ' ') {
break;
}
this.pos = i + 1;
}
if (i == i2) {
return null;
}
this.beg = i;
this.pos = i + 1;
while (true) {
i3 = this.pos;
i4 = this.length;
if (i3 >= i4 || (c5 = this.chars[i3]) == '=' || c5 == ' ') {
break;
}
this.pos = i3 + 1;
}
if (i3 >= i4) {
StringBuilder sb = new StringBuilder("Unexpected end of DN: ");
sb.append(this.dn);
throw new IllegalStateException(sb.toString());
}
this.end = i3;
if (this.chars[i3] == ' ') {
while (true) {
i5 = this.pos;
i6 = this.length;
if (i5 >= i6 || (c4 = this.chars[i5]) == '=' || c4 != ' ') {
break;
}
this.pos = i5 + 1;
}
if (this.chars[i5] != '=' || i5 == i6) {
StringBuilder sb2 = new StringBuilder("Unexpected end of DN: ");
sb2.append(this.dn);
throw new IllegalStateException(sb2.toString());
}
}
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[] cArr = this.chars;
if (cArr[i9 + 3] == '.' && (((c = cArr[i9]) == 'O' || c == 'o') && (((c2 = cArr[i9 + 1]) == 'I' || c2 == 'i') && ((c3 = cArr[i9 + 2]) == 'D' || c3 == 'd')))) {
this.beg = i9 + 4;
}
}
char[] cArr2 = this.chars;
int i10 = this.beg;
return new String(cArr2, i10, i8 - i10);
}
private String quotedAV() {
int i = this.pos + 1;
this.pos = i;
this.beg = i;
this.end = i;
while (true) {
int i2 = this.pos;
if (i2 == this.length) {
StringBuilder sb = new StringBuilder("Unexpected end of DN: ");
sb.append(this.dn);
throw new IllegalStateException(sb.toString());
}
char[] cArr = this.chars;
char c = cArr[i2];
if (c == '\"') {
this.pos = i2 + 1;
while (true) {
int i3 = this.pos;
if (i3 >= this.length || this.chars[i3] != ' ') {
break;
}
this.pos = i3 + 1;
}
char[] cArr2 = this.chars;
int i4 = this.beg;
return new String(cArr2, i4, this.end - i4);
}
if (c == '\\') {
cArr[this.end] = getEscaped();
} else {
cArr[this.end] = c;
}
this.pos++;
this.end++;
}
}
private String hexAV() {
int i;
char[] cArr;
char c;
int i2 = this.pos;
if (i2 + 4 >= this.length) {
StringBuilder sb = new StringBuilder("Unexpected end of DN: ");
sb.append(this.dn);
throw new IllegalStateException(sb.toString());
}
this.beg = i2;
this.pos = i2 + 1;
while (true) {
i = this.pos;
if (i == this.length || (c = (cArr = this.chars)[i]) == '+' || c == ',' || c == ';') {
break;
}
if (c == ' ') {
this.end = i;
this.pos = i + 1;
while (true) {
int i3 = this.pos;
if (i3 >= this.length || this.chars[i3] != ' ') {
break;
}
this.pos = i3 + 1;
}
} else {
if (c >= 'A' && c <= 'F') {
cArr[i] = (char) (c + ' ');
}
this.pos = i + 1;
}
}
this.end = i;
int i4 = this.end;
int i5 = this.beg;
int i6 = i4 - i5;
if (i6 < 5 || (i6 & 1) == 0) {
StringBuilder sb2 = new StringBuilder("Unexpected end of DN: ");
sb2.append(this.dn);
throw new IllegalStateException(sb2.toString());
}
int i7 = i6 / 2;
byte[] bArr = new byte[i7];
int i8 = i5 + 1;
for (int i9 = 0; i9 < i7; i9++) {
bArr[i9] = (byte) getByte(i8);
i8 += 2;
}
return new String(this.chars, this.beg, i6);
}
/* JADX WARN: Code restructure failed: missing block: B:21:0x009b, code lost:
return new java.lang.String(r0, r1, r8.cur - r1);
*/
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
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
char[] r0 = r8.chars
int r1 = r8.beg
java.lang.String r2 = new java.lang.String
int r3 = r8.end
int r3 = r3 - r1
r2.<init>(r0, r1, r3)
return r2
L19:
char[] r1 = r8.chars
char r2 = r1[r0]
r3 = 44
r4 = 43
r5 = 59
r6 = 32
if (r2 == r6) goto L5c
if (r2 == r5) goto L51
r5 = 92
if (r2 == r5) goto L3e
if (r2 == r4) goto L51
if (r2 == r3) goto L51
int r3 = r8.end
int r4 = r3 + 1
r8.end = r4
r1[r3] = r2
int r0 = r0 + 1
r8.pos = r0
goto L6
L3e:
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
L51:
int r0 = r8.beg
java.lang.String r2 = new java.lang.String
int r3 = r8.end
int r3 = r3 - r0
r2.<init>(r1, r0, r3)
return r2
L5c:
int r2 = r8.end
r8.cur = r2
int r0 = r0 + 1
r8.pos = r0
int r0 = r2 + 1
r8.end = r0
r1[r2] = r6
L6a:
int r0 = r8.pos
int r1 = r8.length
if (r0 >= r1) goto L83
char[] r2 = r8.chars
char r7 = r2[r0]
if (r7 != r6) goto L83
int r1 = r8.end
int r7 = r1 + 1
r8.end = r7
r2[r1] = r6
int r0 = r0 + 1
r8.pos = r0
goto L6a
L83:
if (r0 == r1) goto L8f
char[] r1 = r8.chars
char r0 = r1[r0]
if (r0 == r3) goto L8f
if (r0 == r4) goto L8f
if (r0 != r5) goto L6
L8f:
char[] r0 = r8.chars
int r1 = r8.beg
java.lang.String r2 = new java.lang.String
int r3 = r8.cur
int r3 = r3 - r1
r2.<init>(r0, r1, r3)
return r2
*/
throw new UnsupportedOperationException("Method not decompiled: io.grpc.okhttp.internal.DistinguishedNameParser.escapedAV():java.lang.String");
}
private char getEscaped() {
int i = this.pos + 1;
this.pos = i;
if (i == this.length) {
StringBuilder sb = new StringBuilder("Unexpected end of DN: ");
sb.append(this.dn);
throw new IllegalStateException(sb.toString());
}
char c = this.chars[i];
if (c == ' ' || c == '%' || c == '\\' || c == '_' || c == '\"' || c == '#') {
return c;
}
switch (c) {
case '*':
case '+':
case ',':
return c;
default:
switch (c) {
case ';':
case '<':
case '=':
case '>':
return c;
default:
return getUTF8();
}
}
}
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) {
i = i3 & 31;
i2 = 1;
} else if (i3 <= 239) {
i = i3 & 15;
i2 = 2;
} else {
i = i3 & 7;
i2 = 3;
}
for (int i4 = 0; i4 < i2; i4++) {
int i5 = this.pos;
int i6 = i5 + 1;
this.pos = i6;
if (i6 == this.length || this.chars[i6] != '\\') {
return '?';
}
int i7 = i5 + 2;
this.pos = i7;
int i8 = getByte(i7);
this.pos++;
if ((i8 & 192) != 128) {
return '?';
}
i = (i << 6) + (i8 & 63);
}
return (char) i;
}
private int getByte(int i) {
int i2;
int i3;
int i4 = i + 1;
if (i4 >= this.length) {
StringBuilder sb = new StringBuilder("Malformed DN: ");
sb.append(this.dn);
throw new IllegalStateException(sb.toString());
}
char[] cArr = this.chars;
char c = cArr[i];
if (c >= '0' && c <= '9') {
i2 = c - '0';
} else if (c >= 'a' && c <= 'f') {
i2 = c - 'W';
} else {
if (c < 'A' || c > 'F') {
StringBuilder sb2 = new StringBuilder("Malformed DN: ");
sb2.append(this.dn);
throw new IllegalStateException(sb2.toString());
}
i2 = c - '7';
}
char c2 = cArr[i4];
if (c2 >= '0' && c2 <= '9') {
i3 = c2 - '0';
} else if (c2 >= 'a' && c2 <= 'f') {
i3 = c2 - 'W';
} else {
if (c2 < 'A' || c2 > 'F') {
StringBuilder sb3 = new StringBuilder("Malformed DN: ");
sb3.append(this.dn);
throw new IllegalStateException(sb3.toString());
}
i3 = c2 - '7';
}
return (i2 << 4) + i3;
}
public final String findMostSpecific(String str) {
String quotedAV;
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];
if (c == '\"') {
quotedAV = quotedAV();
} else if (c == '#') {
quotedAV = hexAV();
} else {
quotedAV = (c == '+' || c == ',' || c == ';') ? "" : escapedAV();
}
if (str.equalsIgnoreCase(nextAT)) {
return quotedAV;
}
int i2 = this.pos;
if (i2 >= this.length) {
return null;
}
char c2 = this.chars[i2];
if (c2 != ',' && c2 != ';' && c2 != '+') {
StringBuilder sb = new StringBuilder("Malformed DN: ");
sb.append(this.dn);
throw new IllegalStateException(sb.toString());
}
this.pos = i2 + 1;
nextAT = nextAT();
} while (nextAT != null);
StringBuilder sb2 = new StringBuilder("Malformed DN: ");
sb2.append(this.dn);
throw new IllegalStateException(sb2.toString());
}
}