252 lines
10 KiB
Java
252 lines
10 KiB
Java
|
package o;
|
||
|
|
||
|
import com.adobe.internal.xmp.XMPException;
|
||
|
import com.google.common.primitives.UnsignedBytes;
|
||
|
import java.io.ByteArrayInputStream;
|
||
|
import java.io.IOException;
|
||
|
import java.io.InputStream;
|
||
|
import java.io.InputStreamReader;
|
||
|
import java.io.StringReader;
|
||
|
import java.io.UnsupportedEncodingException;
|
||
|
import javax.xml.parsers.DocumentBuilder;
|
||
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||
|
import javax.xml.parsers.ParserConfigurationException;
|
||
|
import net.sf.scuba.smartcards.ISO7816;
|
||
|
import org.w3c.dom.Document;
|
||
|
import org.w3c.dom.Node;
|
||
|
import org.w3c.dom.NodeList;
|
||
|
import org.w3c.dom.ProcessingInstruction;
|
||
|
import org.xml.sax.InputSource;
|
||
|
import org.xml.sax.SAXException;
|
||
|
|
||
|
/* loaded from: classes.dex */
|
||
|
public final class jUH {
|
||
|
private static final Object e = new Object();
|
||
|
private static DocumentBuilderFactory b = e();
|
||
|
|
||
|
private static Document e(mVl mvl, khW khw) throws XMPException {
|
||
|
try {
|
||
|
InputSource inputSource = new InputSource(new ByteArrayInputStream(mvl.e, 0, mvl.c));
|
||
|
try {
|
||
|
if ((khw.a & 64) != 0) {
|
||
|
try {
|
||
|
b.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
|
||
|
} catch (Throwable unused) {
|
||
|
}
|
||
|
}
|
||
|
return c(inputSource);
|
||
|
} catch (XMPException e2) {
|
||
|
if ("DOCTYPE is disallowed".equals(e2.getCause().getMessage())) {
|
||
|
throw new XMPException(e2.getCause().getMessage(), 201);
|
||
|
}
|
||
|
if (e2.c != 201 && e2.c != 204) {
|
||
|
throw e2;
|
||
|
}
|
||
|
if ((khw.a & 16) != 0 && "UTF-8".equals(mvl.b())) {
|
||
|
byte[] bArr = new byte[8];
|
||
|
mVl mvl2 = new mVl((mvl.c << 2) / 3);
|
||
|
int i = 0;
|
||
|
char c = 0;
|
||
|
int i2 = 0;
|
||
|
int i3 = 0;
|
||
|
while (i < mvl.c) {
|
||
|
if (i < mvl.c) {
|
||
|
byte b2 = mvl.e[i];
|
||
|
int i4 = b2 & UnsignedBytes.MAX_VALUE;
|
||
|
if (c == 11) {
|
||
|
if (i2 > 0 && (b2 & ISO7816.INS_GET_RESPONSE) == 128) {
|
||
|
int i5 = i3 + 1;
|
||
|
bArr[i3] = (byte) i4;
|
||
|
i2--;
|
||
|
if (i2 == 0) {
|
||
|
mvl2.b(bArr, i5);
|
||
|
} else {
|
||
|
i3 = i5;
|
||
|
}
|
||
|
} else {
|
||
|
byte[] b3 = C11546ehQ.b(bArr[0]);
|
||
|
mvl2.b(b3, b3.length);
|
||
|
i -= i3;
|
||
|
}
|
||
|
c = 0;
|
||
|
i3 = 0;
|
||
|
} else if (i4 < 127) {
|
||
|
byte b4 = (byte) i4;
|
||
|
mvl2.e(mvl2.c + 1);
|
||
|
byte[] bArr2 = mvl2.e;
|
||
|
int i6 = mvl2.c;
|
||
|
mvl2.c = i6 + 1;
|
||
|
bArr2[i6] = b4;
|
||
|
} else if (i4 >= 192) {
|
||
|
i2 = -1;
|
||
|
for (int i7 = i4; i2 < 8 && (i7 & 128) == 128; i7 <<= 1) {
|
||
|
i2++;
|
||
|
}
|
||
|
bArr[i3] = (byte) i4;
|
||
|
i3++;
|
||
|
c = 11;
|
||
|
} else {
|
||
|
byte[] b5 = C11546ehQ.b((byte) i4);
|
||
|
mvl2.b(b5, b5.length);
|
||
|
}
|
||
|
i++;
|
||
|
} else {
|
||
|
throw new IndexOutOfBoundsException("The index exceeds the valid buffer area");
|
||
|
}
|
||
|
}
|
||
|
if (c == 11) {
|
||
|
for (int i8 = 0; i8 < i3; i8++) {
|
||
|
byte[] b6 = C11546ehQ.b(bArr[i8]);
|
||
|
mvl2.b(b6, b6.length);
|
||
|
}
|
||
|
}
|
||
|
mvl = mvl2;
|
||
|
}
|
||
|
if ((khw.a & 8) != 0) {
|
||
|
return c(new InputSource(new WQL(new InputStreamReader(new ByteArrayInputStream(mvl.e, 0, mvl.c), mvl.b()))));
|
||
|
}
|
||
|
return c(new InputSource(new ByteArrayInputStream(mvl.e, 0, mvl.c)));
|
||
|
}
|
||
|
} catch (UnsupportedEncodingException e3) {
|
||
|
throw new XMPException("Unsupported Encoding", 9, e3);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private static Document c(InputSource inputSource) throws XMPException {
|
||
|
try {
|
||
|
DocumentBuilder newDocumentBuilder = b.newDocumentBuilder();
|
||
|
newDocumentBuilder.setErrorHandler(null);
|
||
|
return newDocumentBuilder.parse(inputSource);
|
||
|
} catch (IOException e2) {
|
||
|
throw new XMPException("Error reading the XML-file", 204, e2);
|
||
|
} catch (ParserConfigurationException e3) {
|
||
|
throw new XMPException("XML Parser not correctly configured", 0, e3);
|
||
|
} catch (SAXException e4) {
|
||
|
throw new XMPException("XML parsing failure", 201, e4);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private static Object[] e(Node node, boolean z, Object[] objArr) {
|
||
|
Node item;
|
||
|
while (true) {
|
||
|
NodeList childNodes = node.getChildNodes();
|
||
|
for (int i = 0; i < childNodes.getLength(); i++) {
|
||
|
item = childNodes.item(i);
|
||
|
if (7 == item.getNodeType()) {
|
||
|
ProcessingInstruction processingInstruction = (ProcessingInstruction) item;
|
||
|
if ("xpacket".equals(processingInstruction.getTarget())) {
|
||
|
if (objArr != null) {
|
||
|
objArr[2] = processingInstruction.getData();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (3 != item.getNodeType() && 7 != item.getNodeType()) {
|
||
|
String namespaceURI = item.getNamespaceURI();
|
||
|
String localName = item.getLocalName();
|
||
|
if (("xmpmeta".equals(localName) || "xapmeta".equals(localName)) && "adobe:ns:meta/".equals(namespaceURI)) {
|
||
|
break;
|
||
|
}
|
||
|
if (!z && "RDF".equals(localName) && "http://www.w3.org/1999/02/22-rdf-syntax-ns#".equals(namespaceURI)) {
|
||
|
if (objArr != null) {
|
||
|
objArr[0] = item;
|
||
|
objArr[1] = e;
|
||
|
}
|
||
|
return objArr;
|
||
|
}
|
||
|
Object[] e2 = e(item, z, objArr);
|
||
|
if (e2 != null) {
|
||
|
return e2;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return null;
|
||
|
z = false;
|
||
|
node = item;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private static DocumentBuilderFactory e() {
|
||
|
DocumentBuilderFactory newInstance = DocumentBuilderFactory.newInstance();
|
||
|
newInstance.setNamespaceAware(true);
|
||
|
newInstance.setIgnoringComments(true);
|
||
|
newInstance.setExpandEntityReferences(false);
|
||
|
try {
|
||
|
newInstance.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
|
||
|
newInstance.setFeature("http://xml.org/sax/features/external-general-entities", false);
|
||
|
newInstance.setFeature("http://xerces.apache.org/xerces2-j/features.html#disallow-doctype-decl", false);
|
||
|
newInstance.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
|
||
|
newInstance.setFeature("http://xerces.apache.org/xerces2-j/features.html#external-parameter-entities", false);
|
||
|
newInstance.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
|
||
|
newInstance.setXIncludeAware(false);
|
||
|
newInstance.setExpandEntityReferences(false);
|
||
|
} catch (Throwable unused) {
|
||
|
}
|
||
|
return newInstance;
|
||
|
}
|
||
|
|
||
|
public static OPB e(Object obj, khW khw) throws XMPException {
|
||
|
Document a;
|
||
|
if (obj == null) {
|
||
|
throw new XMPException("Parameter must not be null", 4);
|
||
|
}
|
||
|
if ((obj instanceof String) && ((String) obj).length() == 0) {
|
||
|
throw new XMPException("Parameter must not be null or empty", 4);
|
||
|
}
|
||
|
if (khw == null) {
|
||
|
khw = new khW();
|
||
|
}
|
||
|
if (obj instanceof InputStream) {
|
||
|
a = e((InputStream) obj, khw);
|
||
|
} else if (obj instanceof byte[]) {
|
||
|
a = e(new mVl((byte[]) obj), khw);
|
||
|
} else {
|
||
|
a = a((String) obj, khw);
|
||
|
}
|
||
|
Object[] e2 = e(a, (khw.a & 1) != 0, new Object[3]);
|
||
|
if (e2 != null && e2[1] == e) {
|
||
|
Node node = (Node) e2[0];
|
||
|
C16814rTK c16814rTK = new C16814rTK();
|
||
|
if (!node.hasAttributes()) {
|
||
|
throw new XMPException("Invalid attributes of rdf:RDF element", 202);
|
||
|
}
|
||
|
sfI sfi = c16814rTK.b;
|
||
|
for (int i = 0; i < node.getChildNodes().getLength(); i++) {
|
||
|
Node item = node.getChildNodes().item(i);
|
||
|
if (!Eli.d(item)) {
|
||
|
Eli.a(c16814rTK, sfi, item, true, khw);
|
||
|
}
|
||
|
}
|
||
|
return (khw.a & 32) != 0 ? c16814rTK : C17589xzn.a(c16814rTK, khw);
|
||
|
}
|
||
|
return new C16814rTK();
|
||
|
}
|
||
|
|
||
|
private static Document e(InputStream inputStream, khW khw) throws XMPException {
|
||
|
if ((khw.a & 16) == 0 && (khw.a & 8) == 0 && (khw.a & 64) == 0) {
|
||
|
return c(new InputSource(inputStream));
|
||
|
}
|
||
|
try {
|
||
|
return e(new mVl(inputStream), khw);
|
||
|
} catch (IOException e2) {
|
||
|
throw new XMPException("Error reading the XML-file", 204, e2);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private static Document a(String str, khW khw) throws XMPException {
|
||
|
try {
|
||
|
if ((khw.a & 64) != 0) {
|
||
|
try {
|
||
|
b.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
|
||
|
} catch (Throwable unused) {
|
||
|
}
|
||
|
}
|
||
|
return c(new InputSource(new StringReader(str)));
|
||
|
} catch (XMPException e2) {
|
||
|
if (e2.c == 201 && (khw.a & 8) != 0) {
|
||
|
return c(new InputSource(new WQL(new StringReader(str))));
|
||
|
}
|
||
|
throw e2;
|
||
|
}
|
||
|
}
|
||
|
}
|