package org.jmrtd.lds.iso19794; import io.flutter.embedding.android.KeyboardMap; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.jmrtd.lds.AbstractImageInfo; /* loaded from: classes6.dex */ public class FingerImageInfo extends AbstractImageInfo { private static final byte[] FORMAT_TYPE_VALUE = {0, 9}; public static final int IMPRESSION_TYPE_LATENT = 7; public static final int IMPRESSION_TYPE_LIVE_SCAN_CONTACTLESS = 9; public static final int IMPRESSION_TYPE_LIVE_SCAN_PLAIN = 0; public static final int IMPRESSION_TYPE_LIVE_SCAN_ROLLED = 1; public static final int IMPRESSION_TYPE_NON_LIVE_SCAN_PLAIN = 2; public static final int IMPRESSION_TYPE_NON_LIVE_SCAN_ROLLED = 3; public static final int IMPRESSION_TYPE_SWIPE = 8; public static final int POSITION_LEFT_FULL_PALM = 23; public static final int POSITION_LEFT_HYPOTHENAR = 36; public static final int POSITION_LEFT_INDEX_FINGER = 7; public static final int POSITION_LEFT_INTERDIGITAL = 34; public static final int POSITION_LEFT_LITTLE_FINGER = 10; public static final int POSITION_LEFT_LOWER_PALM = 27; public static final int POSITION_LEFT_MIDDLE_FINGER = 8; public static final int POSITION_LEFT_OTHER = 30; public static final int POSITION_LEFT_RING_FINGER = 9; public static final int POSITION_LEFT_THENAR = 35; public static final int POSITION_LEFT_THUMB = 6; public static final int POSITION_LEFT_UPPER_PALM = 28; public static final int POSITION_LEFT_WRITER_S_PALM = 24; public static final int POSITION_PLAIN_LEFT_FOUR_FINGERS = 14; public static final int POSITION_PLAIN_RIGHT_FOUR_FINGERS = 13; public static final int POSITION_PLAIN_THUMBS = 15; public static final int POSITION_RIGHT_FULL_PALM = 21; public static final int POSITION_RIGHT_HYPOTHENAR = 33; public static final int POSITION_RIGHT_INDEX_FINGER = 2; public static final int POSITION_RIGHT_INTERDIGITAL = 31; public static final int POSITION_RIGHT_LITTLE_FINGER = 5; public static final int POSITION_RIGHT_LOWER_PALM = 25; public static final int POSITION_RIGHT_MIDDLE_FINGER = 3; public static final int POSITION_RIGHT_OTHER = 29; public static final int POSITION_RIGHT_RING_FINGER = 4; public static final int POSITION_RIGHT_THENAR = 32; public static final int POSITION_RIGHT_THUMB = 1; public static final int POSITION_RIGHT_UPPER_PALM = 26; public static final int POSITION_RIGHT_WRITER_S_PALM = 22; public static final int POSITION_UNKNOWN_FINGER = 0; public static final int POSITION_UNKNOWN_PALM = 20; private static final long serialVersionUID = -6625447389275461027L; private int compressionAlgorithm; private int impressionType; private int position; private int quality; private long recordLength; private int viewCount; private int viewNumber; private static int toBiometricSubtype(int i) { switch (i) { case 1: return 5; case 2: return 9; case 3: return 13; case 4: return 17; case 5: return 21; case 6: return 6; case 7: return 10; case 8: return 14; case 9: return 18; case 10: return 22; case 11: case 12: case 16: case 17: case 18: case 19: case 20: case 22: default: return 0; case 13: return 1; case 14: return 2; case 15: return 4; case 21: return 1; case 23: case 24: return 2; case 25: case 26: return 1; case 27: case 28: return 2; case 29: return 1; case 30: return 2; case 31: case 32: case 33: return 1; case 34: case 35: case 36: return 2; } } public FingerImageInfo(int i, int i2, int i3, int i4, int i5, int i6, int i7, InputStream inputStream, int i8, int i9) throws IOException { super(2, i6, i7, inputStream, i8, FingerInfo.toMimeType(i9)); if (i4 < 0 || i4 > 100) { throw new IllegalArgumentException("Quality needs to be a number between 0 and 100"); } if (inputStream == null) { throw new IllegalArgumentException("Null image"); } this.position = i; this.viewCount = i2; this.viewNumber = i3; this.quality = i4; this.impressionType = i5; this.compressionAlgorithm = i9; this.recordLength = i8 + 14; } public FingerImageInfo(InputStream inputStream, int i) throws IOException { super(2, FingerInfo.toMimeType(i)); this.compressionAlgorithm = i; readObject(inputStream); } @Override // org.jmrtd.lds.AbstractImageInfo public void readObject(InputStream inputStream) throws IOException { DataInputStream dataInputStream = inputStream instanceof DataInputStream ? (DataInputStream) inputStream : new DataInputStream(inputStream); this.recordLength = dataInputStream.readInt() & KeyboardMap.kValueMask; this.position = dataInputStream.readUnsignedByte(); this.viewCount = dataInputStream.readUnsignedByte(); this.viewNumber = dataInputStream.readUnsignedByte(); this.quality = dataInputStream.readUnsignedByte(); this.impressionType = dataInputStream.readUnsignedByte(); setWidth(dataInputStream.readUnsignedShort()); setHeight(dataInputStream.readUnsignedShort()); dataInputStream.readUnsignedByte(); readImage(inputStream, this.recordLength - 14); } @Override // org.jmrtd.lds.AbstractImageInfo public void writeObject(OutputStream outputStream) throws IOException { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); writeImage(byteArrayOutputStream); byteArrayOutputStream.flush(); byte[] byteArray = byteArrayOutputStream.toByteArray(); byteArrayOutputStream.close(); long length = byteArray.length + 14; DataOutputStream dataOutputStream = outputStream instanceof DataOutputStream ? (DataOutputStream) outputStream : new DataOutputStream(outputStream); dataOutputStream.writeInt((int) length); dataOutputStream.writeByte(this.position); dataOutputStream.writeByte(this.viewCount); dataOutputStream.writeByte(this.viewNumber); dataOutputStream.writeByte(this.quality); dataOutputStream.writeByte(this.impressionType); dataOutputStream.writeShort(getWidth()); dataOutputStream.writeShort(getHeight()); dataOutputStream.writeByte(0); dataOutputStream.write(byteArray); dataOutputStream.flush(); } public int getBiometricSubtype() { return toBiometricSubtype(this.position); } @Override // org.jmrtd.lds.AbstractImageInfo public String toString() { StringBuffer stringBuffer = new StringBuffer("FingerImageInfo ["); StringBuilder sb = new StringBuilder("quality: "); sb.append(this.quality); sb.append(", "); stringBuffer.append(sb.toString()); StringBuilder sb2 = new StringBuilder("position: "); sb2.append(positionToString(this.position)); sb2.append(", "); stringBuffer.append(sb2.toString()); StringBuilder sb3 = new StringBuilder("impression type: "); sb3.append(impressionTypeToString(this.impressionType)); sb3.append(", "); stringBuffer.append(sb3.toString()); StringBuilder sb4 = new StringBuilder("horizontal line length: "); sb4.append(getWidth()); sb4.append(", "); stringBuffer.append(sb4.toString()); StringBuilder sb5 = new StringBuilder("vertical line length: "); sb5.append(getHeight()); sb5.append(", "); stringBuffer.append(sb5.toString()); stringBuffer.append("image: "); StringBuilder sb6 = new StringBuilder(); sb6.append(getWidth()); sb6.append(" x "); sb6.append(getHeight()); stringBuffer.append(sb6.toString()); StringBuilder sb7 = new StringBuilder(" \""); sb7.append(FingerInfo.toMimeType(this.compressionAlgorithm)); sb7.append("\""); stringBuffer.append(sb7.toString()); stringBuffer.append("]"); return stringBuffer.toString(); } public int getViewNumber() { return this.viewNumber; } public int getViewCount() { return this.viewCount; } @Override // org.jmrtd.lds.AbstractImageInfo, org.jmrtd.lds.ImageInfo public long getRecordLength() { return this.recordLength; } public int getQuality() { return this.quality; } public int getPosition() { return this.position; } public int getImpressionType() { return this.impressionType; } public byte[] getFormatType() { return FORMAT_TYPE_VALUE; } public int getCompressionAlgorithm() { return this.compressionAlgorithm; } private static String positionToString(int i) { switch (i) { case 0: return "Unknown finger"; case 1: return "Right thumb"; case 2: return "Right index finger"; case 3: return "Right middle finger"; case 4: return "Right ring finger"; case 5: return "Right little finger"; case 6: return "Left thumb"; case 7: return "Left index finger"; case 8: return "Left middle finger"; case 9: return "Left ring finger"; case 10: return "Left little finger"; case 11: case 12: case 16: case 17: case 18: case 19: default: return null; case 13: return "Right four fingers"; case 14: return "Left four fingers"; case 15: return "Plain thumbs"; case 20: return "Unknown palm"; case 21: return "Right full palm"; case 22: return "Right writer's palm"; case 23: return "Left full palm"; case 24: return "Left writer's palm"; case 25: return "Right lower palm"; case 26: return "Right upper palm"; case 27: return "Left lower palm"; case 28: return "Left upper palm"; case 29: return "Right other"; case 30: return "Left other"; case 31: return "Right interdigital"; case 32: return "Right thenar"; case 33: return "Right hypothenar"; case 34: return "Left interdigital"; case 35: return "Left thenar"; case 36: return "Left hypothenar"; } } private static String impressionTypeToString(int i) { if (i == 0) { return "Live scan plain"; } if (i == 1) { return "Live scan rolled"; } if (i == 2) { return "Non-live scan plain"; } if (i == 3) { return "Non-live scan rolled"; } if (i == 7) { return "Latent"; } if (i == 8) { return "Swipe"; } if (i != 9) { return null; } return "Live scan contactless"; } }