References
This page contains references for several Ozone classes. Most of this can be obtained from the javadoc/clicking into code via Android Studio, but it is also provided here as a reference.
SmartCapture Ozone Result Data
Section titled “SmartCapture Ozone Result Data”class OzoneResultData { enum class OzoneResultStatus { SUCCESS, FAILED, UNKNOWN, NOT_PERFORMED }
enum class ByteGroup { DG1, DG2, DG3, DG4, DG5, DG6, DG7, DG8, DG9, DG10, DG11, DG12, DG13, DG14, DG15, SOD, COM }
enum class AuthStatus { Success, Failure, Skipped }
enum class TranslatedDocumentType(private var displayName: String) { Default("Default"), NationalPassport("National Passport"), EmergencyPassport("Emergency Passport"), DiplomaticPassport("Diplomatic Passport"), OfficialOrServicePassport("Official/Service Passport"), RefugeePassport("Refugee Passport"), AlienPassport("Alien Passport"), StatelessPassport("Stateless Passport"), TravelDocument("Travel Document"), MilitaryPassport("Military Passport"); }
/** * Place of birth as parsed from DG11. * * Note: DG11 is optional and the data in it is also not guaranteed to be filled out. If DG11 is * not present or if this data is not present in DG11, this field will be null. */ var placeOfBirth: String?
/** * Date of birth as parsed from the MRZ info in DG1. */ var dateOfBirthMrz: String
/** * Date of birth formatted to dd.MM.yyyy. * * Note: This is the best possible approximation of the date of birth as could be parsed from a * combination of DG11 and DG1. Depending on the data present on the chip, there may have been * an inference made due to incomplete data (if DG11 is not present or lacks date of birth data * then we only have access to the last two digits of the year. If that is the case, the first * 2 digits of the year are inferred based on the current date). Use crosschecks for increased * certainty. */ var dateOfBirth: String
/** * Document expiration date as parsed from the MRZ info in DG1. */ var documentExpiryDateMrz: String
/** * Document expiration date formatted to dd.MM.yyyy. * * Note: This is the best possible approximation of the expiration date as could be parsed from * DG1. DG1 only has the last two digits of the expiration year. The first 2 digits of the year * are inferred based on the current date. Use crosschecks for increased certainty. */ var documentExpiryDate: String
/** * Document Code as parsed from the MRZ info in DG1 with any '<' chars trimmed off. */ var documentCode: String
/** * Issuing Authority as parsed from the MRZ info in DG1 with any '<' chars trimmed off. */ var issuingAuthority: String
/** * Document Number as parsed from the MRZ info in DG1 with any '<' chars trimmed off. */ var documentNumber: String
/** * Nationality as parsed from the MRZ info in DG1 with any '<' chars trimmed off. */ var nationality: String
/** * Personal Number as parsed from the MRZ info in DG1 with any '<' chars trimmed off. */ var personalNumber: String
/** * First Name as parsed from the MRZ info in DG1 with any '<' chars trimmed off. */ var firstName: String
/** * Last Name as parsed from the MRZ info in DG1 with any '<' chars trimmed off. */ var lastName: String
/** * Document Type as parsed from the MRZ info in DG1. If document code was missing in the MRZ * info (not expected to ever happen), the value of this field will instead be '?'. */ var documentType: String
/** * Document Subtype as parsed from the MRZ info in DG1. The value of this field will be '<' for * standard passports or if no subtype data is present. */ var documentSubType: String
/** * This is a parsed enum representation of the data present in [documentType] and * [documentSubType]. */ var translatedDocumentType: TranslatedDocumentType
/** * Gender as as parsed from the gender code in the MRZ info in DG1. Currently returned values * are "M", "F", or "?" which currently covers all other values. If more gender values get * defined in the standards they will be added to the possible values. */ var gender: String
/** * This is a parsed integer approximation of the age. This has the same constraints as * [dateOfBirth]. Use crosschecks for increased certainty. */ val age : Int?
/** * This is a parsed approximation of if the document is expired. This has the same constraints * as [documentExpiryDate]. Use crosschecks for increased certainty. */ val isExpired : Boolean?
/** * Represents the first face image present in the DG2 block as a [Bitmap]. For a list of all the * successfully read face images, use [faceImages]. Will be null if no images were successfully * extracted. */ val faceImage: Bitmap?
/** * Contains all the successfully face images successfully parsed from DG2 as [Bitmap]s. Will be * an empty list if no images were successfully extracted. */ var faceImages: List<Bitmap>
/** * Contains the signature image extracted from DG7 as a [Bitmap]. Will be null if DG7 was not * present or if the signature image could not be extracted. */ var signatureImage: Bitmap?
/** * Represents whether BAC was performed as part of the read, and if so whether it succeeded or * failed. */ var BACStatus: AuthStatus
/** * Represents whether PACE was performed as part of the read, and if so whether it succeeded or * failed. */ var PACEStatus: AuthStatus
/** * Represents whether Active Authentication was performed as part of the read, and if so * whether it succeeded or failed. */ var activeAuthenticationStatus: AuthStatus
/** * Represents whether Chip Authentication was performed as part of the read, and if so * whether it succeeded or failed. */ var chipAuthenticationStatus: AuthStatus
/** * Represents whether data group hashes matched expected hashes as a boolean. True indicates * all hashes passed. False indicates at least one hash failed. */ var passportDataValid: Boolean
/** * Used to obtain data about any read Data Group as a [ByteArray]. Will return null if that * data group was not read. */ fun getBytes(group: ByteGroup?): ByteArray?
/** * Returns a map of fields that can be easily parsed as strings with human readable * representations of the field name as a key. Intended use case is printing to a log or * presenting to a user as a summary. For other use cases use relevant variables directly. */ fun toMap(): Map<String, Any>}SmartCapture Ozone Input Data
Section titled “SmartCapture Ozone Input Data”/** * Input data for ozone to be able to unlock the NFC chip in a user's passport. * * @param documentNumber The document number as read from the MRZ * @param dateOfBirth The date of birth as read from the MRZ * @param dateOfExpiration The date of expiration as read from the MRZ * @param allowScreenshots (optional) Whether screenshots should be allowed while NFC capture is * happening. (Defaults to true) * @param countryCode (optional) The country code of the country that issued the document. * (Currently not used, but might be used in the future to provide better guidance to the user) */class OzoneInputData( documentNumber: String, dateOfBirth: String, dateOfExpiration: String, allowScreenshots: Boolean = true, countryCode: String? = null) : Parcelable