1759 lines
57 KiB
Java
1759 lines
57 KiB
Java
package org.jmrtd.lds.icao;
|
|
|
|
import com.airbnb.deeplinkdispatch.UrlTreeKt;
|
|
import com.google.common.base.Ascii;
|
|
import java.io.ByteArrayInputStream;
|
|
import java.io.DataInputStream;
|
|
import java.io.DataOutputStream;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.OutputStream;
|
|
import java.io.UnsupportedEncodingException;
|
|
import java.util.logging.Logger;
|
|
import net.sf.scuba.data.Gender;
|
|
import org.jmrtd.lds.AbstractLDSInfo;
|
|
|
|
/* loaded from: classes6.dex */
|
|
public class MRZInfo extends AbstractLDSInfo {
|
|
public static final int DOC_TYPE_ID1 = 1;
|
|
public static final int DOC_TYPE_ID2 = 2;
|
|
public static final int DOC_TYPE_ID3 = 3;
|
|
public static final int DOC_TYPE_UNSPECIFIED = 0;
|
|
private static final Logger LOGGER;
|
|
private static final String MRZ_CHARS = "<0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
private static int a = 0;
|
|
private static short[] b = null;
|
|
private static byte[] c = null;
|
|
private static int d = 0;
|
|
private static int e = 0;
|
|
private static int j = 0;
|
|
private static final long serialVersionUID = 7054965914471297804L;
|
|
private char compositeCheckDigit;
|
|
private String dateOfBirth;
|
|
private char dateOfBirthCheckDigit;
|
|
private String dateOfExpiry;
|
|
private char dateOfExpiryCheckDigit;
|
|
private String documentCode;
|
|
private String documentNumber;
|
|
private char documentNumberCheckDigit;
|
|
private int documentType;
|
|
private Gender gender;
|
|
private String issuingState;
|
|
private String nationality;
|
|
private String optionalData1;
|
|
private String optionalData2;
|
|
private String primaryIdentifier;
|
|
private String secondaryIdentifier;
|
|
private static final byte[] $$a = {76, 73, -112, -126};
|
|
private static final int $$b = 57;
|
|
private static int $10 = 0;
|
|
private static int $11 = 1;
|
|
private static int i = 1;
|
|
|
|
/* JADX WARN: Removed duplicated region for block: B:10:0x002a */
|
|
/* JADX WARN: Removed duplicated region for block: B:7:0x0022 */
|
|
/* JADX WARN: Unsupported multi-entry loop pattern (BACK_EDGE: B:10:0x002a -> B:4:0x002e). Please report as a decompilation issue!!! */
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
private static void g(int r6, byte r7, short r8, java.lang.Object[] r9) {
|
|
/*
|
|
int r6 = r6 * 4
|
|
int r6 = 4 - r6
|
|
int r8 = r8 * 4
|
|
int r0 = 1 - r8
|
|
int r7 = r7 * 2
|
|
int r7 = r7 + 108
|
|
byte[] r1 = org.jmrtd.lds.icao.MRZInfo.$$a
|
|
byte[] r0 = new byte[r0]
|
|
r2 = 0
|
|
int r8 = 0 - r8
|
|
if (r1 != 0) goto L19
|
|
r4 = r7
|
|
r3 = r2
|
|
r7 = r6
|
|
goto L2e
|
|
L19:
|
|
r3 = r2
|
|
r5 = r7
|
|
r7 = r6
|
|
r6 = r5
|
|
L1d:
|
|
byte r4 = (byte) r6
|
|
r0[r3] = r4
|
|
if (r3 != r8) goto L2a
|
|
java.lang.String r6 = new java.lang.String
|
|
r6.<init>(r0, r2)
|
|
r9[r2] = r6
|
|
return
|
|
L2a:
|
|
int r3 = r3 + 1
|
|
r4 = r1[r7]
|
|
L2e:
|
|
int r6 = r6 + r4
|
|
int r7 = r7 + 1
|
|
goto L1d
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: org.jmrtd.lds.icao.MRZInfo.g(int, byte, short, java.lang.Object[]):void");
|
|
}
|
|
|
|
static {
|
|
j = 0;
|
|
a();
|
|
LOGGER = Logger.getLogger("org.jmrtd");
|
|
int i2 = i + 9;
|
|
j = i2 % 128;
|
|
int i3 = i2 % 2;
|
|
}
|
|
|
|
/* JADX WARN: Code restructure failed: missing block: B:12:0x0031, code lost:
|
|
|
|
if ((!r5.startsWith("V")) == false) goto L17;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:14:0x0039, code lost:
|
|
|
|
if ((!r5.startsWith("V")) == false) goto L17;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:22:0x0078, code lost:
|
|
|
|
if ((r5 % 2) == 0) goto L33;
|
|
*/
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
public MRZInfo(java.lang.String r5, java.lang.String r6, java.lang.String r7, java.lang.String r8, java.lang.String r9, java.lang.String r10, java.lang.String r11, net.sf.scuba.data.Gender r12, java.lang.String r13, java.lang.String r14) {
|
|
/*
|
|
r4 = this;
|
|
r4.<init>()
|
|
if (r5 == 0) goto Lb4
|
|
int r0 = r5.length()
|
|
if (r0 <= 0) goto Lb4
|
|
int r0 = r5.length()
|
|
r1 = 2
|
|
if (r0 > r1) goto Lb4
|
|
java.lang.String r0 = "P"
|
|
boolean r0 = r5.startsWith(r0)
|
|
r2 = 1
|
|
if (r0 != 0) goto L3b
|
|
int r0 = org.jmrtd.lds.icao.MRZInfo.i
|
|
int r0 = r0 + 33
|
|
int r3 = r0 % 128
|
|
org.jmrtd.lds.icao.MRZInfo.j = r3
|
|
int r0 = r0 % r1
|
|
java.lang.String r3 = "V"
|
|
if (r0 == 0) goto L34
|
|
boolean r0 = r5.startsWith(r3)
|
|
r3 = 13
|
|
int r3 = r3 / 0
|
|
r0 = r0 ^ r2
|
|
if (r0 != 0) goto Lb4
|
|
goto L3b
|
|
L34:
|
|
boolean r0 = r5.startsWith(r3)
|
|
r0 = r0 ^ r2
|
|
if (r0 != 0) goto Lb4
|
|
L3b:
|
|
int r0 = getDocumentTypeFromDocumentCode(r5)
|
|
r4.documentType = r0
|
|
java.lang.String r5 = trimFillerChars(r5)
|
|
r4.documentCode = r5
|
|
r4.issuingState = r6
|
|
r4.primaryIdentifier = r7
|
|
r4.secondaryIdentifier = r8
|
|
java.lang.String r5 = trimFillerChars(r9)
|
|
r4.documentNumber = r5
|
|
r4.nationality = r10
|
|
r4.dateOfBirth = r11
|
|
r4.gender = r12
|
|
r4.dateOfExpiry = r13
|
|
java.lang.String r5 = ""
|
|
if (r14 == 0) goto Lae
|
|
boolean r6 = equalsModuloFillerChars(r14, r5)
|
|
if (r6 != 0) goto Lae
|
|
int r5 = r14.length()
|
|
r6 = 15
|
|
if (r5 != r6) goto L7b
|
|
r4.optionalData1 = r14
|
|
int r5 = org.jmrtd.lds.icao.MRZInfo.j
|
|
int r5 = r5 + 85
|
|
int r6 = r5 % 128
|
|
org.jmrtd.lds.icao.MRZInfo.i = r6
|
|
int r5 = r5 % r1
|
|
if (r5 != 0) goto L9c
|
|
goto Lb0
|
|
L7b:
|
|
int r5 = r14.length()
|
|
r6 = 14
|
|
if (r5 > r6) goto L9e
|
|
java.lang.StringBuilder r5 = new java.lang.StringBuilder
|
|
r5.<init>()
|
|
java.lang.String r6 = mrzFormat(r14, r6)
|
|
r5.append(r6)
|
|
char r6 = checkDigit(r14, r2)
|
|
r5.append(r6)
|
|
java.lang.String r5 = r5.toString()
|
|
r4.optionalData1 = r5
|
|
L9c:
|
|
int r1 = r1 % r1
|
|
goto Lb0
|
|
L9e:
|
|
java.lang.IllegalArgumentException r5 = new java.lang.IllegalArgumentException
|
|
java.lang.String r6 = "Wrong personal number: "
|
|
java.lang.String r7 = java.lang.String.valueOf(r14)
|
|
java.lang.String r6 = r6.concat(r7)
|
|
r5.<init>(r6)
|
|
throw r5
|
|
Lae:
|
|
r4.optionalData1 = r5
|
|
Lb0:
|
|
r4.checkDigit()
|
|
return
|
|
Lb4:
|
|
java.lang.IllegalArgumentException r6 = new java.lang.IllegalArgumentException
|
|
java.lang.String r7 = "Wrong document code: "
|
|
java.lang.String r5 = java.lang.String.valueOf(r5)
|
|
java.lang.String r5 = r7.concat(r5)
|
|
r6.<init>(r5)
|
|
throw r6
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: org.jmrtd.lds.icao.MRZInfo.<init>(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, net.sf.scuba.data.Gender, java.lang.String, java.lang.String):void");
|
|
}
|
|
|
|
/* JADX WARN: Code restructure failed: missing block: B:14:0x003c, code lost:
|
|
|
|
if (r14.startsWith("A") != false) goto L19;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:16:0x0043, code lost:
|
|
|
|
if (r14.startsWith("A") != false) goto L19;
|
|
*/
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
public MRZInfo(java.lang.String r14, java.lang.String r15, java.lang.String r16, java.lang.String r17, java.lang.String r18, net.sf.scuba.data.Gender r19, java.lang.String r20, java.lang.String r21, java.lang.String r22, java.lang.String r23, java.lang.String r24) {
|
|
/*
|
|
Method dump skipped, instructions count: 280
|
|
To view this dump add '--comments-level debug' option
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: org.jmrtd.lds.icao.MRZInfo.<init>(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, net.sf.scuba.data.Gender, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String):void");
|
|
}
|
|
|
|
public MRZInfo(InputStream inputStream, int i2) {
|
|
try {
|
|
readObject(inputStream, i2);
|
|
} catch (IOException e2) {
|
|
Logger logger = LOGGER;
|
|
StringBuilder sb = new StringBuilder("Exception: ");
|
|
sb.append(e2.getMessage());
|
|
logger.severe(sb.toString());
|
|
throw new IllegalArgumentException(e2.getMessage());
|
|
}
|
|
}
|
|
|
|
public MRZInfo(String str) {
|
|
if (str == null) {
|
|
throw new IllegalArgumentException("Null string");
|
|
}
|
|
String replace = str.trim().replace("\n", "");
|
|
try {
|
|
readObject(new ByteArrayInputStream(replace.getBytes("UTF-8")), replace.length());
|
|
int i2 = j + 9;
|
|
i = i2 % 128;
|
|
if (i2 % 2 == 0) {
|
|
throw null;
|
|
}
|
|
} catch (UnsupportedEncodingException e2) {
|
|
Logger logger = LOGGER;
|
|
StringBuilder sb = new StringBuilder("Exception: ");
|
|
sb.append(e2.getMessage());
|
|
logger.severe(sb.toString());
|
|
throw new IllegalStateException(e2.getMessage());
|
|
} catch (IOException e3) {
|
|
Logger logger2 = LOGGER;
|
|
StringBuilder sb2 = new StringBuilder("Exception: ");
|
|
sb2.append(e3.getMessage());
|
|
logger2.severe(sb2.toString());
|
|
throw new IllegalArgumentException(e3.getMessage());
|
|
} catch (Exception e4) {
|
|
throw e4;
|
|
}
|
|
}
|
|
|
|
/* JADX WARN: Code restructure failed: missing block: B:45:0x01d2, code lost:
|
|
|
|
if ((!r4) != false) goto L45;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:46:0x01e6, code lost:
|
|
|
|
r4 = 1;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:84:0x01e8, code lost:
|
|
|
|
r4 = 0;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:86:0x01e4, code lost:
|
|
|
|
if (r4 != false) goto L44;
|
|
*/
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
private static void f(short r19, byte r20, int r21, int r22, int r23, java.lang.Object[] r24) {
|
|
/*
|
|
Method dump skipped, instructions count: 809
|
|
To view this dump add '--comments-level debug' option
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: org.jmrtd.lds.icao.MRZInfo.f(short, byte, int, int, int, java.lang.Object[]):void");
|
|
}
|
|
|
|
/* JADX WARN: Removed duplicated region for block: B:10:0x0054 */
|
|
/* JADX WARN: Removed duplicated region for block: B:16:0x00f4 */
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
private void readObject(java.io.InputStream r5, int r6) throws java.io.IOException {
|
|
/*
|
|
Method dump skipped, instructions count: 354
|
|
To view this dump add '--comments-level debug' option
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: org.jmrtd.lds.icao.MRZInfo.readObject(java.io.InputStream, int):void");
|
|
}
|
|
|
|
@Override // org.jmrtd.lds.AbstractLDSInfo
|
|
public void writeObject(OutputStream outputStream) throws IOException {
|
|
int i2 = 2 % 2;
|
|
DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
|
|
writeDocumentType(dataOutputStream);
|
|
if (this.documentType != 1) {
|
|
writeIssuingState(dataOutputStream);
|
|
writeName(dataOutputStream, 39);
|
|
writeString(this.documentNumber, dataOutputStream, 9);
|
|
dataOutputStream.write(this.documentNumberCheckDigit);
|
|
writeNationality(dataOutputStream);
|
|
writeDateOfBirth(dataOutputStream);
|
|
dataOutputStream.write(this.dateOfBirthCheckDigit);
|
|
writeGender(dataOutputStream);
|
|
writeDateOfExpiry(dataOutputStream);
|
|
dataOutputStream.write(this.dateOfExpiryCheckDigit);
|
|
writeString(this.optionalData1, dataOutputStream, 15);
|
|
dataOutputStream.write(this.compositeCheckDigit);
|
|
return;
|
|
}
|
|
int i3 = i + 31;
|
|
j = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
writeIssuingState(dataOutputStream);
|
|
if (this.documentNumber.length() > 9) {
|
|
int i5 = i + 43;
|
|
j = i5 % 128;
|
|
if (i5 % 2 != 0) {
|
|
equalsModuloFillerChars(this.optionalData1, "");
|
|
Object obj = null;
|
|
obj.hashCode();
|
|
throw null;
|
|
}
|
|
if (equalsModuloFillerChars(this.optionalData1, "")) {
|
|
writeString(this.documentNumber.substring(0, 9), dataOutputStream, 9);
|
|
dataOutputStream.write(60);
|
|
StringBuilder sb = new StringBuilder();
|
|
String str = this.documentNumber;
|
|
sb.append(str.substring(9, str.length()));
|
|
sb.append(this.documentNumberCheckDigit);
|
|
sb.append(UrlTreeKt.configurablePathSegmentPrefix);
|
|
writeString(sb.toString(), dataOutputStream, 15);
|
|
writeDateOfBirth(dataOutputStream);
|
|
dataOutputStream.write(this.dateOfBirthCheckDigit);
|
|
writeGender(dataOutputStream);
|
|
writeDateOfExpiry(dataOutputStream);
|
|
dataOutputStream.write(this.dateOfExpiryCheckDigit);
|
|
writeNationality(dataOutputStream);
|
|
writeString(this.optionalData2, dataOutputStream, 11);
|
|
dataOutputStream.write(this.compositeCheckDigit);
|
|
writeName(dataOutputStream, 30);
|
|
}
|
|
}
|
|
writeString(this.documentNumber, dataOutputStream, 9);
|
|
dataOutputStream.write(this.documentNumberCheckDigit);
|
|
writeString(this.optionalData1, dataOutputStream, 15);
|
|
writeDateOfBirth(dataOutputStream);
|
|
dataOutputStream.write(this.dateOfBirthCheckDigit);
|
|
writeGender(dataOutputStream);
|
|
writeDateOfExpiry(dataOutputStream);
|
|
dataOutputStream.write(this.dateOfExpiryCheckDigit);
|
|
writeNationality(dataOutputStream);
|
|
writeString(this.optionalData2, dataOutputStream, 11);
|
|
dataOutputStream.write(this.compositeCheckDigit);
|
|
writeName(dataOutputStream, 30);
|
|
}
|
|
|
|
public void setDateOfBirth(String str) {
|
|
int i2 = 2 % 2;
|
|
int i3 = j + 11;
|
|
i = i3 % 128;
|
|
if (i3 % 2 != 0) {
|
|
this.dateOfBirth = str;
|
|
checkDigit();
|
|
} else {
|
|
this.dateOfBirth = str;
|
|
checkDigit();
|
|
throw null;
|
|
}
|
|
}
|
|
|
|
public void setDateOfExpiry(String str) {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 29;
|
|
j = i3 % 128;
|
|
if (i3 % 2 == 0) {
|
|
this.dateOfExpiry = str;
|
|
checkDigit();
|
|
} else {
|
|
this.dateOfExpiry = str;
|
|
checkDigit();
|
|
int i4 = 55 / 0;
|
|
}
|
|
}
|
|
|
|
public void setDocumentNumber(String str) {
|
|
int i2 = 2 % 2;
|
|
int i3 = j + 113;
|
|
i = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
this.documentNumber = str.trim();
|
|
checkDigit();
|
|
int i5 = i + 37;
|
|
j = i5 % 128;
|
|
int i6 = i5 % 2;
|
|
}
|
|
|
|
/* JADX WARN: Code restructure failed: missing block: B:10:0x0028, code lost:
|
|
|
|
r3.optionalData2 = "";
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:12:0x0022, code lost:
|
|
|
|
if (r4 == 1) goto L9;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:4:0x0016, code lost:
|
|
|
|
if (r4 == 0) goto L9;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:9:0x0026, code lost:
|
|
|
|
if (r3.optionalData2 != null) goto L12;
|
|
*/
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
public void setDocumentCode(java.lang.String r4) {
|
|
/*
|
|
r3 = this;
|
|
r0 = 2
|
|
int r1 = r0 % r0
|
|
int r1 = org.jmrtd.lds.icao.MRZInfo.i
|
|
int r1 = r1 + 3
|
|
int r2 = r1 % 128
|
|
org.jmrtd.lds.icao.MRZInfo.j = r2
|
|
int r1 = r1 % r0
|
|
if (r1 == 0) goto L19
|
|
r3.documentCode = r4
|
|
int r4 = getDocumentTypeFromDocumentCode(r4)
|
|
r3.documentType = r4
|
|
if (r4 != 0) goto L2c
|
|
goto L24
|
|
L19:
|
|
r3.documentCode = r4
|
|
int r4 = getDocumentTypeFromDocumentCode(r4)
|
|
r3.documentType = r4
|
|
r1 = 1
|
|
if (r4 != r1) goto L2c
|
|
L24:
|
|
java.lang.String r4 = r3.optionalData2
|
|
if (r4 != 0) goto L2c
|
|
java.lang.String r4 = ""
|
|
r3.optionalData2 = r4
|
|
L2c:
|
|
int r4 = org.jmrtd.lds.icao.MRZInfo.j
|
|
int r4 = r4 + 95
|
|
int r1 = r4 % 128
|
|
org.jmrtd.lds.icao.MRZInfo.i = r1
|
|
int r4 = r4 % r0
|
|
return
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: org.jmrtd.lds.icao.MRZInfo.setDocumentCode(java.lang.String):void");
|
|
}
|
|
|
|
public void setIssuingState(String str) {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 23;
|
|
j = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
this.issuingState = str;
|
|
checkDigit();
|
|
int i5 = i + 107;
|
|
j = i5 % 128;
|
|
int i6 = i5 % 2;
|
|
}
|
|
|
|
public void setPrimaryIdentifier(String str) {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 115;
|
|
j = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
this.primaryIdentifier = str.trim();
|
|
checkDigit();
|
|
int i5 = j + 45;
|
|
i = i5 % 128;
|
|
if (i5 % 2 == 0) {
|
|
throw null;
|
|
}
|
|
}
|
|
|
|
public String[] getSecondaryIdentifierComponents() {
|
|
int i2 = 2 % 2;
|
|
int i3 = j + 71;
|
|
i = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
String[] split = this.secondaryIdentifier.split(" |<");
|
|
int i5 = j + 71;
|
|
i = i5 % 128;
|
|
if (i5 % 2 != 0) {
|
|
return split;
|
|
}
|
|
throw null;
|
|
}
|
|
|
|
public void setSecondaryIdentifierComponents(String[] strArr) {
|
|
int i2 = 2 % 2;
|
|
if (strArr == null) {
|
|
int i3 = j + 51;
|
|
i = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
this.secondaryIdentifier = null;
|
|
} else {
|
|
int i5 = i + 13;
|
|
j = i5 % 128;
|
|
int i6 = i5 % 2;
|
|
int i7 = 0;
|
|
while (i7 < strArr.length) {
|
|
String str = strArr[i7];
|
|
int length = strArr.length;
|
|
i7++;
|
|
int i8 = j + 77;
|
|
i = i8 % 128;
|
|
if (i8 % 2 == 0) {
|
|
int i9 = 3 % 4;
|
|
}
|
|
}
|
|
}
|
|
checkDigit();
|
|
}
|
|
|
|
public void setSecondaryIdentifiers(String str) {
|
|
int i2 = 2 % 2;
|
|
int i3 = j + 5;
|
|
i = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
readSecondaryIdentifiers(str.trim());
|
|
checkDigit();
|
|
int i5 = i + 7;
|
|
j = i5 % 128;
|
|
int i6 = i5 % 2;
|
|
}
|
|
|
|
public void setNationality(String str) {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 53;
|
|
j = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
this.nationality = str;
|
|
checkDigit();
|
|
int i5 = i + 33;
|
|
j = i5 % 128;
|
|
if (i5 % 2 == 0) {
|
|
return;
|
|
}
|
|
Object obj = null;
|
|
obj.hashCode();
|
|
throw null;
|
|
}
|
|
|
|
public String getPersonalNumber() {
|
|
int i2 = 2 % 2;
|
|
int i3 = j + 121;
|
|
i = i3 % 128;
|
|
if (i3 % 2 != 0 ? this.optionalData1.length() > 14 : this.optionalData1.length() > 16) {
|
|
String trimFillerChars = trimFillerChars(this.optionalData1.substring(0, 14));
|
|
int i4 = j + 101;
|
|
i = i4 % 128;
|
|
int i5 = i4 % 2;
|
|
return trimFillerChars;
|
|
}
|
|
return trimFillerChars(this.optionalData1);
|
|
}
|
|
|
|
public void setPersonalNumber(String str) {
|
|
int i2 = 2 % 2;
|
|
if (str != null) {
|
|
int i3 = i + 45;
|
|
j = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
if (str.length() <= 14) {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append(mrzFormat(str, 14));
|
|
sb.append(checkDigit(str, true));
|
|
this.optionalData1 = sb.toString();
|
|
int i5 = j + 11;
|
|
i = i5 % 128;
|
|
int i6 = i5 % 2;
|
|
return;
|
|
}
|
|
}
|
|
throw new IllegalArgumentException("Wrong personal number");
|
|
}
|
|
|
|
public void setOptionalData2(String str) {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 73;
|
|
j = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
this.optionalData2 = trimFillerChars(str);
|
|
checkDigit();
|
|
int i5 = i + 29;
|
|
j = i5 % 128;
|
|
if (i5 % 2 == 0) {
|
|
return;
|
|
}
|
|
Object obj = null;
|
|
obj.hashCode();
|
|
throw null;
|
|
}
|
|
|
|
public void setGender(Gender gender) {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 29;
|
|
j = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
this.gender = gender;
|
|
checkDigit();
|
|
int i5 = j + 31;
|
|
i = i5 % 128;
|
|
if (i5 % 2 != 0) {
|
|
return;
|
|
}
|
|
Object obj = null;
|
|
obj.hashCode();
|
|
throw null;
|
|
}
|
|
|
|
public String toString() {
|
|
int i2 = 2 % 2;
|
|
try {
|
|
String str = new String(getEncoded(), "UTF-8");
|
|
int length = str.length();
|
|
if (length == 88) {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append(str.substring(0, 44));
|
|
sb.append("\n");
|
|
sb.append(str.substring(44, 88));
|
|
sb.append("\n");
|
|
String obj = sb.toString();
|
|
int i3 = i + 111;
|
|
j = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
return obj;
|
|
}
|
|
if (length != 90) {
|
|
int i5 = i + 109;
|
|
j = i5 % 128;
|
|
int i6 = i5 % 2;
|
|
return str;
|
|
}
|
|
StringBuilder sb2 = new StringBuilder();
|
|
sb2.append(str.substring(0, 30));
|
|
sb2.append("\n");
|
|
sb2.append(str.substring(30, 60));
|
|
sb2.append("\n");
|
|
sb2.append(str.substring(60, 90));
|
|
sb2.append("\n");
|
|
return sb2.toString();
|
|
} catch (UnsupportedEncodingException e2) {
|
|
Logger logger = LOGGER;
|
|
StringBuilder sb3 = new StringBuilder("Exception: ");
|
|
sb3.append(e2.getMessage());
|
|
logger.severe(sb3.toString());
|
|
throw new IllegalStateException(e2.getMessage());
|
|
}
|
|
}
|
|
|
|
public int hashCode() {
|
|
int i2 = 2 % 2;
|
|
int i3 = j + 57;
|
|
i = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
int hashCode = (toString().hashCode() << 1) + 53;
|
|
int i5 = j + 19;
|
|
i = i5 % 128;
|
|
if (i5 % 2 != 0) {
|
|
return hashCode;
|
|
}
|
|
Object obj = null;
|
|
obj.hashCode();
|
|
throw null;
|
|
}
|
|
|
|
/* JADX WARN: Code restructure failed: missing block: B:28:0x0076, code lost:
|
|
|
|
if (r7.nationality != null) goto L40;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:44:0x00f5, code lost:
|
|
|
|
if (r7.gender != null) goto L76;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:74:0x00d9, code lost:
|
|
|
|
if (r2.equals(r7.dateOfBirth) != false) goto L72;
|
|
*/
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
public boolean equals(java.lang.Object r7) {
|
|
/*
|
|
Method dump skipped, instructions count: 296
|
|
To view this dump add '--comments-level debug' option
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: org.jmrtd.lds.icao.MRZInfo.equals(java.lang.Object):boolean");
|
|
}
|
|
|
|
public static char checkDigit(String str) {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 29;
|
|
j = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
char checkDigit = checkDigit(str, false);
|
|
int i5 = j + 123;
|
|
i = i5 % 128;
|
|
if (i5 % 2 != 0) {
|
|
return checkDigit;
|
|
}
|
|
throw null;
|
|
}
|
|
|
|
private void readNameIdentifiers(String str) {
|
|
int i2 = 2 % 2;
|
|
int indexOf = str.indexOf("<<");
|
|
if (indexOf < 0) {
|
|
throw new IllegalArgumentException("Input does not contain primary identifier!");
|
|
}
|
|
int i3 = j + 77;
|
|
i = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
this.primaryIdentifier = trimFillerChars(str.substring(0, indexOf));
|
|
readSecondaryIdentifiers(str.substring(str.indexOf("<<") + 2));
|
|
int i5 = i + 109;
|
|
j = i5 % 128;
|
|
if (i5 % 2 == 0) {
|
|
return;
|
|
}
|
|
Object obj = null;
|
|
obj.hashCode();
|
|
throw null;
|
|
}
|
|
|
|
private void writeString(String str, DataOutputStream dataOutputStream, int i2) throws IOException {
|
|
int i3 = 2 % 2;
|
|
int i4 = j + 63;
|
|
i = i4 % 128;
|
|
int i5 = i4 % 2;
|
|
dataOutputStream.write(mrzFormat(str, i2).getBytes("UTF-8"));
|
|
int i6 = i + 9;
|
|
j = i6 % 128;
|
|
int i7 = i6 % 2;
|
|
}
|
|
|
|
private void writeIssuingState(DataOutputStream dataOutputStream) throws IOException {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 77;
|
|
j = i3 % 128;
|
|
if (i3 % 2 != 0) {
|
|
dataOutputStream.write(this.issuingState.getBytes("UTF-8"));
|
|
int i4 = 41 / 0;
|
|
} else {
|
|
dataOutputStream.write(this.issuingState.getBytes("UTF-8"));
|
|
}
|
|
int i5 = i + 55;
|
|
j = i5 % 128;
|
|
int i6 = i5 % 2;
|
|
}
|
|
|
|
private void writeDateOfExpiry(DataOutputStream dataOutputStream) throws IOException {
|
|
int i2 = 2 % 2;
|
|
int i3 = j + 13;
|
|
i = i3 % 128;
|
|
if (i3 % 2 == 0) {
|
|
dataOutputStream.write(this.dateOfExpiry.getBytes("UTF-8"));
|
|
throw null;
|
|
}
|
|
dataOutputStream.write(this.dateOfExpiry.getBytes("UTF-8"));
|
|
int i4 = j + 119;
|
|
i = i4 % 128;
|
|
int i5 = i4 % 2;
|
|
}
|
|
|
|
private void writeGender(DataOutputStream dataOutputStream) throws IOException {
|
|
int i2 = 2 % 2;
|
|
int i3 = j + 93;
|
|
i = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
dataOutputStream.write(genderToString().getBytes("UTF-8"));
|
|
int i5 = i + 101;
|
|
j = i5 % 128;
|
|
int i6 = i5 % 2;
|
|
}
|
|
|
|
private void writeDateOfBirth(DataOutputStream dataOutputStream) throws IOException {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 11;
|
|
j = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
dataOutputStream.write(this.dateOfBirth.getBytes("UTF-8"));
|
|
int i5 = j + 117;
|
|
i = i5 % 128;
|
|
int i6 = i5 % 2;
|
|
}
|
|
|
|
private void writeNationality(DataOutputStream dataOutputStream) throws IOException {
|
|
int i2 = 2 % 2;
|
|
int i3 = j + 41;
|
|
i = i3 % 128;
|
|
if (i3 % 2 != 0) {
|
|
dataOutputStream.write(this.nationality.getBytes("UTF-8"));
|
|
} else {
|
|
dataOutputStream.write(this.nationality.getBytes("UTF-8"));
|
|
int i4 = 10 / 0;
|
|
}
|
|
}
|
|
|
|
private void writeName(DataOutputStream dataOutputStream, int i2) throws IOException {
|
|
int i3 = 2 % 2;
|
|
int i4 = j + 123;
|
|
i = i4 % 128;
|
|
int i5 = i4 % 2;
|
|
dataOutputStream.write(nameToString(i2).getBytes("UTF-8"));
|
|
int i6 = j + 97;
|
|
i = i6 % 128;
|
|
if (i6 % 2 == 0) {
|
|
int i7 = 97 / 0;
|
|
}
|
|
}
|
|
|
|
private void writeDocumentType(DataOutputStream dataOutputStream) throws IOException {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 99;
|
|
j = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
writeString(this.documentCode, dataOutputStream, 2);
|
|
int i5 = i + 17;
|
|
j = i5 % 128;
|
|
int i6 = i5 % 2;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
/* renamed from: org.jmrtd.lds.icao.MRZInfo$1, reason: invalid class name */
|
|
/* loaded from: classes6.dex */
|
|
public static /* synthetic */ class AnonymousClass1 {
|
|
static final int[] $SwitchMap$net$sf$scuba$data$Gender;
|
|
|
|
static {
|
|
int[] iArr = new int[Gender.values().length];
|
|
$SwitchMap$net$sf$scuba$data$Gender = iArr;
|
|
try {
|
|
iArr[Gender.MALE.ordinal()] = 1;
|
|
} catch (NoSuchFieldError unused) {
|
|
}
|
|
try {
|
|
$SwitchMap$net$sf$scuba$data$Gender[Gender.FEMALE.ordinal()] = 2;
|
|
} catch (NoSuchFieldError unused2) {
|
|
}
|
|
}
|
|
}
|
|
|
|
private String genderToString() {
|
|
int i2 = 2 % 2;
|
|
int i3 = AnonymousClass1.$SwitchMap$net$sf$scuba$data$Gender[this.gender.ordinal()];
|
|
if (i3 == 1) {
|
|
return "M";
|
|
}
|
|
int i4 = j + 77;
|
|
int i5 = i4 % 128;
|
|
i = i5;
|
|
if (i4 % 2 == 0) {
|
|
if (i3 != 3) {
|
|
return UrlTreeKt.configurablePathSegmentPrefix;
|
|
}
|
|
} else if (i3 != 2) {
|
|
return UrlTreeKt.configurablePathSegmentPrefix;
|
|
}
|
|
int i6 = i5 + 49;
|
|
j = i6 % 128;
|
|
int i7 = i6 % 2;
|
|
return "F";
|
|
}
|
|
|
|
private String nameToString(int i2) {
|
|
int i3 = 2 % 2;
|
|
String[] split = this.primaryIdentifier.split(" |<");
|
|
String[] split2 = this.secondaryIdentifier.split(" |<");
|
|
StringBuffer stringBuffer = new StringBuffer();
|
|
int i4 = 0;
|
|
while (i4 < split.length) {
|
|
int i5 = i + 103;
|
|
j = i5 % 128;
|
|
int i6 = i5 % 2;
|
|
stringBuffer.append(split[i4]);
|
|
stringBuffer.append(UrlTreeKt.configurablePathSegmentPrefixChar);
|
|
i4++;
|
|
int i7 = i + 63;
|
|
j = i7 % 128;
|
|
if (i7 % 2 != 0) {
|
|
int i8 = 4 % 4;
|
|
}
|
|
}
|
|
for (String str : split2) {
|
|
int i9 = j + 125;
|
|
i = i9 % 128;
|
|
int i10 = i9 % 2;
|
|
stringBuffer.append(UrlTreeKt.configurablePathSegmentPrefixChar);
|
|
stringBuffer.append(str);
|
|
}
|
|
return mrzFormat(stringBuffer.toString(), i2);
|
|
}
|
|
|
|
private String readString(DataInputStream dataInputStream, int i2) throws IOException {
|
|
int i3 = 2 % 2;
|
|
byte[] bArr = new byte[i2];
|
|
dataInputStream.readFully(bArr);
|
|
String trim = new String(bArr).trim();
|
|
int i4 = j + 73;
|
|
i = i4 % 128;
|
|
int i5 = i4 % 2;
|
|
return trim;
|
|
}
|
|
|
|
private String readStringWithFillers(DataInputStream dataInputStream, int i2) throws IOException {
|
|
int i3 = 2 % 2;
|
|
int i4 = i + 17;
|
|
j = i4 % 128;
|
|
int i5 = i4 % 2;
|
|
String trimFillerChars = trimFillerChars(readString(dataInputStream, i2));
|
|
int i6 = i + 43;
|
|
j = i6 % 128;
|
|
int i7 = i6 % 2;
|
|
return trimFillerChars;
|
|
}
|
|
|
|
private String readCountry(DataInputStream dataInputStream) throws IOException {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 3;
|
|
j = i3 % 128;
|
|
return i3 % 2 != 0 ? readString(dataInputStream, 2) : readString(dataInputStream, 3);
|
|
}
|
|
|
|
/* JADX ERROR: JadxRuntimeException in pass: IfRegionVisitor
|
|
jadx.core.utils.exceptions.JadxRuntimeException: Can't remove SSA var: r5v15 java.lang.String, still in use, count: 2, list:
|
|
(r5v15 java.lang.String) from 0x0015: INVOKE (r5v15 java.lang.String), ("M") VIRTUAL call: java.lang.String.equalsIgnoreCase(java.lang.String):boolean A[MD:(java.lang.String):boolean (c), WRAPPED] (LINE:815)
|
|
(r5v15 java.lang.String) from 0x003a: PHI (r5v7 java.lang.String) = (r5v1 java.lang.String), (r5v15 java.lang.String) binds: [B:25:0x0025, B:4:0x0019] A[DONT_GENERATE, DONT_INLINE]
|
|
at jadx.core.utils.InsnRemover.removeSsaVar(InsnRemover.java:151)
|
|
at jadx.core.utils.InsnRemover.unbindResult(InsnRemover.java:116)
|
|
at jadx.core.dex.visitors.regions.TernaryMod.makeTernaryInsn(TernaryMod.java:114)
|
|
at jadx.core.dex.visitors.regions.TernaryMod.processRegion(TernaryMod.java:62)
|
|
at jadx.core.dex.visitors.regions.TernaryMod.enterRegion(TernaryMod.java:45)
|
|
at jadx.core.dex.visitors.regions.DepthRegionTraversal.traverseInternal(DepthRegionTraversal.java:67)
|
|
at jadx.core.dex.visitors.regions.DepthRegionTraversal.lambda$traverseInternal$0(DepthRegionTraversal.java:68)
|
|
at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
|
|
at jadx.core.dex.visitors.regions.DepthRegionTraversal.traverseInternal(DepthRegionTraversal.java:68)
|
|
at jadx.core.dex.visitors.regions.DepthRegionTraversal.traverse(DepthRegionTraversal.java:19)
|
|
at jadx.core.dex.visitors.regions.TernaryMod.process(TernaryMod.java:35)
|
|
at jadx.core.dex.visitors.regions.IfRegionVisitor.process(IfRegionVisitor.java:34)
|
|
at jadx.core.dex.visitors.regions.IfRegionVisitor.visit(IfRegionVisitor.java:30)
|
|
*/
|
|
private net.sf.scuba.data.Gender readGender(java.io.DataInputStream r5) throws java.io.IOException {
|
|
/*
|
|
r4 = this;
|
|
r0 = 2
|
|
int r1 = r0 % r0
|
|
int r1 = org.jmrtd.lds.icao.MRZInfo.j
|
|
int r1 = r1 + 95
|
|
int r2 = r1 % 128
|
|
org.jmrtd.lds.icao.MRZInfo.i = r2
|
|
int r1 = r1 % r0
|
|
java.lang.String r2 = "M"
|
|
r3 = 0
|
|
if (r1 != 0) goto L1c
|
|
java.lang.String r5 = r4.readString(r5, r3)
|
|
boolean r1 = r5.equalsIgnoreCase(r2)
|
|
if (r1 == 0) goto L3a
|
|
goto L27
|
|
L1c:
|
|
r1 = 1
|
|
java.lang.String r5 = r4.readString(r5, r1)
|
|
boolean r1 = r5.equalsIgnoreCase(r2)
|
|
if (r1 == 0) goto L3a
|
|
L27:
|
|
int r5 = org.jmrtd.lds.icao.MRZInfo.i
|
|
int r5 = r5 + 21
|
|
int r1 = r5 % 128
|
|
org.jmrtd.lds.icao.MRZInfo.j = r1
|
|
int r5 = r5 % r0
|
|
if (r5 == 0) goto L37
|
|
net.sf.scuba.data.Gender r5 = net.sf.scuba.data.Gender.MALE
|
|
r0 = 6
|
|
int r0 = r0 / r3
|
|
return r5
|
|
L37:
|
|
net.sf.scuba.data.Gender r5 = net.sf.scuba.data.Gender.MALE
|
|
return r5
|
|
L3a:
|
|
java.lang.String r1 = "F"
|
|
boolean r5 = r5.equalsIgnoreCase(r1)
|
|
r1 = 0
|
|
if (r5 == 0) goto L57
|
|
int r5 = org.jmrtd.lds.icao.MRZInfo.i
|
|
int r5 = r5 + 53
|
|
int r2 = r5 % 128
|
|
org.jmrtd.lds.icao.MRZInfo.j = r2
|
|
int r5 = r5 % r0
|
|
if (r5 != 0) goto L51
|
|
net.sf.scuba.data.Gender r5 = net.sf.scuba.data.Gender.FEMALE
|
|
return r5
|
|
L51:
|
|
net.sf.scuba.data.Gender r5 = net.sf.scuba.data.Gender.FEMALE
|
|
r1.hashCode()
|
|
throw r1
|
|
L57:
|
|
net.sf.scuba.data.Gender r5 = net.sf.scuba.data.Gender.UNKNOWN
|
|
int r2 = org.jmrtd.lds.icao.MRZInfo.i
|
|
int r2 = r2 + 83
|
|
int r3 = r2 % 128
|
|
org.jmrtd.lds.icao.MRZInfo.j = r3
|
|
int r2 = r2 % r0
|
|
if (r2 != 0) goto L65
|
|
return r5
|
|
L65:
|
|
throw r1
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: org.jmrtd.lds.icao.MRZInfo.readGender(java.io.DataInputStream):net.sf.scuba.data.Gender");
|
|
}
|
|
|
|
private String readDateOfBirth(DataInputStream dataInputStream) throws IOException, NumberFormatException {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 91;
|
|
j = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
String readString = readString(dataInputStream, 6);
|
|
int i5 = j + 119;
|
|
i = i5 % 128;
|
|
if (i5 % 2 != 0) {
|
|
return readString;
|
|
}
|
|
throw null;
|
|
}
|
|
|
|
private String readDateOfExpiry(DataInputStream dataInputStream) throws IOException, NumberFormatException {
|
|
int i2 = 2 % 2;
|
|
int i3 = j + 5;
|
|
i = i3 % 128;
|
|
String readString = readString(dataInputStream, i3 % 2 == 0 ? 112 : 6);
|
|
int i4 = j + 95;
|
|
i = i4 % 128;
|
|
if (i4 % 2 != 0) {
|
|
return readString;
|
|
}
|
|
throw null;
|
|
}
|
|
|
|
private static String mrzFormat(String str, int i2) {
|
|
int i3 = 2 % 2;
|
|
if (str == null) {
|
|
throw new IllegalArgumentException("Attempting to MRZ format null");
|
|
}
|
|
if (str.length() > i2) {
|
|
StringBuilder sb = new StringBuilder("Argument too wide (");
|
|
sb.append(str.length());
|
|
sb.append(" > ");
|
|
sb.append(i2);
|
|
sb.append(")");
|
|
throw new IllegalArgumentException(sb.toString());
|
|
}
|
|
String trim = str.toUpperCase().trim();
|
|
StringBuffer stringBuffer = new StringBuffer();
|
|
for (int i4 = 0; i4 < trim.length(); i4++) {
|
|
int i5 = i + 5;
|
|
j = i5 % 128;
|
|
int i6 = i5 % 2;
|
|
char charAt = trim.charAt(i4);
|
|
if (MRZ_CHARS.indexOf(charAt) == -1) {
|
|
stringBuffer.append(UrlTreeKt.configurablePathSegmentPrefixChar);
|
|
} else {
|
|
stringBuffer.append(charAt);
|
|
}
|
|
}
|
|
while (stringBuffer.length() < i2) {
|
|
int i7 = j + 73;
|
|
i = i7 % 128;
|
|
int i8 = i7 % 2;
|
|
stringBuffer.append(UrlTreeKt.configurablePathSegmentPrefix);
|
|
}
|
|
return stringBuffer.toString();
|
|
}
|
|
|
|
public static boolean equalsModuloFillerChars(String str, String str2) {
|
|
int i2 = 2 % 2;
|
|
int i3 = i;
|
|
int i4 = i3 + 21;
|
|
int i5 = i4 % 128;
|
|
j = i5;
|
|
int i6 = i4 % 2;
|
|
if (str == str2) {
|
|
int i7 = i5 + 55;
|
|
i = i7 % 128;
|
|
return i7 % 2 != 0;
|
|
}
|
|
if (str == null) {
|
|
int i8 = i3 + 51;
|
|
j = i8 % 128;
|
|
if (i8 % 2 != 0) {
|
|
int i9 = 4 % 2;
|
|
}
|
|
str = "";
|
|
}
|
|
if (str2 == null) {
|
|
str2 = "";
|
|
}
|
|
int max = Math.max(str.length(), str2.length());
|
|
return mrzFormat(str, max).equals(mrzFormat(str2, max));
|
|
}
|
|
|
|
/* JADX WARN: Code restructure failed: missing block: B:16:0x004b, code lost:
|
|
|
|
if (r5.startsWith("I") == false) goto L21;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:18:0x005a, code lost:
|
|
|
|
if (r5.startsWith("V") == false) goto L25;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:19:0x005c, code lost:
|
|
|
|
r5 = org.jmrtd.lds.icao.MRZInfo.i + 19;
|
|
org.jmrtd.lds.icao.MRZInfo.j = r5 % 128;
|
|
r5 = r5 % 2;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:20:0x0065, code lost:
|
|
|
|
return 1;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:23:0x006d, code lost:
|
|
|
|
if ((!r5.startsWith("P")) == false) goto L28;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:24:0x006f, code lost:
|
|
|
|
return 0;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:25:0x0070, code lost:
|
|
|
|
return 3;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:27:0x0052, code lost:
|
|
|
|
if (r5.startsWith("I") != true) goto L21;
|
|
*/
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
private static int getDocumentTypeFromDocumentCode(java.lang.String r5) {
|
|
/*
|
|
r0 = 2
|
|
int r1 = r0 % r0
|
|
if (r5 == 0) goto L7b
|
|
int r1 = r5.length()
|
|
if (r1 <= 0) goto L7b
|
|
int r1 = org.jmrtd.lds.icao.MRZInfo.j
|
|
int r1 = r1 + 23
|
|
int r2 = r1 % 128
|
|
org.jmrtd.lds.icao.MRZInfo.i = r2
|
|
int r1 = r1 % r0
|
|
int r1 = r5.length()
|
|
if (r1 > r0) goto L7b
|
|
int r1 = org.jmrtd.lds.icao.MRZInfo.i
|
|
int r1 = r1 + 113
|
|
int r2 = r1 % 128
|
|
org.jmrtd.lds.icao.MRZInfo.j = r2
|
|
int r1 = r1 % r0
|
|
java.lang.String r2 = "A"
|
|
if (r1 != 0) goto L73
|
|
boolean r1 = r5.startsWith(r2)
|
|
r2 = 1
|
|
if (r1 != 0) goto L72
|
|
java.lang.String r1 = "C"
|
|
boolean r1 = r5.startsWith(r1)
|
|
if (r1 != 0) goto L72
|
|
int r1 = org.jmrtd.lds.icao.MRZInfo.j
|
|
int r1 = r1 + 119
|
|
int r3 = r1 % 128
|
|
org.jmrtd.lds.icao.MRZInfo.i = r3
|
|
int r1 = r1 % r0
|
|
r3 = 0
|
|
java.lang.String r4 = "I"
|
|
if (r1 != 0) goto L4e
|
|
boolean r1 = r5.startsWith(r4)
|
|
r4 = 19
|
|
int r4 = r4 / r3
|
|
if (r1 != 0) goto L72
|
|
goto L54
|
|
L4e:
|
|
boolean r1 = r5.startsWith(r4)
|
|
if (r1 == r2) goto L72
|
|
L54:
|
|
java.lang.String r1 = "V"
|
|
boolean r1 = r5.startsWith(r1)
|
|
if (r1 == 0) goto L66
|
|
int r5 = org.jmrtd.lds.icao.MRZInfo.i
|
|
int r5 = r5 + 19
|
|
int r1 = r5 % 128
|
|
org.jmrtd.lds.icao.MRZInfo.j = r1
|
|
int r5 = r5 % r0
|
|
return r2
|
|
L66:
|
|
java.lang.String r0 = "P"
|
|
boolean r5 = r5.startsWith(r0)
|
|
r5 = r5 ^ r2
|
|
if (r5 == 0) goto L70
|
|
return r3
|
|
L70:
|
|
r5 = 3
|
|
return r5
|
|
L72:
|
|
return r2
|
|
L73:
|
|
r5.startsWith(r2)
|
|
r5 = 0
|
|
r5.hashCode()
|
|
throw r5
|
|
L7b:
|
|
java.lang.IllegalArgumentException r0 = new java.lang.IllegalArgumentException
|
|
java.lang.String r1 = "Was expecting 1 or 2 digit document code, got "
|
|
java.lang.String r5 = java.lang.String.valueOf(r5)
|
|
java.lang.String r5 = r1.concat(r5)
|
|
r0.<init>(r5)
|
|
throw r0
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: org.jmrtd.lds.icao.MRZInfo.getDocumentTypeFromDocumentCode(java.lang.String):int");
|
|
}
|
|
|
|
private static String trimFillerChars(String str) {
|
|
byte[] bytes;
|
|
int i2;
|
|
int i3 = 2 % 2;
|
|
int i4 = j + 119;
|
|
i = i4 % 128;
|
|
if (i4 % 2 == 0) {
|
|
bytes = str.trim().getBytes();
|
|
i2 = 1;
|
|
} else {
|
|
bytes = str.trim().getBytes();
|
|
i2 = 0;
|
|
}
|
|
int i5 = i + 7;
|
|
j = i5 % 128;
|
|
int i6 = i5 % 2;
|
|
while (i2 < bytes.length) {
|
|
if (bytes[i2] == 60) {
|
|
int i7 = i + 125;
|
|
j = i7 % 128;
|
|
int i8 = i7 % 2;
|
|
bytes[i2] = 32;
|
|
}
|
|
i2++;
|
|
}
|
|
return new String(bytes).trim();
|
|
}
|
|
|
|
private void checkDigit() {
|
|
int i2 = 2 % 2;
|
|
int i3 = j + 71;
|
|
i = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
this.documentNumberCheckDigit = checkDigit(this.documentNumber);
|
|
this.dateOfBirthCheckDigit = checkDigit(this.dateOfBirth);
|
|
this.dateOfExpiryCheckDigit = checkDigit(this.dateOfExpiry);
|
|
if (this.optionalData1.length() < 15) {
|
|
String mrzFormat = mrzFormat(this.optionalData1, 14);
|
|
char checkDigit = checkDigit(mrzFormat(this.optionalData1, 14), true);
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append(mrzFormat);
|
|
sb.append(checkDigit);
|
|
this.optionalData1 = sb.toString();
|
|
}
|
|
StringBuffer stringBuffer = new StringBuffer();
|
|
if (this.documentType == 1) {
|
|
stringBuffer.append(this.documentNumber);
|
|
stringBuffer.append(this.documentNumberCheckDigit);
|
|
stringBuffer.append(mrzFormat(this.optionalData1, 15));
|
|
stringBuffer.append(this.dateOfBirth);
|
|
stringBuffer.append(this.dateOfBirthCheckDigit);
|
|
stringBuffer.append(this.dateOfExpiry);
|
|
stringBuffer.append(this.dateOfExpiryCheckDigit);
|
|
stringBuffer.append(mrzFormat(this.optionalData2, 11));
|
|
int i5 = j + 23;
|
|
i = i5 % 128;
|
|
if (i5 % 2 == 0) {
|
|
int i6 = 5 / 3;
|
|
}
|
|
} else {
|
|
stringBuffer.append(this.documentNumber);
|
|
stringBuffer.append(this.documentNumberCheckDigit);
|
|
stringBuffer.append(this.dateOfBirth);
|
|
stringBuffer.append(this.dateOfBirthCheckDigit);
|
|
stringBuffer.append(this.dateOfExpiry);
|
|
stringBuffer.append(this.dateOfExpiryCheckDigit);
|
|
stringBuffer.append(mrzFormat(this.optionalData1, 15));
|
|
}
|
|
this.compositeCheckDigit = checkDigit(stringBuffer.toString());
|
|
}
|
|
|
|
private static char checkDigit(String str, boolean z) {
|
|
byte[] bytes;
|
|
int i2 = 2 % 2;
|
|
try {
|
|
if (str == null) {
|
|
bytes = new byte[0];
|
|
int i3 = i + 23;
|
|
j = i3 % 128;
|
|
int i4 = i3 % 2;
|
|
} else {
|
|
bytes = str.getBytes("UTF-8");
|
|
}
|
|
int[] iArr = {7, 3, 1};
|
|
int i5 = 0;
|
|
int i6 = 0;
|
|
while (i5 < bytes.length) {
|
|
int i7 = i + 121;
|
|
j = i7 % 128;
|
|
if (i7 % 2 != 0) {
|
|
i6 = (i6 >> (iArr[i5 * 4] * decodeMRZDigit(bytes[i5]))) >>> 71;
|
|
i5 += 29;
|
|
} else {
|
|
i6 = (i6 + (iArr[i5 % 3] * decodeMRZDigit(bytes[i5]))) % 10;
|
|
i5++;
|
|
}
|
|
}
|
|
String num = Integer.toString(i6);
|
|
if (num.length() != 1) {
|
|
throw new IllegalStateException("Error in computing check digit.");
|
|
}
|
|
char c2 = (char) num.getBytes("UTF-8")[0];
|
|
return (z && c2 == '0') ? UrlTreeKt.configurablePathSegmentPrefixChar : c2;
|
|
} catch (UnsupportedEncodingException e2) {
|
|
Logger logger = LOGGER;
|
|
StringBuilder sb = new StringBuilder("Exception: ");
|
|
sb.append(e2.getMessage());
|
|
logger.severe(sb.toString());
|
|
throw new IllegalStateException("Error in computing check digit.");
|
|
} catch (NumberFormatException e3) {
|
|
Logger logger2 = LOGGER;
|
|
StringBuilder sb2 = new StringBuilder("Exception: ");
|
|
sb2.append(e3.getMessage());
|
|
logger2.severe(sb2.toString());
|
|
throw new IllegalStateException("Error in computing check digit.");
|
|
} catch (Exception e4) {
|
|
Logger logger3 = LOGGER;
|
|
StringBuilder sb3 = new StringBuilder("Exception: ");
|
|
sb3.append(e4.getMessage());
|
|
logger3.severe(sb3.toString());
|
|
throw new IllegalArgumentException(e4.toString());
|
|
}
|
|
}
|
|
|
|
private static int decodeMRZDigit(byte b2) throws NumberFormatException {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 59;
|
|
int i4 = i3 % 128;
|
|
j = i4;
|
|
if (i3 % 2 != 0) {
|
|
if (b2 == 68) {
|
|
return 0;
|
|
}
|
|
} else if (b2 == 60) {
|
|
return 0;
|
|
}
|
|
int i5 = i4 + 37;
|
|
int i6 = i5 % 128;
|
|
i = i6;
|
|
int i7 = i5 % 2;
|
|
switch (b2) {
|
|
case 48:
|
|
return 0;
|
|
case 49:
|
|
return 1;
|
|
case 50:
|
|
return 2;
|
|
case 51:
|
|
return 3;
|
|
case 52:
|
|
return 4;
|
|
case 53:
|
|
return 5;
|
|
case 54:
|
|
return 6;
|
|
case 55:
|
|
return 7;
|
|
case 56:
|
|
return 8;
|
|
case 57:
|
|
return 9;
|
|
default:
|
|
switch (b2) {
|
|
case 65:
|
|
return 10;
|
|
case 66:
|
|
return 11;
|
|
case 67:
|
|
return 12;
|
|
case 68:
|
|
return 13;
|
|
case 69:
|
|
return 14;
|
|
case 70:
|
|
break;
|
|
case 71:
|
|
return 16;
|
|
case 72:
|
|
return 17;
|
|
case 73:
|
|
return 18;
|
|
case 74:
|
|
return 19;
|
|
case 75:
|
|
return 20;
|
|
case 76:
|
|
return 21;
|
|
case 77:
|
|
return 22;
|
|
case 78:
|
|
return 23;
|
|
case 79:
|
|
return 24;
|
|
case 80:
|
|
return 25;
|
|
case 81:
|
|
return 26;
|
|
case 82:
|
|
return 27;
|
|
case 83:
|
|
return 28;
|
|
case 84:
|
|
return 29;
|
|
case 85:
|
|
return 30;
|
|
case 86:
|
|
return 31;
|
|
case 87:
|
|
return 32;
|
|
case 88:
|
|
return 33;
|
|
case 89:
|
|
return 34;
|
|
case 90:
|
|
return 35;
|
|
default:
|
|
switch (b2) {
|
|
case 97:
|
|
return 10;
|
|
case 98:
|
|
return 11;
|
|
case 99:
|
|
return 12;
|
|
case 100:
|
|
return 13;
|
|
case 101:
|
|
return 14;
|
|
case 102:
|
|
break;
|
|
case 103:
|
|
return 16;
|
|
case 104:
|
|
return 17;
|
|
case 105:
|
|
return 18;
|
|
case 106:
|
|
return 19;
|
|
case 107:
|
|
return 20;
|
|
case 108:
|
|
return 21;
|
|
case 109:
|
|
return 22;
|
|
case 110:
|
|
return 23;
|
|
case 111:
|
|
return 24;
|
|
case 112:
|
|
return 25;
|
|
case 113:
|
|
return 26;
|
|
case 114:
|
|
return 27;
|
|
case 115:
|
|
return 28;
|
|
case 116:
|
|
return 29;
|
|
case 117:
|
|
return 30;
|
|
case 118:
|
|
return 31;
|
|
case 119:
|
|
return 32;
|
|
case 120:
|
|
return 33;
|
|
case 121:
|
|
return 34;
|
|
case 122:
|
|
return 35;
|
|
default:
|
|
StringBuilder sb = new StringBuilder("Could not decode MRZ character ");
|
|
sb.append((int) b2);
|
|
sb.append(" ('");
|
|
sb.append(Character.toString((char) b2));
|
|
sb.append("')");
|
|
throw new NumberFormatException(sb.toString());
|
|
}
|
|
}
|
|
int i8 = i6 + 47;
|
|
j = i8 % 128;
|
|
if (i8 % 2 == 0) {
|
|
return 15;
|
|
}
|
|
Object obj = null;
|
|
obj.hashCode();
|
|
throw null;
|
|
}
|
|
}
|
|
|
|
static void a() {
|
|
a = 1632603122;
|
|
d = 1406017149;
|
|
e = 384434584;
|
|
c = new byte[]{-119, Ascii.SUB, -19, 29};
|
|
}
|
|
|
|
public String getSecondaryIdentifier() {
|
|
int i2 = 2 % 2;
|
|
int i3 = i;
|
|
int i4 = i3 + 25;
|
|
j = i4 % 128;
|
|
if (i4 % 2 != 0) {
|
|
throw null;
|
|
}
|
|
String str = this.secondaryIdentifier;
|
|
int i5 = i3 + 3;
|
|
j = i5 % 128;
|
|
int i6 = i5 % 2;
|
|
return str;
|
|
}
|
|
|
|
public String getPrimaryIdentifier() {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 113;
|
|
j = i3 % 128;
|
|
if (i3 % 2 == 0) {
|
|
return this.primaryIdentifier;
|
|
}
|
|
Object obj = null;
|
|
obj.hashCode();
|
|
throw null;
|
|
}
|
|
|
|
public String getOptionalData2() {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 69;
|
|
int i4 = i3 % 128;
|
|
j = i4;
|
|
int i5 = i3 % 2;
|
|
String str = this.optionalData2;
|
|
int i6 = i4 + 65;
|
|
i = i6 % 128;
|
|
if (i6 % 2 == 0) {
|
|
int i7 = 44 / 0;
|
|
}
|
|
return str;
|
|
}
|
|
|
|
public String getOptionalData1() {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 91;
|
|
int i4 = i3 % 128;
|
|
j = i4;
|
|
Object obj = null;
|
|
if (i3 % 2 != 0) {
|
|
obj.hashCode();
|
|
throw null;
|
|
}
|
|
String str = this.optionalData1;
|
|
int i5 = i4 + 103;
|
|
i = i5 % 128;
|
|
if (i5 % 2 != 0) {
|
|
return str;
|
|
}
|
|
obj.hashCode();
|
|
throw null;
|
|
}
|
|
|
|
public String getNationality() {
|
|
int i2 = 2 % 2;
|
|
int i3 = i;
|
|
int i4 = i3 + 39;
|
|
j = i4 % 128;
|
|
int i5 = i4 % 2;
|
|
String str = this.nationality;
|
|
int i6 = i3 + 75;
|
|
j = i6 % 128;
|
|
if (i6 % 2 == 0) {
|
|
return str;
|
|
}
|
|
throw null;
|
|
}
|
|
|
|
public String getIssuingState() {
|
|
int i2 = 2 % 2;
|
|
int i3 = j + 83;
|
|
int i4 = i3 % 128;
|
|
i = i4;
|
|
int i5 = i3 % 2;
|
|
String str = this.issuingState;
|
|
int i6 = i4 + 55;
|
|
j = i6 % 128;
|
|
int i7 = i6 % 2;
|
|
return str;
|
|
}
|
|
|
|
public Gender getGender() {
|
|
int i2 = 2 % 2;
|
|
int i3 = j + 61;
|
|
int i4 = i3 % 128;
|
|
i = i4;
|
|
if (i3 % 2 == 0) {
|
|
throw null;
|
|
}
|
|
Gender gender = this.gender;
|
|
int i5 = i4 + 89;
|
|
j = i5 % 128;
|
|
if (i5 % 2 != 0) {
|
|
int i6 = 27 / 0;
|
|
}
|
|
return gender;
|
|
}
|
|
|
|
public int getDocumentType() {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 53;
|
|
int i4 = i3 % 128;
|
|
j = i4;
|
|
Object obj = null;
|
|
if (i3 % 2 != 0) {
|
|
throw null;
|
|
}
|
|
int i5 = this.documentType;
|
|
int i6 = i4 + 95;
|
|
i = i6 % 128;
|
|
if (i6 % 2 != 0) {
|
|
return i5;
|
|
}
|
|
obj.hashCode();
|
|
throw null;
|
|
}
|
|
|
|
public String getDocumentNumber() {
|
|
int i2 = 2 % 2;
|
|
int i3 = i + 107;
|
|
int i4 = i3 % 128;
|
|
j = i4;
|
|
if (i3 % 2 != 0) {
|
|
throw null;
|
|
}
|
|
String str = this.documentNumber;
|
|
int i5 = i4 + 105;
|
|
i = i5 % 128;
|
|
if (i5 % 2 == 0) {
|
|
int i6 = 40 / 0;
|
|
}
|
|
return str;
|
|
}
|
|
|
|
public String getDocumentCode() {
|
|
int i2 = 2 % 2;
|
|
int i3 = j + 93;
|
|
int i4 = i3 % 128;
|
|
i = i4;
|
|
if (i3 % 2 == 0) {
|
|
throw null;
|
|
}
|
|
String str = this.documentCode;
|
|
int i5 = i4 + 105;
|
|
j = i5 % 128;
|
|
int i6 = i5 % 2;
|
|
return str;
|
|
}
|
|
|
|
public String getDateOfExpiry() {
|
|
int i2 = 2 % 2;
|
|
int i3 = j;
|
|
int i4 = i3 + 1;
|
|
i = i4 % 128;
|
|
int i5 = i4 % 2;
|
|
String str = this.dateOfExpiry;
|
|
int i6 = i3 + 115;
|
|
i = i6 % 128;
|
|
int i7 = i6 % 2;
|
|
return str;
|
|
}
|
|
|
|
public String getDateOfBirth() {
|
|
int i2 = 2 % 2;
|
|
int i3 = i;
|
|
int i4 = i3 + 27;
|
|
j = i4 % 128;
|
|
int i5 = i4 % 2;
|
|
String str = this.dateOfBirth;
|
|
int i6 = i3 + 101;
|
|
j = i6 % 128;
|
|
int i7 = i6 % 2;
|
|
return str;
|
|
}
|
|
|
|
private void readSecondaryIdentifiers(String str) {
|
|
int i2 = 2 % 2;
|
|
int i3 = i;
|
|
int i4 = i3 + 85;
|
|
j = i4 % 128;
|
|
int i5 = i4 % 2;
|
|
this.secondaryIdentifier = str;
|
|
if (i5 != 0) {
|
|
Object obj = null;
|
|
obj.hashCode();
|
|
throw null;
|
|
}
|
|
int i6 = i3 + 17;
|
|
j = i6 % 128;
|
|
int i7 = i6 % 2;
|
|
}
|
|
}
|