Get NFC Data Identity card

Hello, I have to create an app in Swift that it scan NFC Identity card. It extract data and convert it to human readable data. I do it with below code

import CoreNFC

class NFCIdentityCardReader: NSObject , NFCTagReaderSessionDelegate {
    func tagReaderSessionDidBecomeActive(_ session: NFCTagReaderSession) {
        print("\(session.description)")
    }
    
    func tagReaderSession(_ session: NFCTagReaderSession, didInvalidateWithError error: any Error) {
        print("NFC Error: \(error.localizedDescription)")
    }
    
    
    var session: NFCTagReaderSession?

    
    func beginScanning() {
        guard NFCTagReaderSession.readingAvailable else {
            print("NFC is not supported on this device")
            return
        }
        
        session = NFCTagReaderSession(pollingOption: .iso14443, delegate: self, queue: nil)
        session?.alertMessage = "Hold your NFC identity card near the device."
        session?.begin()
    }

    func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) {
        guard let tag = tags.first else {
            session.invalidate(errorMessage: "No tag detected")
            return
        }
        
        session.connect(to: tag) { (error) in
            if let error = error {
                session.invalidate(errorMessage: "Connection error: \(error.localizedDescription)")
                return
            }
            
            switch tag {
            case .miFare(let miFareTag):
                self.readMiFareTag(miFareTag, session: session)
            case .iso7816(let iso7816Tag):
                self.readISO7816Tag(iso7816Tag, session: session)
            case .iso15693, .feliCa:
                session.invalidate(errorMessage: "Unsupported tag type")
            @unknown default:
                session.invalidate(errorMessage: "Unknown tag type")
            }
        }
    }
    
    
    private func readMiFareTag(_ tag: NFCMiFareTag, session: NFCTagReaderSession) {
        // Read from MiFare card, assuming it's formatted as an identity card
        let command: [UInt8] = [0x30, 0x04] // Example: Read command for block 4
        let requestData = Data(command)
        
        tag.sendMiFareCommand(commandPacket: requestData) { (response, error) in
            if let error = error {
                session.invalidate(errorMessage: "Error reading MiFare: \(error.localizedDescription)")
                return
            }
            let readableData = String(data: response, encoding: .utf8) ?? response.map { String(format: "%02X", $0) }.joined()
            session.alertMessage = "ID Card Data: \(readableData)"
            session.invalidate()
        }
    }
    
    private func readISO7816Tag(_ tag: NFCISO7816Tag, session: NFCTagReaderSession) {
        let selectAppCommand = NFCISO7816APDU(instructionClass: 0x00, instructionCode: 0xA4, p1Parameter: 0x04, p2Parameter: 0x00, data: Data([0xA0, 0x00, 0x00, 0x02, 0x47, 0x10, 0x01]), expectedResponseLength: -1)
        
        tag.sendCommand(apdu: selectAppCommand) { (response, sw1, sw2, error) in
            if let error = error {
                session.invalidate(errorMessage: "Error reading ISO7816: \(error.localizedDescription)")
                return
            }
            let readableData = response.map { String(format: "%02X", $0) }.joined()
            session.alertMessage = "ID Card Data: \(readableData)"
            session.invalidate()
        }
    }

    
}

But I got null. I think that these data are encrypted. How can I convert them to readable data without MRZ, is it possible ? I need to get personal informations from Identity card via Core NFC. Thanks in advance.

Best regards

Get NFC Data Identity card
 
 
Q