EMV - GPO с PDOL - PullRequest
       81

EMV - GPO с PDOL

0 голосов
/ 09 мая 2018

Я работаю на платформе C и хочу прочитать AFL карты. Если предыдущая команда, выберите AID, не дает мне тэг PDOL, это нормально: я могу читать AFL без проблем. Но мне нужно написать метод, который может генерировать GET OPCESSING OPTION независимо от PDOL.

Итак, вопросы:

  1. Как мне написать универсальный метод, который работает, несмотря на PDOL?
    Нужно ли мне наносить на карту каждый возможный тег?
  2. Как я могу отформатировать объект групповой политики команда с правильными данными? Посмотрите следующий пример:

SELECT AID Response PDOL: 9F 1A 02 Поэтому я должен поставить код страны терминала, в моем случае Италия: 380 Итак, вызов GPO:

80 A0 00 00 04 83 02 03 80 00

Но мой ответ 6D 00: код инструкции не поддерживается или недействителен

Где я не прав?

Я программирую на Ingenico Pos (Точка продажи).

Ответы [ 3 ]

0 голосов
/ 09 мая 2018

У вас есть два варианта:

  1. Выполнить команду с полем данных «8300» - 80 A8 00 00 02 83 00 00
  2. Выполнить команду с полем данных всех шестнадцатеричных нулей - 80 A8 00 00 04 83 02 00 00 00

Вы получаете ошибку, потому что в варианте 1 вы опускаете Le-байт C-APDU - этот байт является обязательным для всех команд CASE 4, а в варианте 2 вы даете неправильный байт INS, A0 вместо A8.

0 голосов
/ 10 мая 2018

Приятно осознавать, что вы хорошо знакомы с концепцией PDOL. Насколько я понимаю с вашим вопросом, вы можете создать команду GPO, если PDOL нет. Я думаю, что вы сомневаетесь в том, чтобы написать универсальную функцию для создания команды APDU GPO.

Прежде всего я хочу сказать вам, что если в ответе SELECT присутствует информация о PDOL, то вы должны отправить данные PDOL в APDU команды GPO, в противном случае приложение карты может выдать какую-то ошибку.

Таким образом, вы можете установить индикатор при получении PDOL в команде SELECT. Если PDOL отсутствует, вы можете просто отправить 80 A8 00 00 02 83 00 00, и если ваш индикатор указал, что PDOL требуется, просто проанализируйте PDOL и ответ SELECT и подготовьте значение для данных PDOL, если вы знаете (как вы описали в Ваш вопрос) отправить в GPO команду APDU.

Если вы не знаете, какое значение, вы можете просто заполнить шестнадцатеричные нули в поле значения.

В качестве примера: 80 A8 00 00 04 83 02 03 80 00. Это правильная команда (я исправил байт INS). Или вы также можете отправить 80 A8 00 00 04 83 02 00 00 00 (значение PDOL заменяется нулями)

Я думаю, что это объяснение может помочь вам получить ответы на оба вопроса. Попробуйте и дайте нам знать, если понадобятся дальнейшие разъяснения.

0 голосов
/ 09 мая 2018

Эмитенты карт не ставят просто метки и ожидают, что терминал предоставит данные. Вы можете получить лучшие практики (рекомендуемые теги) для каждой схемы оплаты, с которой вы сертифицируете. Кроме того, если это какой-то тег, который вы не поддерживаете, вы всегда можете заполнить нулями и продолжить.

...