在线商店

负责检验航次文件和货物的机器(MRTD) bibliothèque uFCoder

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

简介

La prise en en charge de La lecture de groupes données à partir de La balise NFC intégrée dans les documents de voyage lisibles par machine (MRTD), y comis les pasports électroniques conformes aux spécifications de l 'OACI, a été france france france bibliothèque uFCoder。

L 'implémentation prend en charge le mécanisme de contrôle d 'accès de base (BAC) pour L 'accès à la puce NFC。BAC永久认证和通信加密sécurisé avec une balise NFC intégrée dans le MRTD。BAC est basé unique ement sur la cryptographie symétrique utilant l 'algorithme 3DES et il est implémenté selonICAO 9303,第11方

国际民用航空组织(https://www.icao.int).La spécification 9303 de l’oaci normalize les MRTD, y包括les passeports électroniques。Vous pouvez trouver l 'intégralité de la série Doc 9303de l 'OACI sur https://www.icao.int/publications/pages/publication.aspx?docnum=9303网络站点。

Le contrôle d 'accès de base MRTDs est pris en charge dans la相机记录uFCoderà党派la版本5.0.12

Afin de vous authenticfier auprès de la balise NFC intégrée dans le MRTD en premier, vous devez passer le numéro du document, la date de birth du titulaire du document et la date d 'expiration du document pour functionner MRTD_MRZDataToMRZProtoKey() Afin d 'obtenir la«clé proto»à partir de laquelle seront dérivées d 'autres clés de sécurité nécessaires。Toutes les données nécessaires pour obtenir la«clé proto»(numéro du document, date de naissance du détenteur du document et date d 'expiration du document) sont codées dans la zone lisible par machine (MRZ) afin que la bibliothèque dispose d 'MRTD_MRZSubjacentToMRZProtoKey () qui peut être appelée au lieu de MRTD_MRZDataToMRZProtoKey()。Cette函数接受chaîne terminée有价无效内容文件。La capture d ' écran ci-dessous montre un sample de MRZ avec une ligne sous- jacentente marquée don ' t vous devez passer le contentu comme paramètre pour function ner MRTD_MRZSubjacentToMRZProtoKey()。

EPASSPORT MRZ

函数de bibliothèque de支持MRTD

MRTD_MRZDataToMRZProtoKey

函数描述

Afin d 'obtenir MRZ Proto Key nécessaire dans les étapes suivantes, vous poupeler cette function et lui transmettre des chaînes terminées par une value NULL content le numéro du document, la诞生日期du titulaire du document et la date d 'expiration du document。Après une exécution réussie de la function, MRZ Proto Key sera stocké dans un tableau mrz_proto_key de 25 octets。

Une déclaration de function (C语言)

UFR_STATUS MRTD_MRZDataToMRZProtoKey(const char *doc_number,

Const char *date_of_birth

Const char *date_of_expiry

[25] uint8_t mrz_proto_key);

产品的

doc_number 指针变化une chaîne terminée par une value NULL内容精确un numéro de document de 9 caractères。
date_of_birth 指针修改une chaîne terminée par une value NULL内容精确6 caractères représentant la date de naissance au format«AAAAMMJJ»。
date_of_expiry 指针修改chaîne terminée有效值NULL内容精确6 caractères représentant过期日期格式«AAMMJJ»。
mrz_proto_key Ce tableau d 'octets continendra la proto-clé MRZ calculée après l 'exécution réussie de la function。Ce tableau doit avoir alloué au moins 25 octets avant d 'appeler cette function。

MRTD_MRZSubjacentToMRZProtoKey

函数描述

Afin d 'obtenir la clé PROTO MRZ nécessaire dans les étapes suivantes, dans le cas du format TD3 MRZ (88 caractères au total), vous pouvez appeler cette function et lui passer une chaîne terminée par une value NULL contentant une ligne sous-jacente MRZ。TD3 MRZ imprimé根据文件eMRTD:

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

