what-the-bank/sources/org/jmrtd/lds/icao/DG12File.java

518 lines
20 KiB
Java

package org.jmrtd.lds.icao;
import com.google.common.primitives.UnsignedBytes;
import java.io.ByteArrayInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Logger;
import net.sf.scuba.tlv.TLVInputStream;
import net.sf.scuba.tlv.TLVOutputStream;
import o.C15109ghW;
import o.ghS;
import org.jmrtd.lds.DataGroup;
/* loaded from: classes6.dex */
public class DG12File extends DataGroup {
public static final int CONTENT_SPECIFIC_CONSTRUCTED_TAG = 160;
public static final int COUNT_TAG = 2;
public static final int DATE_AND_TIME_OF_PERSONALIZATION = 24405;
public static final int DATE_OF_ISSUE_TAG = 24358;
public static final int ENDORSEMENTS_AND_OBSERVATIONS_TAG = 24347;
public static final int IMAGE_OF_FRONT_TAG = 24349;
public static final int IMAGE_OF_REAR_TAG = 24350;
public static final int ISSUING_AUTHORITY_TAG = 24345;
public static final int NAME_OF_OTHER_PERSON_TAG = 24346;
public static final int PERSONALIZATION_SYSTEM_SERIAL_NUMBER_TAG = 24406;
private static final int TAG_LIST_TAG = 92;
public static final int TAX_OR_EXIT_REQUIREMENTS_TAG = 24348;
private static final long serialVersionUID = -1979367459379125674L;
private Date dateAndTimeOfPersonalization;
private Date dateOfIssue;
private String endorsementsAndObservations;
private byte[] imageOfFront;
private byte[] imageOfRear;
private String issuingAuthority;
private List<String> namesOfOtherPersons;
private String personalizationSystemSerialNumber;
private List<Integer> tagPresenceList;
private String taxOrExitRequirements;
private static final SimpleDateFormat SDF = new SimpleDateFormat("yyyyMMdd");
private static final SimpleDateFormat SDTF = new SimpleDateFormat("yyyyMMddhhmmss");
private static final Logger LOGGER = Logger.getLogger("org.jmrtd");
@Override // org.jmrtd.lds.AbstractTaggedLDSFile
public int getTag() {
return 108;
}
public DG12File(String str, Date date, List<String> list, String str2, String str3, byte[] bArr, byte[] bArr2, Date date2, String str4) {
super(108);
this.issuingAuthority = str;
this.dateOfIssue = date;
this.namesOfOtherPersons = list == null ? new ArrayList() : new ArrayList(list);
this.endorsementsAndObservations = str2;
this.taxOrExitRequirements = str3;
this.imageOfFront = bArr;
this.imageOfRear = bArr2;
this.dateAndTimeOfPersonalization = date2;
this.personalizationSystemSerialNumber = str4;
}
public DG12File(InputStream inputStream) throws IOException {
super(108, inputStream);
}
@Override // org.jmrtd.lds.AbstractTaggedLDSFile
public void readContent(InputStream inputStream) throws IOException {
TLVInputStream tLVInputStream = inputStream instanceof TLVInputStream ? (TLVInputStream) inputStream : new TLVInputStream(inputStream);
if (tLVInputStream.b() != 92) {
throw new IllegalArgumentException("Expected tag list in DG12");
}
int c = tLVInputStream.c();
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(tLVInputStream.d());
ArrayList arrayList = new ArrayList((c / 2) + 1);
int i = 0;
while (i < c) {
int b = new TLVInputStream(byteArrayInputStream).b();
i += C15109ghW.b(b).length;
arrayList.add(Integer.valueOf(b));
}
Iterator it = arrayList.iterator();
while (it.hasNext()) {
readField(((Integer) it.next()).intValue(), tLVInputStream);
}
}
public List<Integer> getTagPresenceList() {
List<Integer> list = this.tagPresenceList;
if (list != null) {
return list;
}
ArrayList arrayList = new ArrayList(10);
this.tagPresenceList = arrayList;
if (this.issuingAuthority != null) {
arrayList.add(Integer.valueOf(ISSUING_AUTHORITY_TAG));
}
if (this.dateOfIssue != null) {
this.tagPresenceList.add(24358);
}
List<String> list2 = this.namesOfOtherPersons;
if (list2 != null && list2.size() > 0) {
this.tagPresenceList.add(Integer.valueOf(NAME_OF_OTHER_PERSON_TAG));
}
if (this.endorsementsAndObservations != null) {
this.tagPresenceList.add(Integer.valueOf(ENDORSEMENTS_AND_OBSERVATIONS_TAG));
}
if (this.taxOrExitRequirements != null) {
this.tagPresenceList.add(Integer.valueOf(TAX_OR_EXIT_REQUIREMENTS_TAG));
}
if (this.imageOfFront != null) {
this.tagPresenceList.add(Integer.valueOf(IMAGE_OF_FRONT_TAG));
}
if (this.imageOfRear != null) {
this.tagPresenceList.add(Integer.valueOf(IMAGE_OF_REAR_TAG));
}
if (this.dateAndTimeOfPersonalization != null) {
this.tagPresenceList.add(Integer.valueOf(DATE_AND_TIME_OF_PERSONALIZATION));
}
if (this.personalizationSystemSerialNumber != null) {
this.tagPresenceList.add(Integer.valueOf(PERSONALIZATION_SYSTEM_SERIAL_NUMBER_TAG));
}
return this.tagPresenceList;
}
private void readField(int i, TLVInputStream tLVInputStream) throws IOException {
int b = tLVInputStream.b();
if (b == 160) {
tLVInputStream.c();
int b2 = tLVInputStream.b();
if (b2 != 2) {
StringBuilder sb = new StringBuilder("Expected ");
sb.append(Integer.toHexString(2));
sb.append(", found ");
sb.append(Integer.toHexString(b2));
throw new IllegalArgumentException(sb.toString());
}
int c = tLVInputStream.c();
if (c != 1) {
throw new IllegalArgumentException("Expected length 1 count length, found ".concat(String.valueOf(c)));
}
byte[] d = tLVInputStream.d();
if (d.length != 1) {
StringBuilder sb2 = new StringBuilder("Number of content specific fields should be encoded in single byte, found ");
sb2.append(Arrays.toString(d));
throw new IllegalArgumentException(sb2.toString());
}
byte b3 = d[0];
for (int i2 = 0; i2 < (b3 & UnsignedBytes.MAX_VALUE); i2++) {
int b4 = tLVInputStream.b();
if (b4 != 24346) {
StringBuilder sb3 = new StringBuilder("Expected ");
sb3.append(Integer.toHexString(NAME_OF_OTHER_PERSON_TAG));
sb3.append(", found ");
sb3.append(Integer.toHexString(b4));
throw new IllegalArgumentException(sb3.toString());
}
tLVInputStream.c();
parseNameOfOtherPerson(tLVInputStream.d());
}
return;
}
if (b != i) {
StringBuilder sb4 = new StringBuilder("Expected ");
sb4.append(Integer.toHexString(i));
sb4.append(", but found ");
sb4.append(Integer.toHexString(b));
throw new IllegalArgumentException(sb4.toString());
}
tLVInputStream.c();
byte[] d2 = tLVInputStream.d();
if (b == 24358) {
parseDateOfIssue(d2);
return;
}
if (b == 24405) {
parseDateAndTimeOfPersonalization(d2);
return;
}
if (b != 24406) {
switch (b) {
case ISSUING_AUTHORITY_TAG /* 24345 */:
parseIssuingAuthority(d2);
return;
case NAME_OF_OTHER_PERSON_TAG /* 24346 */:
parseNameOfOtherPerson(d2);
return;
case ENDORSEMENTS_AND_OBSERVATIONS_TAG /* 24347 */:
parseEndorsementsAndObservations(d2);
return;
case TAX_OR_EXIT_REQUIREMENTS_TAG /* 24348 */:
parseTaxOrExitRequirements(d2);
return;
case IMAGE_OF_FRONT_TAG /* 24349 */:
parseImageOfFront(d2);
return;
case IMAGE_OF_REAR_TAG /* 24350 */:
parseImageOfRear(d2);
return;
default:
StringBuilder sb5 = new StringBuilder("Unknown field tag in DG12: ");
sb5.append(Integer.toHexString(b));
throw new IllegalArgumentException(sb5.toString());
}
}
parsePersonalizationSystemSerialNumber(d2);
}
private void parsePersonalizationSystemSerialNumber(byte[] bArr) {
try {
this.personalizationSystemSerialNumber = new String(bArr, "UTF-8").trim();
} catch (UnsupportedEncodingException e) {
Logger logger = LOGGER;
StringBuilder sb = new StringBuilder("Exception: ");
sb.append(e.getMessage());
logger.severe(sb.toString());
this.personalizationSystemSerialNumber = new String(bArr).trim();
}
}
private void parseDateAndTimeOfPersonalization(byte[] bArr) {
try {
this.dateAndTimeOfPersonalization = SDTF.parse(new String(bArr, "UTF-8").trim());
} catch (UnsupportedEncodingException e) {
Logger logger = LOGGER;
StringBuilder sb = new StringBuilder("Exception: ");
sb.append(e.getMessage());
logger.severe(sb.toString());
} catch (ParseException e2) {
throw new IllegalArgumentException(e2.toString());
}
}
private void parseTaxOrExitRequirements(byte[] bArr) {
try {
this.taxOrExitRequirements = new String(bArr, "UTF-8").trim();
} catch (UnsupportedEncodingException e) {
Logger logger = LOGGER;
StringBuilder sb = new StringBuilder("Exception: ");
sb.append(e.getMessage());
logger.severe(sb.toString());
this.taxOrExitRequirements = new String(bArr).trim();
}
}
private void parseEndorsementsAndObservations(byte[] bArr) {
try {
this.endorsementsAndObservations = new String(bArr, "UTF-8").trim();
} catch (UnsupportedEncodingException e) {
Logger logger = LOGGER;
StringBuilder sb = new StringBuilder("Exception: ");
sb.append(e.getMessage());
logger.severe(sb.toString());
this.endorsementsAndObservations = new String(bArr).trim();
}
}
private void parseNameOfOtherPerson(byte[] bArr) {
synchronized (this) {
if (this.namesOfOtherPersons == null) {
this.namesOfOtherPersons = new ArrayList();
}
try {
this.namesOfOtherPersons.add(new String(bArr, "UTF-8").trim());
} catch (UnsupportedEncodingException e) {
Logger logger = LOGGER;
StringBuilder sb = new StringBuilder("Exception: ");
sb.append(e.getMessage());
logger.severe(sb.toString());
this.namesOfOtherPersons.add(new String(bArr).trim());
}
}
}
private void parseDateOfIssue(byte[] bArr) {
if (bArr == null) {
throw new IllegalArgumentException("Wrong date format");
}
if (bArr.length == 8) {
try {
this.dateOfIssue = SDF.parse(new String(bArr, "UTF-8").trim());
return;
} catch (UnsupportedEncodingException e) {
Logger logger = LOGGER;
StringBuilder sb = new StringBuilder("Exception: ");
sb.append(e.getMessage());
logger.severe(sb.toString());
} catch (ParseException e2) {
Logger logger2 = LOGGER;
StringBuilder sb2 = new StringBuilder("Exception: ");
sb2.append(e2.getMessage());
logger2.severe(sb2.toString());
}
}
LOGGER.warning("DG12 date of issue is not in expected ccyymmdd ASCII format");
if (bArr.length == 4) {
try {
this.dateOfIssue = SDF.parse(ghS.c(bArr).trim());
return;
} catch (ParseException e3) {
Logger logger3 = LOGGER;
StringBuilder sb3 = new StringBuilder("Exception: ");
sb3.append(e3.getMessage());
logger3.severe(sb3.toString());
}
}
throw new IllegalArgumentException("Wrong date format");
}
private void parseIssuingAuthority(byte[] bArr) {
try {
this.issuingAuthority = new String(bArr, "UTF-8").trim();
} catch (UnsupportedEncodingException e) {
Logger logger = LOGGER;
StringBuilder sb = new StringBuilder("Exception: ");
sb.append(e.getMessage());
logger.severe(sb.toString());
this.issuingAuthority = new String(bArr).trim();
}
}
@Override // org.jmrtd.lds.DataGroup, org.jmrtd.lds.AbstractTaggedLDSFile
public String toString() {
String obj;
String obj2;
StringBuffer stringBuffer = new StringBuffer("DG12File [");
String str = this.issuingAuthority;
if (str == null) {
str = "";
}
stringBuffer.append(str);
stringBuffer.append(", ");
Date date = this.dateOfIssue;
stringBuffer.append(date == null ? "" : SDF.format(date));
stringBuffer.append(", ");
List<String> list = this.namesOfOtherPersons;
stringBuffer.append((list == null || list.size() == 0) ? "" : this.namesOfOtherPersons);
stringBuffer.append(", ");
String str2 = this.endorsementsAndObservations;
if (str2 == null) {
str2 = "";
}
stringBuffer.append(str2);
stringBuffer.append(", ");
String str3 = this.taxOrExitRequirements;
if (str3 == null) {
str3 = "";
}
stringBuffer.append(str3);
stringBuffer.append(", ");
if (this.imageOfFront == null) {
obj = "";
} else {
StringBuilder sb = new StringBuilder("image (");
sb.append(this.imageOfFront.length);
sb.append(")");
obj = sb.toString();
}
stringBuffer.append(obj);
stringBuffer.append(", ");
if (this.imageOfRear == null) {
obj2 = "";
} else {
StringBuilder sb2 = new StringBuilder("image (");
sb2.append(this.imageOfRear.length);
sb2.append(")");
obj2 = sb2.toString();
}
stringBuffer.append(obj2);
stringBuffer.append(", ");
Date date2 = this.dateAndTimeOfPersonalization;
stringBuffer.append(date2 == null ? "" : SDF.format(date2));
stringBuffer.append(", ");
String str4 = this.personalizationSystemSerialNumber;
stringBuffer.append(str4 != null ? str4 : "");
stringBuffer.append("]");
return stringBuffer.toString();
}
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (obj == this) {
return true;
}
if (obj.getClass().equals(getClass())) {
return toString().equals(((DG12File) obj).toString());
}
return false;
}
public int hashCode() {
return (toString().hashCode() * 13) + 112;
}
@Override // org.jmrtd.lds.AbstractTaggedLDSFile
public void writeContent(OutputStream outputStream) throws IOException {
TLVOutputStream tLVOutputStream = outputStream instanceof TLVOutputStream ? (TLVOutputStream) outputStream : new TLVOutputStream(outputStream);
tLVOutputStream.d(92);
List<Integer> tagPresenceList = getTagPresenceList();
DataOutputStream dataOutputStream = new DataOutputStream(tLVOutputStream);
Iterator<Integer> it = tagPresenceList.iterator();
while (it.hasNext()) {
dataOutputStream.writeShort(it.next().intValue());
}
dataOutputStream.flush();
tLVOutputStream.c();
Iterator<Integer> it2 = tagPresenceList.iterator();
while (it2.hasNext()) {
int intValue = it2.next().intValue();
if (intValue == 24358) {
tLVOutputStream.d(intValue);
tLVOutputStream.d(new String(SDF.format(this.dateOfIssue)).getBytes("UTF-8"));
} else if (intValue == 24405) {
tLVOutputStream.d(intValue);
tLVOutputStream.d(new String(SDTF.format(this.dateAndTimeOfPersonalization)).getBytes("UTF-8"));
} else if (intValue != 24406) {
switch (intValue) {
case ISSUING_AUTHORITY_TAG /* 24345 */:
tLVOutputStream.d(intValue);
tLVOutputStream.d(this.issuingAuthority.trim().getBytes("UTF-8"));
break;
case NAME_OF_OTHER_PERSON_TAG /* 24346 */:
if (this.namesOfOtherPersons == null) {
this.namesOfOtherPersons = new ArrayList();
}
tLVOutputStream.d(160);
tLVOutputStream.d(2);
tLVOutputStream.write(this.namesOfOtherPersons.size());
tLVOutputStream.c();
for (String str : this.namesOfOtherPersons) {
tLVOutputStream.d(NAME_OF_OTHER_PERSON_TAG);
tLVOutputStream.d(str.trim().getBytes("UTF-8"));
}
tLVOutputStream.c();
break;
case ENDORSEMENTS_AND_OBSERVATIONS_TAG /* 24347 */:
tLVOutputStream.d(intValue);
tLVOutputStream.d(this.endorsementsAndObservations.trim().getBytes("UTF-8"));
break;
case TAX_OR_EXIT_REQUIREMENTS_TAG /* 24348 */:
tLVOutputStream.d(intValue);
tLVOutputStream.d(this.taxOrExitRequirements.trim().getBytes("UTF-8"));
break;
case IMAGE_OF_FRONT_TAG /* 24349 */:
tLVOutputStream.d(intValue);
tLVOutputStream.d(this.imageOfFront);
break;
case IMAGE_OF_REAR_TAG /* 24350 */:
tLVOutputStream.d(intValue);
tLVOutputStream.d(this.imageOfRear);
break;
default:
StringBuilder sb = new StringBuilder("Unknown field tag in DG12: ");
sb.append(Integer.toHexString(intValue));
throw new IllegalArgumentException(sb.toString());
}
} else {
tLVOutputStream.d(intValue);
tLVOutputStream.d(this.personalizationSystemSerialNumber.trim().getBytes("UTF-8"));
}
}
}
public String getTaxOrExitRequirements() {
return this.taxOrExitRequirements;
}
public String getPersonalizationSystemSerialNumber() {
return this.personalizationSystemSerialNumber;
}
public List<String> getNamesOfOtherPersons() {
return this.namesOfOtherPersons;
}
public String getIssuingAuthority() {
return this.issuingAuthority;
}
public byte[] getImageOfRear() {
return this.imageOfRear;
}
public byte[] getImageOfFront() {
return this.imageOfFront;
}
public String getEndorsementsAndObservations() {
return this.endorsementsAndObservations;
}
public Date getDateOfIssue() {
return this.dateOfIssue;
}
public Date getDateAndTimeOfPersonalization() {
return this.dateAndTimeOfPersonalization;
}
private void parseImageOfRear(byte[] bArr) {
this.imageOfRear = bArr;
}
private void parseImageOfFront(byte[] bArr) {
this.imageOfFront = bArr;
}
}