Java Card API
Java Card API обеспечивает набор пользовательских классов
для программирования смарт-карт в соответствии с моделью ISO
7816. API содержит три базовых пакета и один дополнительный
пакет для криптографии. Базовые пакеты: java.lang, javacard.framework,
и javacard.security . Дополнительный пакет есть javacardx.crypto.
В основном, пакеты построены на основе соответствующих пакетов
полной спецификации Java. Дополнительные методы включены для
поддержки стандарта ISO 7816.
Пакет java.lang
Пакет java.lang есть строгое подмножество одноименного пакета
в полной спецификации Java. Поддерживаются классы Object ,
Throwable, а также некоторые исключительные ситуации, такие
как IndexOutOfBoundsException,
NullPointerException и т.п.
Для поддерживаемых классов реализованы далеко не все методы
из полной спецификации Java. Например, класс Object поддерживает
только конструкторы по умолчанию. Вместе с тем, идеология
языка полностью сохраняется. Так класс Object является корневым
объектом для всех классов, а класс Throwable является общим
предком для всех исключений.
Пакет javacard.framework
Пакет javacard.framework является основным для реализации
логики апплетов. Именно в этом классе определяется базовый
класс Applet, который поддерживает оболочку для исполнения
апплетов в среде JCRE. Этот класс является аналогом класса
Applet в полной спецификации Java. Пользовательский класс
должен расширять этот базовый класс и переопределять его методы
для реализации собственной бизнес-логики. Как и любой постоянный
объект, после запуска, апплет будет все время находиться на
карте. Внутри одной карты может находиться несколько апплетов.
Каждый апплет (класс) может быть представлен несколькими объектами
данного типа.
Другим важным классом пакета является класс APDU. Этот класс
обеспечивает поддержку коммуникационного протокола. Иными
словами класс APDU обеспечивает передачу данных между
апплетом и хост-программой. Два стандартных протокола именуются
T=0 и T=1. APDU класс позволяет скрыть реализацию протоколов
от апплета.
Класс java.lang.System не поддерживается в Java Card. Вместо
этого платформа Java Card поддерживает класс javacard.framework.JCSystem,
который обеспечивает интерфейс для системных функций, таких
как управление исполнением апплета, управление ресурсами и
транзакциями, а также передача данных между апплетами.
Другим важным классом пакета является такой класс как PIN.
PIN (personal identification number) используется для реализации
паролей.
Пакет javacard.security
Пакет обеспечивает базовую оболочку для криптографических
функций. Пакет базируется на стандартном пакете Java java.security.
Пакет javacard.security определяет базовый класс keyBuilder
и различные интерфейсы, используемые для вычисления ключей
в симметричных (DES) и асимметричных (DSA, RSA) алгоритмах.
Также поддерживаются абстрактные базовые классы RandomData
, Signature и MessageDigest, которые используются для генерации
случайных чисел и цифровых подписей.
|