Проверьте PIN-код бельгийской EID-карты на считывателе с PINPAD
Все мои попытки проверить PIN-код на считывателе PINPAD заканчиваются неудачей, вот моя ситуация:
Настроить
- Бельгийская EID карта;
- Vasco DIGIPASS 875, подключенный по Bluetooth;
- Приложение для Android с использованием SDK от Vasco.
ситуация
Я использовал команду APDU для выбора и чтения файлов, для настройки безопасной среды (MSE: SET), и после многочисленных исследований и объединения различных решений из различной документации я могу заставить читателя запросить мой PIN-код. Но с моей командой псевдо-APDU я получаю ответ 69|C#. Тот же процесс (чтение файлов, установка защищенной среды и проверка PIN-кода) отлично работает на USB-ридере без PINPAD, поэтому я предполагаю, что команда APDU в порядке, но не предшествующая команда псевдо-APDU.
Используемая документация
Документация BEID, спецификация PC/SC часть 10 (2.5.2) и дополнение (2.2.1) и устройства USB Smart Card для главы с 6.1.11.3 по 6.1.11.6.
Что я поняла?
Первая часть должна быть FF C2 01 06
для прямой проверки PIN-кода на считывателе с последующим размером последующих данных. Далее следует структура из PC/SC часть 10, с:
- Тайм-аут 1 и 2 (
00
по умолчанию); - Формат (должен быть
89
для меня так и должно быть10001001
для PIN-кода смещения в 1 байт, выравнивание по левому краю и BCD); - Формат блока PIN (должен быть
48
потому что включены 4 бита и 8 байт для блока PIN); - Формат длины PIN (
04
: Смещение 4 бита в блоке PIN); - Мин. / Макс. Длина PIN:
040C
(но так не сработало,0404
обязательно на работу); - Условие проверки
02
для кнопки ОК; - Количество сообщений:
01
использовать тот в команде; - Язык
0409
для английского; - Сообщение для отображения
00
для ввода PIN-кода; 000000
потому что это поле не используется;- Длина последней команды APDU для передачи после форматирования с помощью PIN-кода (
0000000D
это мое предположение); - А затем команда APDU:
0020000108FFFFFFFFFFFFFFFF
Результаты
Я несколько раз менял некоторые значения, в которых я не был так уверен (2, 3, 4, 11 и 12 для уже присутствующих или не дополняющих символов), но безуспешно, иногда просто разные коды результата.
Что я здесь не так делаю?
Спасибо заранее!
1 ответ
После последнего раунда исследований и проверок я обнаружил еще один пример, показывающий мою ошибку: блокировка PIN-кода! Это было 47, потому что это не включало контрольную / эффективную длину ПИН-кода. Поэтому правильный ответ для меня был:
0xFF, 0xC2, 0x01, 0x06, // Base PPDU command
0x20, // Length of the data
0x00, // timeout
0x00, // timeout
0x89, // format
0x47, // PIN block
0x04, // PIN length format
0x04, // Min pin size
0x04, // Max pin size
0x02, // Entry validation condition
0x01, // Number of messages to display
0x04, 0x09, // English
0x00, // Message "Enter pin"
0x00, 0x00, 0x00, // Non significant here
0x00, 0x00, 0x00, 0x0D, // Length of the apdu once formatted
0x00, 0x20, 0x00, 0x01, // APDU command VERIFY
0x08, // APDU command Data length
0x20, // APDU command Control data + Effective PIN length
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF // APDU command PIN + filler