L898902C36UTO7408122F1204159ZE184226B < < < < < 10

Cette函数做它回收的指针变化的une chaîne terminée par une value NULL content une ligne sjacente MRZ, c 'est -à-dire«L898902C36UTO7408122F1204159ZE184226B<<<<<10»。

Déclaration de function (C语言)

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

产品的
mrz 指针修改une chaîne terminée par une value NULL内容des données MRZ。Selon le文件9303-10 de l 'OACI, où il dispose de trois formats de données MRZ:格式TD1, TD2 ou TD3。TD1大陆精度90 caractères, TD2大陆精度72 caractères et TD3大陆精度88 caractères。
mrz_proto_key Ce tableau d 'octets continendra la proto-clé MRZ calculée après l 'exécution réussie de la function。Ce tableau doit avoir alloué au moins 25 octets avant d 'appeler cette function。

MRTDAppSelectAndAuthenticateBac

函数描述

Utilisez cette功能pour vous authenticfier auprès de la balise NFC eMRTD à l 'aide de BAC。Cette功能établit un canal de communication sécurisé。Le canal de sécurité est géré à l’aide du paramètresend_sequence_cnt.Les clés de session de canal sontksenc(pour le chiff量度)等ksmac(pour le compute du MAC)。

Déclaration de function (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 Proto-clé MRZ acquise à l 'aide de l 'appel précédent à MRTD_MRZDataToMRZProtoKey() ou MRTD_MRZSubjacentToMRZProtoKey()函数
ksenc Ce tableau doit avoir alloué au moins 16 octets avant d 'appeler cette函数。Ce tableau continendra la clé de chiffment de session après l 'exécution réussie de la function
ksmac Ce tableau doit avoir alloué au moins 16 octets avant d 'appeler cette函数。Ce tableau continendra une clé de session pour计算器MAC après l 'exécution réussie de la function。
send_sequence_cnt Après l 'exécution réussie点位函数,点位函数64位doit être enregistré et transféré à chque appel suivant vers MRTDFileReadBacToHeap() et/点位函数说教eMRTD

MRTDFileReadBacToHeap

函数描述

使用cette功能倒lire les fichiers de la balise NFC eMRTD。Vous ne pouvez上诉cette function qu 'après avoir établi avec succès un canal de sécurité par le canal précédemment appelé

函数MRTDAppSelectAndAuthenticateBac()。Les clés de session ksenc et ksmac, ainsi que Les send_sequence_cnt de paramètres sont acquis par le précédemment appelé

函数MRTDAppSelectAndAuthenticateBac()。Après l 'appel réussi de cette函数,*输出点位les données de fichier lues à partir d 'un fichier eMRTD spécifié par le paramètre file_index。La mémoire卫生棉条,dans laquelle les données sont stockées, est automatiquement allouée sur le tas de mémoire垂坠l 'exécution de La function。La quantité maximale de données allouées peut être de 32 Ko。Il est de la responsabilité du programmeur de nettoyer les données allouées (c'est-à-dire en appelant free(), la function c standard) après利用率。

Déclaration de function (C语言)

