package org.bouncycastle.asn1.x500.style; import com.google.common.primitives.UnsignedBytes; import java.io.IOException; import java.util.Enumeration; import java.util.Hashtable; import java.util.Vector; import org.bouncycastle.asn1.ASN1Encodable; import org.bouncycastle.asn1.ASN1Encoding; import org.bouncycastle.asn1.ASN1ObjectIdentifier; import org.bouncycastle.asn1.ASN1Primitive; import org.bouncycastle.asn1.ASN1String; import org.bouncycastle.asn1.DERUniversalString; import org.bouncycastle.asn1.x500.AttributeTypeAndValue; import org.bouncycastle.asn1.x500.RDN; import org.bouncycastle.asn1.x500.X500NameBuilder; import org.bouncycastle.asn1.x500.X500NameStyle; import org.bouncycastle.util.Strings; import org.bouncycastle.util.encoders.Hex; /* loaded from: classes6.dex */ public class IETFUtils { private static int convertHex(char c) { return ('0' > c || c > '9') ? ('a' > c || c > 'f') ? c - '7' : c - 'W' : c - '0'; } private static boolean isHexDigit(char c) { return ('0' <= c && c <= '9') || ('a' <= c && c <= 'f') || ('A' <= c && c <= 'F'); } public static String valueToString(ASN1Encodable aSN1Encodable) { StringBuffer stringBuffer = new StringBuffer(); if (!(aSN1Encodable instanceof ASN1String) || (aSN1Encodable instanceof DERUniversalString)) { try { StringBuilder sb = new StringBuilder("#"); sb.append(bytesToString(Hex.encode(aSN1Encodable.toASN1Primitive().getEncoded(ASN1Encoding.DER)))); stringBuffer.append(sb.toString()); } catch (IOException unused) { throw new IllegalArgumentException("Other value has no encoded form"); } } else { String string = ((ASN1String) aSN1Encodable).getString(); if (string.length() > 0 && string.charAt(0) == '#') { string = "\\".concat(String.valueOf(string)); } stringBuffer.append(string); } int length = stringBuffer.length(); int i = (stringBuffer.length() >= 2 && stringBuffer.charAt(0) == '\\' && stringBuffer.charAt(1) == '#') ? 2 : 0; while (i != length) { if (stringBuffer.charAt(i) == ',' || stringBuffer.charAt(i) == '\"' || stringBuffer.charAt(i) == '\\' || stringBuffer.charAt(i) == '+' || stringBuffer.charAt(i) == '=' || stringBuffer.charAt(i) == '<' || stringBuffer.charAt(i) == '>' || stringBuffer.charAt(i) == ';') { stringBuffer.insert(i, "\\"); i++; length++; } i++; } if (stringBuffer.length() > 0) { for (int i2 = 0; stringBuffer.length() > i2 && stringBuffer.charAt(i2) == ' '; i2 += 2) { stringBuffer.insert(i2, "\\"); } } for (int length2 = stringBuffer.length() - 1; length2 >= 0 && stringBuffer.charAt(length2) == ' '; length2--) { stringBuffer.insert(length2, '\\'); } return stringBuffer.toString(); } public static ASN1Encodable valueFromHexString(String str, int i) throws IOException { int length = (str.length() - i) / 2; byte[] bArr = new byte[length]; for (int i2 = 0; i2 != length; i2++) { int i3 = (i2 << 1) + i; char charAt = str.charAt(i3); bArr[i2] = (byte) (convertHex(str.charAt(i3 + 1)) | (convertHex(charAt) << 4)); } return ASN1Primitive.fromByteArray(bArr); } private static String unescape(String str) { int i; if (str.length() == 0 || (str.indexOf(92) < 0 && str.indexOf(34) < 0)) { return str.trim(); } char[] charArray = str.toCharArray(); StringBuffer stringBuffer = new StringBuffer(str.length()); if (charArray[0] == '\\' && charArray[1] == '#') { stringBuffer.append("\\#"); i = 2; } else { i = 0; } boolean z = false; int i2 = 0; boolean z2 = false; char c = 0; boolean z3 = false; while (i != charArray.length) { char c2 = charArray[i]; if (c2 != ' ') { z3 = true; } if (c2 != '\"') { if (c2 == '\\' && !z && !z2) { i2 = stringBuffer.length(); z = true; } else if (c2 != ' ' || z || z3) { if (z && isHexDigit(c2)) { if (c != 0) { stringBuffer.append((char) ((convertHex(c) << 4) + convertHex(c2))); z = false; c = 0; } else { c = c2; } } } i++; } else if (!z) { z2 = !z2; z = false; i++; } stringBuffer.append(c2); z = false; i++; } if (stringBuffer.length() > 0) { while (stringBuffer.charAt(stringBuffer.length() - 1) == ' ' && i2 != stringBuffer.length() - 1) { stringBuffer.setLength(stringBuffer.length() - 1); } } return stringBuffer.toString(); } private static String[] toValueArray(Vector vector) { int size = vector.size(); String[] strArr = new String[size]; for (int i = 0; i != size; i++) { strArr[i] = (String) vector.elementAt(i); } return strArr; } private static ASN1ObjectIdentifier[] toOIDArray(Vector vector) { int size = vector.size(); ASN1ObjectIdentifier[] aSN1ObjectIdentifierArr = new ASN1ObjectIdentifier[size]; for (int i = 0; i != size; i++) { aSN1ObjectIdentifierArr[i] = (ASN1ObjectIdentifier) vector.elementAt(i); } return aSN1ObjectIdentifierArr; } public static String stripInternalSpaces(String str) { StringBuffer stringBuffer = new StringBuffer(); if (str.length() != 0) { char charAt = str.charAt(0); stringBuffer.append(charAt); int i = 1; while (i < str.length()) { char charAt2 = str.charAt(i); if (charAt != ' ' || charAt2 != ' ') { stringBuffer.append(charAt2); } i++; charAt = charAt2; } } return stringBuffer.toString(); } public static RDN[] rDNsFromString(String str, X500NameStyle x500NameStyle) { X500NameTokenizer x500NameTokenizer = new X500NameTokenizer(str); X500NameBuilder x500NameBuilder = new X500NameBuilder(x500NameStyle); while (x500NameTokenizer.hasMoreTokens()) { String nextToken = x500NameTokenizer.nextToken(); if (nextToken.indexOf(43) > 0) { X500NameTokenizer x500NameTokenizer2 = new X500NameTokenizer(nextToken, '+'); X500NameTokenizer x500NameTokenizer3 = new X500NameTokenizer(x500NameTokenizer2.nextToken(), '='); String nextToken2 = x500NameTokenizer3.nextToken(); if (!x500NameTokenizer3.hasMoreTokens()) { throw new IllegalArgumentException("badly formatted directory string"); } String nextToken3 = x500NameTokenizer3.nextToken(); ASN1ObjectIdentifier attrNameToOID = x500NameStyle.attrNameToOID(nextToken2.trim()); if (x500NameTokenizer2.hasMoreTokens()) { Vector vector = new Vector(); Vector vector2 = new Vector(); while (true) { vector.addElement(attrNameToOID); vector2.addElement(unescape(nextToken3)); if (!x500NameTokenizer2.hasMoreTokens()) { x500NameBuilder.addMultiValuedRDN(toOIDArray(vector), toValueArray(vector2)); break; } X500NameTokenizer x500NameTokenizer4 = new X500NameTokenizer(x500NameTokenizer2.nextToken(), '='); String nextToken4 = x500NameTokenizer4.nextToken(); if (!x500NameTokenizer4.hasMoreTokens()) { throw new IllegalArgumentException("badly formatted directory string"); } nextToken3 = x500NameTokenizer4.nextToken(); attrNameToOID = x500NameStyle.attrNameToOID(nextToken4.trim()); } } else { x500NameBuilder.addRDN(attrNameToOID, unescape(nextToken3)); } } else { X500NameTokenizer x500NameTokenizer5 = new X500NameTokenizer(nextToken, '='); String nextToken5 = x500NameTokenizer5.nextToken(); if (!x500NameTokenizer5.hasMoreTokens()) { throw new IllegalArgumentException("badly formatted directory string"); } x500NameBuilder.addRDN(x500NameStyle.attrNameToOID(nextToken5.trim()), unescape(x500NameTokenizer5.nextToken())); } } return x500NameBuilder.build().getRDNs(); } public static boolean rDNAreEqual(RDN rdn, RDN rdn2) { if (!rdn.isMultiValued()) { if (rdn2.isMultiValued()) { return false; } return atvAreEqual(rdn.getFirst(), rdn2.getFirst()); } if (!rdn2.isMultiValued()) { return false; } AttributeTypeAndValue[] typesAndValues = rdn.getTypesAndValues(); AttributeTypeAndValue[] typesAndValues2 = rdn2.getTypesAndValues(); if (typesAndValues.length != typesAndValues2.length) { return false; } for (int i = 0; i != typesAndValues.length; i++) { if (!atvAreEqual(typesAndValues[i], typesAndValues2[i])) { return false; } } return true; } public static String[] findAttrNamesForOID(ASN1ObjectIdentifier aSN1ObjectIdentifier, Hashtable hashtable) { Enumeration elements = hashtable.elements(); int i = 0; int i2 = 0; while (elements.hasMoreElements()) { if (aSN1ObjectIdentifier.equals(elements.nextElement())) { i2++; } } String[] strArr = new String[i2]; Enumeration keys = hashtable.keys(); while (keys.hasMoreElements()) { String str = (String) keys.nextElement(); if (aSN1ObjectIdentifier.equals(hashtable.get(str))) { strArr[i] = str; i++; } } return strArr; } private static ASN1Primitive decodeObject(String str) { try { return ASN1Primitive.fromByteArray(Hex.decode(str.substring(1))); } catch (IOException e) { throw new IllegalStateException("unknown encoding in name: ".concat(String.valueOf(e))); } } public static ASN1ObjectIdentifier decodeAttrName(String str, Hashtable hashtable) { if (Strings.toUpperCase(str).startsWith("OID.")) { return new ASN1ObjectIdentifier(str.substring(4)); } if (str.charAt(0) >= '0' && str.charAt(0) <= '9') { return new ASN1ObjectIdentifier(str); } ASN1ObjectIdentifier aSN1ObjectIdentifier = (ASN1ObjectIdentifier) hashtable.get(Strings.toLowerCase(str)); if (aSN1ObjectIdentifier != null) { return aSN1ObjectIdentifier; } StringBuilder sb = new StringBuilder("Unknown object id - "); sb.append(str); sb.append(" - passed to distinguished name"); throw new IllegalArgumentException(sb.toString()); } /* JADX WARN: Code restructure failed: missing block: B:29:0x0066, code lost: if (r0 >= (r6.length() - 1)) goto L30; */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ public static java.lang.String canonicalize(java.lang.String r6) { /* java.lang.String r6 = org.bouncycastle.util.Strings.toLowerCase(r6) int r0 = r6.length() r1 = 0 if (r0 <= 0) goto L25 char r0 = r6.charAt(r1) r2 = 35 if (r0 != r2) goto L25 org.bouncycastle.asn1.ASN1Primitive r0 = decodeObject(r6) boolean r2 = r0 instanceof org.bouncycastle.asn1.ASN1String if (r2 == 0) goto L25 org.bouncycastle.asn1.ASN1String r0 = (org.bouncycastle.asn1.ASN1String) r0 java.lang.String r6 = r0.getString() java.lang.String r6 = org.bouncycastle.util.Strings.toLowerCase(r6) L25: int r0 = r6.length() r2 = 1 if (r0 <= r2) goto L6d L2c: int r0 = r1 + 1 int r3 = r6.length() r4 = 32 r5 = 92 if (r0 >= r3) goto L47 char r3 = r6.charAt(r1) if (r3 != r5) goto L47 char r0 = r6.charAt(r0) if (r0 != r4) goto L47 int r1 = r1 + 2 goto L2c L47: int r0 = r6.length() int r0 = r0 - r2 L4c: int r3 = r0 + (-1) if (r3 <= 0) goto L5f char r3 = r6.charAt(r3) if (r3 != r5) goto L5f char r3 = r6.charAt(r0) if (r3 != r4) goto L5f int r0 = r0 + (-2) goto L4c L5f: if (r1 > 0) goto L68 int r3 = r6.length() int r3 = r3 - r2 if (r0 >= r3) goto L6d L68: int r0 = r0 + r2 java.lang.String r6 = r6.substring(r1, r0) L6d: java.lang.String r6 = stripInternalSpaces(r6) return r6 */ throw new UnsupportedOperationException("Method not decompiled: org.bouncycastle.asn1.x500.style.IETFUtils.canonicalize(java.lang.String):java.lang.String"); } private static String bytesToString(byte[] bArr) { int length = bArr.length; char[] cArr = new char[length]; for (int i = 0; i != length; i++) { cArr[i] = (char) (bArr[i] & UnsignedBytes.MAX_VALUE); } return new String(cArr); } private static boolean atvAreEqual(AttributeTypeAndValue attributeTypeAndValue, AttributeTypeAndValue attributeTypeAndValue2) { if (attributeTypeAndValue == attributeTypeAndValue2) { return true; } return attributeTypeAndValue != null && attributeTypeAndValue2 != null && attributeTypeAndValue.getType().equals(attributeTypeAndValue2.getType()) && canonicalize(valueToString(attributeTypeAndValue.getValue())).equals(canonicalize(valueToString(attributeTypeAndValue2.getValue()))); } public static void appendTypeAndValue(StringBuffer stringBuffer, AttributeTypeAndValue attributeTypeAndValue, Hashtable hashtable) { String str = (String) hashtable.get(attributeTypeAndValue.getType()); if (str == null) { str = attributeTypeAndValue.getType().getId(); } stringBuffer.append(str); stringBuffer.append('='); stringBuffer.append(valueToString(attributeTypeAndValue.getValue())); } public static void appendRDN(StringBuffer stringBuffer, RDN rdn, Hashtable hashtable) { if (!rdn.isMultiValued()) { if (rdn.getFirst() != null) { appendTypeAndValue(stringBuffer, rdn.getFirst(), hashtable); return; } return; } AttributeTypeAndValue[] typesAndValues = rdn.getTypesAndValues(); boolean z = true; for (int i = 0; i != typesAndValues.length; i++) { if (z) { z = false; } else { stringBuffer.append('+'); } appendTypeAndValue(stringBuffer, typesAndValues[i], hashtable); } } }