Как программно загрузить апплет карты Java (файл .cap) с помощью Visual C ++ / PCSC - PullRequest
4 голосов
/ 23 сентября 2010

В настоящее время я работаю над проектом, который требует от меня загрузить файл апплета приложения JavaCard (.cap) на карту JavaCard.Наша инфраструктура основана на Visual C ++ и PCSC, поэтому нам нужно загрузить один и тот же апплет в серию карт JavaCard.Кто-нибудь знает, как это можно обработать?Я имею в виду, с чего мне начать.Спасибо!

1 Ответ

3 голосов
/ 30 сентября 2010

Вы правы, что это не тривиальная работа.

Существуют различия между разными javacard, но обычно вам нужно сделать 4 вещи:

  • инициализировать безопасную связь с картой (поскольку многие javacard являются картами "глобальной платформы", им требуется безопасный канал)
  • отправить команду, говорящую "я хочу установить апплет"
  • отправить двоичные данные для устанавливаемого апплета
  • отправить команду «создать экземпляр» апплета после отправки двоичных данных

Я бы порекомендовал использовать плагин eclipse для первоначальной установки апплета, потому что вы можете видеть APDU, сгенерированные плагином для выполнения описанных выше действий. Как только вы узнаете команды APDU, которые необходимо отправить для установки апплета, вы можете напрямую отправить эти команды с помощью интерфейса PCSC из кода C ++, чтобы автоматизировать установку на большое количество карт.

Моя компания создает плагин для веб-браузера под названием Card Boss для выполнения таких действий (обмен данными по карте через pcsc) из браузера - есть веб-страница, на которой вы можете ввести свои собственные APDU и отправьте их на карту по следующему URL:

https://cardboss.cometway.com/content.agent?page_name=Card+Boss+Lab

Если вы используете наш инструмент, ваш скрипт установки апплета должен выглядеть примерно так (обратите внимание, что это скрипт для карты JCOP, использующий стандартные ключи jcop)

    MESSAGE BOX Installing applets...

    INIT CHANNEL 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f, 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f

    // INSTALL CAP: 
    SEND 80 E6 02 00 1D 10 A0 00 00 00 09 00 03 FF FF FF FF 89 10 71 00 01 08 A0 00 00 00 03 00 00 00 00 00 00 

    // LOADING CAP: 
    SEND 80 E8 00 00 FA C4 82 01 03 01 00 25 DE CA FF (snip, I removed a bunch 
of binary data representing the cap file to shorten this post, and you might
need multiple SEND commands because of limits on the size of APDUS)

    // INSTANTIATING Applet
    SEND 80 E6 0C 00 1E 05 63 6F 6D 65 74 07 63 6F 6D 65 74 00 01 05 00 00 00 00 00 01 00 06 C9 04 68 2C 00 03 00 00 
...