UFR_STATUS MRTDFileReadBacToHeap(uint8_t *file_index,

uint8_t * *出击,

uint32_t * output_length,

Const uint8_t ksenc[16],

Const uint8_t ksmac[16],

产品的

file_index

Paramètre qui spécifie le fichier que nouous voulons lire à partir de l 'eMRTD。Il 'agit d ' unpointevers un tableau d 'octets内容精确双八位désignant le fichier eMRTD。二八元素非FID (ce deux octets sont l 'identification de fihier) et il存在于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}

*出击 Après l 'appel réussi de cette function, ce pointer pointe vers les données de fichier lues à partir d 'un fichier eMRTD spécifié par le paramètre file_index。La mémoire卫生棉条,丹斯拉奎尔les données sont stockées, est automatiquement allouée lors de l 'exécution de La function。La quantité maximale de données allouées peut être de 32 Ko。Il est de la responsabilité du programmeur de nettoyer les données allouées (c'est-à-dire en appelant free(), la function c standard) après利用率。
output_length Après l 'appel réussi de cette function, ce pointeur pointe vers la taille des données de fichier lues à partir d 'un fichier eMRTD spécifié par le paramètre file_index。
ksenc Clé de chiffrement de session acquise à l 'aide d 'un appel préalable à la function MRTDAppSelectAndAuthenticateBac()。
ksmac Clé de session pour calculator mac acquis à l 'aide d 'un appel préalable à la function MRTDAppSelectAndAuthenticateBac()。
send_sequence_cnt Ce指针doit指针vers une valeur de 64位initialisée par le
appel réussi à la函数MRTDAppSelectAndAuthenticateBac()。Le pointeur vers cette valeur de 64 bits doit être enregistré et transféré à chque appel ultérieur à cette function et/ou à d 'autres functions utilisées pour lire eMRTD。

uint64_t * send_sequence_cnt);

护照示例électronique MRTD

Cet举例peut être téléchargé à partir de:

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

ou clonez l 'intégralité du projet ECLIPSE CDT en utilant:

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

对。

Si vous souhaitez une exécution rapide uniquement, téléchargez le project et démarrez l 'exécutable binaire à partir du dossier approprié:

  • 倒unwin32位,démarrez le win32_releaserun_me.cmd
  • 倒unwin64位,démarrez le win64_releaserun_me.cmd
  • pour un démarrage Linux 32 bits linux32_release/ePassport_mrtd
  • pour un linux64 bits, démarrez linux64_release/ePassport_mrtd。

L ' example de logiciel nécessite que le périphérique de lecture uFR soit connecté et configuré au PC。Aucune autre application ou service utilant le lecteur uFR ne doit être en cours d 'exécution sur l 'ordinateur。Après le démarrage réussi de l ' sample MRTD du passport électronique, le logiciel démarre le nombre principal comme indiqué ci-dessous。

护照讲师électronique MRTD NFC

<">维护人员,您有权选择»M»ou»P»comme indiqué应用程序使用说明à l ' écran。

Si vous avez choice l 'option«M»,vous serez invité avec du texte:

Vous avez choisi d'entrer la ligne MRZ sous-jacente située sous le 'P< xxx姓氏<

先生,请原谅。La ligne MRZ sousjacente doit comporter 44 caractères。

先生,请原谅我。Un example de la ligne MRZ sous-jacente peut être vu dans la première image。

Sinon, si vous avez choice l ' option 'P, vous serez invité avec du texte:

Vous avez choice d ' entry le numéro de document, la date de birth and la date d 'expiration séparément:

Entrez le numéro du document。Le numéro du document doit comporter 9 caractères。

_________ ...

entrz la date de naissance。Le format de date doit être AAMMJJ。

______ ...

截止日期的主菜。Le format de date doit être AAMMJJ。

______ ...

Entrez donc les données dans le format approprié。

Après avoir entré les données有效

La proto-clé MRZ a été définie avec succès。

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

Après ce message, vous pouousuivre les opérations巴黎NFC讲座intégrée dans le passport électronique auquel appartient les données que vous avez précédemment saisies。

在法国,你是维护护照的人,是演讲的冠军。Une fois la communication établie avec succès, vous obtiendrez des information de base sur la ballise NFC dans le champ du lecteur。比如:

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

应答器类型:DL_GENERIC_ISO14443_4, sak = 0x??, uid[4] = ??:::??????

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

SAK et UID dans cet示例sont masqués et ils peuvent avoir n ' import quelle valeur arbiteur。Les pasports électroniques seront toujours reconnect comme DL_GENERIC_ISO14443_4 type d ' étiquette。

Vous pouvez maintenant choisir les options de lecture de l l应用:

C '- cette选项点燃les données courantes (EF.COM fichier élémentaire) à partir du passseport électronique。Après une lecture réussie, les données sont analysées et affichées dans le format suivant:

