在线商店

ПоддержкабиблиотекиuFCoderМашиночитаемыепроездныедокументы(MRTD)

Введение#

ВбиблиотекеuFCoderреализованаподдержкачтениягруппданныхсметкиNFC,встроеннойвмашиночитаемыепроездныедокументы(MRTD),включаяэлектронныепаспорта,соответствующиеспецификациямИКАО。

Реализацияподдерживаетмеханизмбазовогоконтролядоступад(BAC)лядоступакчипуNFC。BACобеспечиваетаутентификациюибезопасныйкриптографическийканалсвязисметкойNFC,встроеннойвMRTD。BACоснованисключительнонасимметричнойкриптографиисиспользованиемалгоритм3 desиареализованвсоответствиисIcao 9303, с ст т 11

ИКАОрасшифровываетсякакМеждународнаяорганизациягражданскойавиации(https://www.icao.int).СпецификацияИКАО9303стандартизируетMRTD,включаяэлектронныепаспорта。ВыможетенайтивсюсериюдокументовИКАО医生9303人https://www.icao.int/publications/pages/publication.aspx?docnum=9303веб——сайте。

Базовый конт т ол дост па MRTD поддерживается вбиблиотекеuFCoderверсии5.0.12

,чДлятоготобысначалааутентифицироватьсявNFC——метк,евстроеннойвMRTD,выдолжныпередатьномердокумента,датурождениявладельцадокументаидатуистечениясрокадействиядокументадляфункционированияMRTD_MRZDataToMRZProtoKey(),чтобыполучить«проток——люч»,изкоторогобудутполученыдругиенеобходимыеключибезопасности。Вседанны,енеобходимыедляполучения«проток——люча»(номердокумента,датарождениявладельцадокументаидатаистечениясрокадействиядокумента),кодируютсявмашиночитаемойзоне(MRZ),поэтомубиблиотекаимеетфункциюMRTD_MRZSubjacentToMRZProtoKey(),которуюможновызватьвместоMRTD_MRZDataToMRZProtoKey()。Этафункцияпринимаетстрокуснулевымзавершением,содержащуюподложнуюстрокуMRZдокумента。НаскриншотенижепоказанпримерMRZспомеченнойподсоставнойстрокой,содержимоекоторойвыдолжныпередатьвкачествепараметрадляфункционированияMRTD_MRZSubjacentToMRZProtoKey()。

Электронный па аспо о МРЗ

Функции библиотеки поддержки MRTD#

MRTD_MRZDataToMRZProtoKey#

Описаниефункции

ЧтобыполучитьMRZ原型键,необходимыйнапоследующихшагах,выможетевызватьэтуфункциюипередатьейстрокиснулевымокончанием,содержащиеномердокумента,датурождениявладельцадокументаидатуистечениясрокадействиядокумента。ПослеуспешноговыполненияфункцииMRZ原型关键будетхранитьсявmrz_proto_key 25 -байтовоммассиве。

Объявление ф - унк ии и (язык 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 Указательнастрокуснулевымокончанием,содержащуюровно9 -значныйномердокумента。
date_of_birth Указательнастрокуснулевымокончанием,содержащуюровно6символов,представляющихдатурождениявформате“YYMMDD”。
date_of_expiry Указательнастрокуснулевымокончанием,содержащуюровно6символов,представляющихдатуистечениясрокадействиявформате“YYMMDD”。
mrz_proto_key ЭтотмассивбайтовбудетсодержатьвычисленныйпротоключMRZпослеуспешноговыполненияфункции。Передвызовомэтойфункцииэтомумассивудолжнобытьвыделенонемене25ебайт。

MRTD_MRZSubjacentToMRZProtoKey#

Описаниефункции

,чДлятоготобыполучитьMRZ原型键,необходимыйнапоследующихшагах,вслучаеформатаTD3 MRZ(всего88символов),выможетевызватьэтуфункциюипередатьейстрокуснулевымокончанием,содержащуюстрокуMRZ在底下的。ПримерформатаTD3 MRZ,напечатанногонадокументеeMRTD,выглядитследующимобразом:

<УТОЭРИКССОН< <АННА<МАРИЯ <<<<<<<<<<<<<<<<<<<

L898902C36UTO7408122F1204159ZE184226B < < < < < 10

Этафункциядолжнаполучитьуказательнастрокуснулевымзавершением,содержащуюподложнуюстрокуMRZ,ет。“L898902C36UTO7408122F1204159ZE184226B < < < < < 10”。

Объявление ф - унк ии и (язык c)

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

Параметры
МРЗ Указательнастрокуснулевымзавершением,содержащуюданныеMRZ。СогласнодокументуИКАО医生9303 - 10,гдеонимееттриформатаданныхMRZ: TD1、TD2илиTD3。TD1содержитровно90символов,TD2содержитровно72символа,аTD3содержитровно88символов。
mrz_proto_key ЭтотмассивбайтовбудетсодержатьвычисленныйпротоключMRZпослеуспешноговыполненияфункции。Этотмассивдолженвыделитьнемене25ебайтдовызоваэтойфункции。

MRTDAppSelectAndAuthenticateBac#

Описаниефункции

ИспользуйтеэтуфункциюдляаутентификациивNFC——меткеeMRTDспомощьюBAC。Этафункцияустанавливаетбезопасныйканалсвязи。Каналбезопасностиподдерживаетсяспомощьюпараметраsend_sequence_cnt.Сеансовыми кл о с ам м ка анала с л т тсksenc(дл ифро ани)ksmac(дл в и лени mac)。

Объявление ф - унк ии и (язык c)

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

uint8_tксмак[16],

uint64_t * send_sequence_cnt);

Параметры

mrz_proto_key ПротоключMRZ,полученныйспомощьюпредварительноговызовафункцииMRTD_MRZDataToMRZProtoKey()илиMRTD_MRZSubjacentToMRZProtoKey ()
ksenc Этотмассивдолжениметьвыделенноенемене16ебайтдовызоваэтойфункции。Этотмассивбудетсодержатьключшифрованиясеансапослеуспешноговыполненияфункции
ксмак Этотмассивдолженвыделитьнемене16ебайтдовызоваэтойфункции。ЭтотмассивбудетсодержатьсеансовыйключдлявычисленияMACпослеуспешноговыполненияфункции。
send_sequence_cnt Послеуспешноговыполненияэтойфункцииуказательнаэто64 -битноезначениедолженсохранятьсяипересылатьсяприкаждомпоследующемвызовеMRTDFileReadBacToHeap()и/илидругихфункцийдлячтенияeMRTD

MRTDFileReadBacToHeap#

Описаниефункции

Используйтеэтуфункциюдлячтенияфайловизnfc——меткиeMRTD。Вызватьэтуфункциюможнотолькопослеуспешногоустановленияканалабезопасностиранеевызываемым

ФункцияMRTDAppSelectAndAuthenticateBac()。Сеансовыеключиksencиksmac,атакжеsend_sequence_cntпараметровприобретаютсяранеевызываемыми

ФункцияMRTDAppSelectAndAuthenticateBac()。Послеуспешноговызоваэтойфункци*输出уиказываетнаданныефайла,считываемыеизфайлаeMRTD,заданногопараметромfile_index。,вБуферкоторомхранятсяданные,автоматическивыделяетсянакучупамятивовремявыполненияфункции。Максимальныйобъемвыделяемыхданныхможетсоставлять32КБ。Программистнесетответственностьзаочисткувыделенныхданных(ет。путемвызова免费(),стандартнойфункцииC)послеиспользования。

Объявление ф - унк ии и (язык 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

,уПараметрказывающийфайл,которыймыхотимпрочитатьизeMRTD。Этоуказательнамассивбайтов,содержащийровнодвабайта,обозначающихфайлeMRTD。Этидвабайтаявляютсяидентификациейфайлов(FID),иестьсписок支撑材:

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

*выпуск Послеуспешноговызоваэтойфункцииэтотуказательуказываетнаданныефайла,считываемыеизфайлаeMRTD,заданногопараметромfile_index。,вБуферкоторомхранятсяданные,автоматическивыделяетсявовремявыполненияфункции。Максимальныйобъемвыделяемыхданныхможетсоставлять32КБ。Программистнесетответственностьзаочисткувыделенныхданных(ет。путемвызова免费(),стандартнойфункцииC)послеиспользования。
output_length Послеуспешноговызоваэтойфункцииэтотуказательуказываетнаразмерданныхфайла,считываемыхизфайлаeMRTD,заданногопараметромfile_index。
ksenc Ключшифрованиясеанса,полученныйспомощьюпредварительноговызовафункцииMRTDAppSelectAndAuthenticateBac()。
ксмак СеансовыйключдлявычисленияMAC -адресов,полученныхспомощьюпредварительноговызовафункцииMRTDAppSelectAndAuthenticateBac()。
send_sequence_cnt Этотуказательдолженуказыватьна64 -битноезначение,инициализированноеранее
успешныйвызовфункцииMRTDAppSelectAndAuthenticateBac()。Указательнаэто64 -битноезначениедолженсохранятьсяипересылатьсяприкаждомпоследующемвызовеэтойфункциии/илидругихфункций,используемыхдлячтенияeMRTD。

uint64_t * send_sequence_cnt);

Пример MRTD у лект о онно о о о о а#

Этот прим мер можно за а р ри ит т по о адресу:

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

иликлонироватьвесьпроекECLIPSE CDTстпомощью:

git clone - рек ку си и н н р //www.texashampton.com/code/nfc-rfid-reader-sdk/ufr-examples-ePassport_mrtd.git

Команды。

Есливыхотитетолькобыстрыйзапуск。скачайтепроектизапуститедвоичныйисполняемыйфайлизсоответствующейпапки:

  • Для32 -разряднойверсиWindowsизапуститеwin32_releaserun_me.cmd
  • 64年ДляразряднойверсиWindowsизапуститеwin64_releaserun_me.cmd
  • для32 -разряднойверсиLinuxизапуститеlinux32_release / ePassport_mrtd
  • 64年дляразряднойверсиLinuxиначнитеlinux64_release / ePassport_mrtd。

Примерпрограммногообеспечениятребует,чтобыустройствосчитывания这里былоподключеноинастроенокПК。Никакоедругоеприложениеилислужба,использующая这里读者,недолжнабытьзапущенанакомпьютере。Послеуспешногозапуска«ПримераMRTD ePassport»программноеобеспечениезапускаетосновноймногие,какпоказанониже。

Считыватель лектронн н о л л о онн л л л о л он л л л он

”< >Теперьвыдолжнывыбратьодинизвариантов“M”или“P”,какуказановинструкцияхпоиспользованиюприложениянаэкране。

Есливывыбралиопцию«M»,вамбудетпредложеноввеститекст:

ВывыбраливведитеподложнуюстрокуMRZ,расположеннуюподP < XXXSURNAME < < FIRSTNAME <<<<<<<<<<<<<<<<<<<<<':

Введите вложенную строку у mrz。ПодвеснаястрокаMRZдолжнасостоятьиз44символов。

по т т тому у введит т вложенную ст то ку у。ПримерподчиненнойстрокиMRZможноувидетьнапервомизображении。

Впротивномслучае,есливывыбралиопцию“P”,вамбудетпредложентекст:

Вырешиливвестиномердокумента,датурожденияидатуистечениясрокадействияотдельно:

Введите ном мер док оме нта。Номер док кумента должен содержать 9 символов。

_________ ...

Введите дату рождения。Формат даты должен б б б б т т т yymmdd。

______ ...

Введите дату ис ст т ис ст с ст и и。Формат даты должен б б б б т т т yymmdd。

______ ...

по р оо му у о вв ит т а анн и е в соответствующем формат т。

,Послетогокаквыввелидействительныеданны,еприложениесообщитвамсообщение:

Прото-ключ MRZ спе ен но стано л лен。

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

Послеэтогосообщениявыможетепродолжитьоперациичтенияnfc——метки,встроеннойвePassport,ккоторойпринадлежатранеевведенныеданные。

Теперьвыможетепоместитьпаспортвполесчитывателя在这里。ПриуспешномустановлениисвязивыполучитеосновнуюинформациюоNFC——меткевполесчитывателя。Например:

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

Тип те т а: DL_GENERIC_ISO14443_4, sak = 0x??, uid[4] = ??:??:? ?

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

SAKиUIDвэтомпримеремаскируютсяимогутиметьлюбоепроизвольноезначение。ЭлектронныепаспортавсегдабудутраспознаватьсякакDL_GENERIC_ISO14443_4типтега。

Теперьвыможетевыбратьпараметрычтенияприложений:

C '——этаопциясчитываетобщиеданные(EF.COMэлементарныйфайл)изePassport。Послеуспешногочтенияданныеанализируютсяиотображаютсявследующемформате:

спе е но п о о ита。Длина ф - а - ла ??Байт

Исходные данн н и и и и и

СинтаксическийанализEF.COMнеобработанныхданных:

Версия СПД 01.07

Версия unicode 04.00.00

Список существующих групп данн н:

Найдено:EF。ДГ1

Найдено:EF。ДГ2

Найдено:EF。ДГ3

Найдено:EF。ДГ14

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

Необработанныеданныевэтомпримеремаскируютсяимогутиметьлюбоепроизвольноезначение。Присутствовалтолькотегнеобработанныхданных,ионвсегдабудетодинаковым(0 x60)。Когдавычитаетесвойсобственныйдокумент,выполучаетеегофактическиенеобработанныеданныездесь。ПодробнееоверсииСПДиверсииUNICODEвыможетепрочитатьвдок кумент ИКАО 9303, с аст т 10

Заверсиями摩门教的UNICODEиследуетсписокгруппданных,содержащийсявePassport。Обязательными вл тс тол ко dg1 и dg2。ВсеостальныегруппыданныхмогутприсутствоватьилиотсутствоватьвконкретномMRTD。

年代——этотпараметрсчитываетобъектбезопасностидокумента(EF。所以基本文件)исохраняетеговдвоичныйфайл,путьиимякотороговыдолжныввестипризапросе。ОбъектбезопасностидокументасодержитцифровуюподписьвстандартномформатеPKCS # 7CMS.НаличиеEF。ТАК на MRTD вл ет об об зател н。

D

1 '- - - - - - - - - - - - - - - - - - - -DG1,разберитеегоиотобразитенеобработанныеипроанализированныеданныевследующемформате:

ЭФ。спе о о о ита。Длина ф - а - ла ??Байт

Необработанныеданные:

61 хх хх хх

  1. xx xxXx Xx Xx

Простой синтакси и ески анализ ef。Необработанные данн н и и е dg1:

Код документа: P (passsport)

Государствоилиорганизация,выдавшиедокумент:? ?

Имя владел а: ФАМИЛИЯ first_name

Номер документа: ?????????

Национальность:? ?

Дата рождения (дд.ММ.гггг.): ????。????。

Секс:? ?

Датаистечениясрокадействия(дд。ММ。гггг .): ??.??.????.

Дополнительные данн

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

Необработанныеданныевэтомпримеремаскируютсяимогутиметьлюбоепроизвольноезначение。Присутствуеттолькотегнеобработанныхданных,ионвсегдабудетодинаковым(0 x61)。Когдавычитаетесвойсобственныйдокумент,выполучаетеегофактическиенеобработанныеданныездесь。

2》- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -DG2исохранитееговдвоичномфайле,путьиимякотороговыдолжныввестипризапросе。ЭФ。DG2содержитизображениелицадержателядокументаиявляетсяобязательным。ЭФ。DG2рядомсизображениемлицатакжеможетсодержатьбиометрическиечертылица。Подробнее о ef。Содержание dg2 вы можете п о о итат т вдок кумент ИКАО 9303, с аст т 10

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ДГ2до。ВэтомслучаеизфайлаMRTDизвлекаетсятолькоизображениелицаисохраняетсявфайл,путьиимякотороговыввели。Форматизображенияопределяетсяавтоматически,ирасширениефайлаустанавливаетсявсоответствиисним。Существуетдвавозможныхформатафайловизображений,определенныхдляэтогоконтекста:JPEGилиJP2(етJPEG 2000)。

D '——этаопциясчитываетлюбуюэлементарнуюгруппуданных(EF。DG)файлаизMRTDисохраняетеговдвоичныйфайл,путьиимякотороговыдолжныввестипризапросе。ПослевыбораэтогопараметравамбудетпредложеноввестиEF。ИндексDG。Индексможетнаходитьсявдиапазонеод1то16(например,1дляEF。ГД1 ГД1 14 дл ef。ГД14)。Элементарныйфайл,которыйвыхотитепрочитать,долженбытьуказанвспискEF.COMгеруппданных。

Чтениенекоторыхнеобязательныхэлементарныхфайлов,особенносодержащихбиометрическиеданны,етребуетспециальныхмеханизмовбезопасности,которыевыходятзарамкиданногодокумента。

Текущаяверсия”ePassport MRTD榜样”- 1.0изависитотбиблиотекиuFCoderверсии5.0.12ипрошивки这里версии5.0.22。

Baidu
map