Как я узнаю, что чипы паспортов NF C читают, какая группа данных? - PullRequest
0 голосов
/ 23 января 2020

Я читаю электронный паспорт на немецком языке, он также читает группы данных 1,2,3 и 14 и SOD, COM. Теперь я хочу прочитать «Датагруп 11», в которой содержатся дополнительные подробности. Но немецкий паспорт не читает дополнительные данные. Итак, как мне узнать, какие паспорта читать какие группы? Я прошел через ИКАО 9303 , но не получил никакой возможности получить эту информацию.

1 Ответ

0 голосов
/ 23 января 2020

В моем приложении я читаю DG32, DG33, DG34, но поток такой же, вот пример того, как реализовать чтение файла DG11 с использованием NFCPassportReader

public class DataGroup {

    public var elements: [String: String] = [:]   

// Я добавил этот словарь получить значение по ключу из документации

class DG11: DataGroup {

        private let tags = [0x5F0E, 0x5F0F, 0x5F10, 0x5F11, 0x5F2B]

        required init(_ data: [UInt8]) throws {
            try super.init(data)
            datagroupType = .DG11
        }

        override func parse(_ data: [UInt8]) throws {
            var tag = try getNextTag()
            if tag != 0x5C { throw TagError.InvalidResponse }
            _ = try getNextValue()
            try tags.forEach { _ in
                tag = try getNextTag()
                parseBody(try getNextValue(), key: String(tag, radix: 16, uppercase: true))
            }
            print(elements)
        }

        private func parseBody(_ data: [UInt8], key: String) {
            elements[key] = String(bytes: data[0...], encoding: .utf8)
        }

    }

Надеюсь, это поможет

...