EF.COM a été lu avec succès。这是什么意思??八位字节

Données野兽:60 xx xx xx xx xx xx xx xx xx

分析des données野兽EF.COM:

La版本LDS est 01.07

La版本UNICODE est 04.00.00

名单des groupes de données存在:

Trouvé: EF。DG1

Trouvé: EF。DG2

Trouvé: EF。DG3

Trouvé: EF。DG14

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

Les données bruutes de cet example sont masquées et peuvent avoir n ' import quelle valeur arbitraire。Seule la balise de données bruutes a été présente et elle sera toujours la même (0x60)。Lorsque vous lisez votre propre document, vous obtiendrez ses données bruutes réelles ici。Pour en savoir + sur la版本LDS和la版本UNICODE, vous pouvez lire dans le文件OACI 9303,第10方

Les versions LDS et UNICODE sont suvies de la liste des groups de données contue dans ePassport。Seules les DG1 et DG2 sont obligation。Tous les aures groupes de données peuvent être présents ou non dans le MRTD particer。

年代- cette选项lit l 'objet文档安全(EF。SO初级文件)et l 'enregistre dans le fichier binaire quel chemin et nom ous devez entry lorsque vous y êtes invité。L 'objet文档安全大陆une签名numérique au格式CMS PKCS # 7标准。Présence de l 'EF。SO sur le MRTD est obligation。

D

1 '- cette选项点亮l 'EF。DG1, analysez-le et affichez les données brutes et analysées dans le format suivant:

Ef。DG1 a été lu avec succès。这是什么意思??八位字节

Données野兽:

61 xx xx xx xx xx xx xx

  1. xxXx Xx Xx Xx Xx Xx Xx Xx

分析简单的de l 'EF。Données野兽DG1:

文件代码:P(护照électronique)

État ou organisme émetteur: ??

笔名:笔名FIRST_NAME

Numéro du文档:?????????

Nationalite: ? ?

诞生日期(jj.MM.aaaa):………………????。

性别:? ?

截止日期(jj.MM.aaaa):………………????。

Données教职工:??????????????

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

Les données bruutes de cet example sont masquées et peuvent avoir n ' import quelle valeur arbitraire。Seule la balise de données bruutes a été présente et elle sera toujours la même (0x61)。Lorsque vous lisez votre propre document, vous obtiendrez ses données bruutes réelles ici。

2》- cette选项点亮l 'EF。DG2 et enregisterz -le dans le fichier binaire quel chemin et nom ous devez enter lorsous y êtes invité。Ef。DG2大陆une image face iale du titulaire du document et elle est obligation。Ef。DG2 à côté de l 'image facirait également contrir des caractéristiques faciales biométriques。En savoir + sur EF。contentu DG2 que vous pouvez lire dans le文件OACI 9303,第10方

- cette选项点亮l 'EF。DG2。舞蹈与cas, seule l 'image face est extraite du fichier MRTD et enregistrée舞蹈与视觉entré。Le format d 'image est automatiquement détecté et l 'extension de fichier est définie en conséquence。双格式de fichiers图像可能sont définis倒ce上下文:JPEG ou JP2 (c 'est -à-dire . JPEG 2000)。

D '- cette选项lit n ' importte quel groupe de données élémentaires (EF。DG) à关于MRTD和与此有关的可用于解决问题的工具êtes invité。Une fois cette option choisie, vous serez invité à enter EF。dg指数。L ' index peut être compris entre 1 et 16(例如,1 pour EF.)DG1 et 14倒EF。DG14)。Le fichier élémentaire que vous souhaitez lire doit être répertorié dan la liste des groupes de données EF.COM。

La lecture de。

La版本actuelle de l ' example MRTD du passport électronique est 1.0 et dépend de La bibliothèque uFCoder版本5.0.12 et du firmware uFR版本5.0.22。

Baidu
map