在线商店

Unterstützung für maschinenlesbare Reisedokumente (MRTD) der ufcode - bibliothek

打印友好,PDF和电子邮件
[printfriendly电流= '是的']
打印友好,PDF和电子邮件

Einleitung

Die Unterstützung für das Lesen von Datengruppen ausdem NFC-Tag, der in Die maschinenlesbaren Reisedokumente (MRTDs) eingebettet ist, einschließlich ePassports, Die den ICAO-Spezifikationen entsprechen, wurde in der ufcode - bibliothek implementiert。

Die Implementierung unterstützt den基本访问控制(BAC)- mechanmus für den NFC-Chip-Zugriff。BAC ermöglicht die Authentifizierung und einen sicheren kryptografischen Kommunikationskanal mit einem im MRTD eingebetteten nfc标签。BAC basiert rein auf symmetrischer Kryptographie unter Verwendung des 3des算法和ist gemäßICAO 9303,第11条,implementiert。

ICAO steht für国际民用航空组织(https://www.icao.int).Die ICAO 9303-Spezifikation standardisiert mrtd, einschließlich ePassports。您已收到国际民航组织9303号文件https://www.icao.int/publications/pages/publication.aspx?docnum=9303的网站。

MRTDs基本访问控制鸟在deruFCoder-Bibliothekab版本5.0.12 unterstutzt。

Um sich zuerst bei dem im MRTD eingebetteten NFC-Tag zu authentifizieren, müssen Sie die Dokumentnummer, das Geburtsdatum des Dokumenteninhabers和das Ablaufdatum des documents MRTD_MRZDataToMRZProtoKey () übergeben, Um den "Proto-Schlüssel" zu erhalten, von dem andere notwendige Sicherheitsschlüssel abgeleitet werden。Alle Daten, die benötigt werden, um "proto key" zu erhalten (Dokumentnummer, Geburtsdatum des Dokumentinhabers und Ablaufdatum des Dokuments), sind in der机读区(MRZ) codiert, so dass die Bibliothek über MRTD_MRZSubjacentToMRZProtoKey() -Funktion verfügt, die anstelle von MRTD_MRZDataToMRZProtoKey() aufgerufen werden kann。生日祝福语,生日祝福语,生日祝福语enthält。Der folgende Screenshot zeigt ein Beispiel der MRZ mit einer markierten untergeordneten Zeile, deren Inhalt Sie als Parameter übergeben müssen, um MRTD_MRZSubjacentToMRZProtoKey() zu funktionieren.

epassport MRZ

Funktionen der MRTD-Unterstützungsbibliothek

MRTD_MRZDataToMRZProtoKey

Funktionsbeschreibung

嗯窝MRZ Proto-Schlussel祖茂堂erhalten, der窝folgenden Schritten benotigt将,您能这Funktion aufrufen和nullterminierte Zeichenfolgen ubergeben,死Dokumentnummer死去,das Geburtsdatum des Dokumenthalters和das Ablaufdatum des Dokuments enthalten。Nach erfolgreicher Funktionsausführung wd MRZ Proto Key in einem mrz_proto_key 25字节array gespeichert。

Eine funktionsdeclaration (C-Sprache)

UFR_STATUS MRTD_MRZDataToMRZProtoKey(const char *doc_number,

Const char *date_of_birth

Const char *date_of_expiry

uint8_t mrz_proto_key [25]);

参数

doc_number Zeiger aufine nullterminierte Zeichenfolge, die genau 9 zeichendokumentnummer enthält。
date_of_birth Zeiger auf eine nullterminierte Zeichenfolge, die genau 6 Zeichen enthält, die das Geburtsdatum im Format "JJMMTT" darstellen。
date_of_expiry Zeiger auf eine mit Null abgeschlossene Zeichenfolge, die genau 6 Zeichen enthält, die das Ablaufdatum im Format "JJMMTT" darstellen。
mrz_proto_key Dieses Bytearray enthält nach erfolgreicher Funktionsausführung den berechneten MRZ-Protoschlüssel。柴油机阵列muss vor dem Aufruf柴油机Funktion mindestens 25字节zugewiesen haben。

MRTD_MRZSubjacentToMRZProtoKey

Funktionsbeschreibung

嗯登MRZ-Protoschlüssel祖尔海登,在登folgenden Schritten benötigt奇怪,können Sie im Falle des TD3 mrz格式(insgesamt 88 Zeichen lang) diese Funktion aufrufen和ihr eine nullterminierte Zeichenfolge übergeben, die eine MRZ-Unterzeile enthält。Ein Beispiel für das TD3 mrz格式,das auf dem emrtd - docment gedruckt ist, sieht folgendermaßen aus:

P < UTOERIKSSON < < <安娜玛丽亚 <<<<<<<<<<<<<<<<<<<

L898902C36UTO7408122F1204159ZE184226B < < < < < 10

平安平安,平安平安,平安平安enthält, d. h。“L898902C36UTO7408122F1204159ZE184226B < < < < < 10”。

funktionsdeclaration (Sprache C)

UFR_STATUS MRTD_MRZSubjacentToMRZProtoKey(const char *mrz, uint8_t mrz_proto_key[25]);

参数
MRZ Zeichenfolge, die MRZ-Daten enthält。Gemäß ICAO文件9303-10,标准MRZ-Datenformate编号:TD1-, TD2- order TD3-Formate。TD1 enthält genau 90 zechen, TD2 enthält genau 72 zechen和TD3 enthält genau 88 zechen。
mrz_proto_key Dieses Bytearray enthält nach erfolgreicher Funktionsausführung den berechneten MRZ-Protoschlüssel。柴油阵列muss mindestens 25字节zugewiesen haben, bevor diese Funktion aufgerufen wurde。

MRTDAppSelectAndAuthenticateBac

Funktionsbeschreibung

Verwenden Sie diese Funktion,嗯sich mit BAC beim eMRTD-NFC-Tag zu authentifizieren。我爱你,我爱你。对他们来说是很奇怪的参数send_sequence_cntverwaltet。死亡Kanalsitzungsschlüssel信德ksenc(für die Verschlüsselung) undksmac(für die Berechnung von MAC)。

funktionsdeclaration (Sprache C)

UFR_STATUS MRTDAppSelectAndAuthenticateBac(const uint8_t mrz_proto_key[25], uint8_t ksenc[16],

uint8_t ksmac [16]

uint64_t * send_sequence_cnt);

参数

mrz_proto_key MRZ-Protoschlüssel, der mit dem vorherigen Aufruf der MRTD_MRZDataToMRZProtoKey()- oder MRTD_MRZSubjacentToMRZProtoKey()- funktofunktion erworben wurde
ksenc 柴油阵列muss mindestens 16字节zugewiesen haben, bevor diese Funktion aufgerufen wurde。Dieses Array enthält nach erfolgreicher Funktionsausführung einen Sitzungsverschlüsselungsschlüssel.
ksmac Dieses Array muss vor dem Calli dieser Funktion mindestens 16字节zugewiesen haben。Dieses Array enthält einen Sitzungsschlüssel zur Berechnung des MAC nach erfolgreicher Funktionsausführung.
send_sequence_cnt Nach erfolgreicher Ausführung diesel Funktion sollte der Zeiger auf diesen 64-Bit-Wert gespeichert und bei jedem nachfolgenden Aufruf an MRTDFileReadBacToHeap() und/oder andere Funktionen zum Lesen von eMRTD weitergeleitet werden。

MRTDFileReadBacToHeap

Funktionsbeschreibung

Verwenden Sie diese Funktion,嗯Dateien vom eMRTD NFC-Tag zu lesen。你können我的祖国,我的祖国,我的祖国

-Funktion MRTDAppSelectAndAuthenticateBac()。Sitzungsschlüssel ksenc und ksmac, sowie参数send_sequence_cnt werden von der zuvor aufgerufenen

-Funktion MRTDAppSelectAndAuthenticateBac()。Nach dem erfolgreichen Aufruf diesel function verweist *输出auf die日期,参数file_index angegebenen emrtd -日期日期。Der Puffer, in dem die Daten gespeichert sind, wid während Der Funktionsausführung automatisch auf dem Speicherheap zugewiesen。Die maximal zugewiesene Datenmenge kann 32kb betragen。在程序设计的空间中,在标准的c -功能中,在标准的c -功能中。

funktionsdeclaration (Sprache C)

UFR_STATUS MRTDFileReadBacToHeap(uint8_t *file_index,

uint8_t * * Ausgang,

uint32_t * output_length,

Const uint8_t KSENC[16]

Const uint8_t KSMAC[16]

参数

file_index

Der Parameter, Der die Datei angibt, die wir ausdem eMRTD lesen möchten。die ist ein Zeiger auf ein Bytearray, das genau zwei Bytes enthält, die die eMRTD-Datei bezeichnen。Diese beiden Bytes sind File Identification (FID) und es gibt eine list von FID:

EF.COM = {0x01, 0x1E}
Ef。DG1 = {0x01, 0x01}
Ef。DG2 = {0x01, 0x02}
Ef。DG3 = {0x01, 0x03}
Ef。DG4 = {0x01, 0x04}
Ef。DG5 = {0x01, 0x05}
Ef。DG6 = {0x01, 0x06}
Ef。DG7 = {0x01, 0x07}
Ef。DG8 = {0x01, 0x08}
Ef。DG9 = {0x01, 0x09}
Ef。DG10 = {0x01, 0x0A}
Ef。DG11 = {0x01, 0x0B}
Ef。DG12 = {0x01, 0x0C}
Ef。DG13 = {0x01, 0x0D}
Ef。DG14 = {0x01, 0x0E}
Ef。DG15 = {0x01, 0x0F}
Ef。DG16 = {0x01, 0x10}
Ef。SOD = {0x01, 0x1D}

* Ausgabe Nach dem erfolgreichen Aufruf diesel Funktion verweist diesel Zeiger auf die Dateidaten, die aus einer eMRTD-Datei gelesen wurden, die durch den参数file_index angegeben wurde。Der Puffer, in dem die Daten gespeichert sind, wid während Der Funktionsausführung automatisch zugewiesen。Die maximal zugewiesene Datenmenge kann 32kb betragen。在程序设计的空间中,在标准的c -功能中,在标准的c -功能中。
output_length Nach dem erfolgreichen Aufruf dieser Funktion zeigt Zeiger auf die Größe der Dateidaten, die aus einer eMRTD-Datei gelesen werden, die durch den file_index-Parameter angegeben wid。
ksenc Sitzungsverschlüsselungsschlüssel, der mit einem vorherigen Aufruf der MRTDAppSelectAndAuthenticateBac()- function erworben wurde。
ksmac Der Sitzungsschlüssel zur Berechnung des MAC, Der mit einem vorherigen Aufruf Der function MRTDAppSelectAndAuthenticateBac() erworben wurde。
send_sequence_cnt 64位wert verweisen, der von der vorherigen
erfolgreicher Aufruf der MRTDAppSelectAndAuthenticateBac()-函数。Der Zeiger auf diesel 64-Bit-Wert sollte gespeichert and bei jedem nachfolgenden Aufruf an diese Funktion and / order andere Funktionen weitergeleitet werden, die zum Lesen von eMRTD verwendet werden。

uint64_t * send_sequence_cnt);

ePassport MRTD-Beispiel

Dieses Beispiel können Sie herunterladen von:

//www.texashampton.com/code/nfc-rfid-reader-sdk/ufr-examples-ePassport_mrtd.git

oder klonen Sie das gesamte Eclipse cdt - project mit:

git clone -rekursive //www.texashampton.com/code/nfc-rfid-reader-sdk/ufr-examples-ePassport_mrtd.git

Befehl。

Wenn Sie nur eine Schnellausführung wünschen, laden Sie das Projekt herunter und start Sie die ausführbare Binärdatei ausdem entsprechenden order:

  • 启动程序für eine 32-Bit-Version von Windows die Datei win32_releaserun_me.cmd
  • 启动程序für eine 64-Bit-Version von Windows die Datei win64_releaserun_me.cmd
  • für einen 32-Bit-Linux-Start linux32_release/ePassport_mrtd
  • für ein 64-Bit-Linux start Sie linux64_release/ePassport_mrtd。

Für das Softwarebeispiel muss das uFR-Lesegerät an den PC angeschlossen and konfiguriert werden。Keine andere Anwendung order kein anderer Dienst, der den uFR-Reader verwendet, sollte auf dem计算机ausgeführt werden。Nach dem erfolgreichen启动“ePassport MRTD示例”启动模具软件模具。

ePassport-Lesegerät MRTD NFC

< < >可选的“M”的“P”auswählen, wie in den Anwendungsanweisungen auf dem Bildschirm angegeben。

Wenn Sie die选项“M”gewählt haben, werden Sie mit dem folgenden文本aufgefordert:

你在这里,我在这里"P

Geben Sie die untergeordnete MRZ-Zeile ein。Die untergeordnete MRZ-Zeile muss 44 Zeichen lang sein。

Geben Sie也死于MRZ-Zeile ein。Ein Beispiel für die untergeordnete MRZ-Zeile ist im ersten Bild zu sehen。

Andernfalls, wenn Sie die选项“P”wählen, werden Sie mit Text aufgefordert:

你的生活是这样的,多kumentnummer,一个数据和一个数据的分离

Geben Sie die Belegnummer ein。Die Dokumentnummer sollte 9 Zeichen lang sein。

_________ ...

Geben Sie das Geburtsdatum ein。Das Datumsformat muss JJMMTT sein。

______ ...

Geben Sie das Ablaufdatum ein。Das Datumsformat muss JJMMTT sein。

______ ...

Geben Sie也die Daten im entsprechenden Format ein。

那是我的死gültigen那是我的死,那是我的死

MRZ-Proto-Schlüssel wurde erfolgreich gesetzt。

——————————————————————-

Nach dieser Meldung können Sie mit den Lesevorgängen auf dem in ePassport eingebetteten NFC-Tag forfahren, zu dem die zuvor eingegebenen Daten gehören。

Jetzt können在das uFR-Lesefeld eingeben的Sie den Reisepass。Bei erfolgreicher Kommunikation erhalten Sie grundlegende Informationen über den NFC-Tag im Reader-Feld。例如:

——————————————————————-

Tag-Typ: DL_GENERIC_ISO14443_4, sak = 0x??, uid[4] = ??:??:??:??

——————————————————————-

SAK和UID在diesel Beispiel sinind maskiert und können einen beliebigen Wert haben。ePässe werden immer wie DL_GENERIC_ISO14443_4标签类型。

Jetzt können Sie Anwendungsleseoptionen auswählen:

C '- diese Option liest gängige Daten (EF.COM elementare Datei) ausdem ePassport。数据分析和数据分析格式:

EF.COM wurde erfolgreich gelesen。死Dateilänge ist ??字节

Rohdaten: 60 xx xx xx xx xx xx xx xx xx xx xx xx…

EF.COM Rohdaten分析师:

LDS-Version ist 01.07

unicode版本ist 04.00.00

vorhandenen Datengruppen清单:

Gefunden: EF。GD 1

Gefunden: EF。GD - 2

Gefunden: EF。DG3

Gefunden: EF。GD 14

——————————————————————-

罗达顿在圣诞节的祝福和können相信比根的祝福。这是一个错误的解释(0x60)。Wenn Sie Ihr eigenes document lesen, erhalten Sie hier die tatsächlichen Rohdaten。Mehr über die LDS-Version和die UNICODE-Version können Sie im文件ICAO 9303,第10条nachlesen。

Auf die LDS- und UNICODE-Versionen folgt die Datengruppenliste, die ePassport enthält。Nur DG1和DG2信德义务。Alle anderen Datengruppen können entweder in der jeweiligen MRTD vorhanden sein oder niht。

年代- diese Option liest das Document Security object (EF。SO elementare Datei) and speichert es in der Binärdatei, welchen Pfad und Namen Sie eingeben müssen, wenn Sie dazu aufgefordert werden。Das文档安全对象enthält eine digitale签名imStandard-PKCS #7-CMS-Format。Anwesenheit des EF。SO auf der MRTD是义务。

D

1 '- diese选项最大死亡EF。DG1,分析人的时间和时代分析人的时间和分析人的数据格式:

Ef。DG1 wurde erfolgreich gelesen。Dateilänge ist ??字节

Rohdaten:

61 xx xx xx xx xx xx xx xx xx

  1. Xx Xx Xx Xx Xx Xx Xx XxXx Xx…

Einfaches Parsen des EF。DG1 Rohdaten:

Dokumentencode: P(电子护照)

澳大利亚国家组织:??

Name des Inhabers: NACHNAME FIRST_NAME

Dokumentnummer : ?????????

Nationalitat: ? ?

Geburtsdatum (tt.MM.jjjj.): ????。????。

性:? ?

Ablaufdatum (tt.MM.jjjj.):…………????。

可选日期:??????????????

——————————————————————-

罗达顿在圣诞节的祝福和können相信比根的祝福。这是一场战争,这是一场奇怪的战争。Wenn Sie Ihr eigenes document lesen, erhalten Sie hier die tatsächlichen Rohdaten。

2》- diese选择最优的EF。DG2和speichern Sie es in der Binärdatei, welchen Pfad and Namen Sie eingeben müssen, wenn Sie dazu aufgefordert werden。Ef。DG2 enthält in Gesichtsbild des Dokumentenhalters and ist obligation(义务)。Ef。DG2 könnte neben dem Gesichtsbild auch biometrische Gesichtszüge enthalten。Mehr über EF。DG2-Inhalte können Sie im文件ICAO 9303,第10条,nachlesen。

- diese选项最大死亡EF。DG2。在diesem Fall wild nur das Gesichtsbild aus der MRTD-Datei extrahiert and In der Datei gespeichert, welchen Pfad und Namen Sie eingegeben haben。Das Bildformat wid automatic atisch erkannt and die Dateierweiterung entpreschend gesetzt。Für diesen Zusammenhang sind zwei mögliche Bilddateiformate definiert: JPEG oder JP2 (d.h.jpeg 2000)。

D '- diese Option liest jede der elementaren Datengruppen (EF。DG)在德国的日期和语言Binärdatei,在德国的日期和语言müssen,在德国的日期和语言müssen。Nachdem diese Option ausgewählt wurde, werden Sie zur Eingabe von EF aufgefordert。GD指数。Der Index kann im Bereich von 1 bis 16 liegen (z.B. 1 für EF。GD 1 und 14 für EF。GD 14)。Die elementare Datei, Die Sie lesen wollten, muss in der EF.COM Datengruppenliste aufgeführt sein。

Das Lesen eigniger optionaler elementarer Dateien, insbesondere solcher, die biometrische Daten enthalten, erfordert spezielle sicherheitmechanical echanismen, die außerhalb des Rahmens dieses douments liegen。

Die aktuelle版本des“ePassport MRTD示例”ist 1.0和hängt von der ufcode - bibliotheksversion 5.0.12和uFR-Firmware-Version 5.0.22 ab。

Baidu
map