Руководство по работе с SDK

Получение

Для получения комплекта разработчика JC-Mobile SDK Android оформите заявку.

Состав SDK

Каталог “libs”

Каталог содержит все необходимые библиотеки:
  • Java-обертка над единой библиотекой PKCS #11, а также библиотекой обеспечивающую механизм JNA: jcPKCS11-2.jar, jna-min.jar;
  • arm64-v8a – каталог с набором библиотек для 64-битной архитектуры Android: libjcPKCS11-2.so, libgti_jni.so, libjnidispatch.so, libjcpcsclite.so;
  • armeabi-v7a – каталог с набором библиотек для 32-битной архитектуры Android: libjcPKCS11-2.so, libgti_jni.so, libjnidispatch.so, libjcpcsclite.so.

Каталог “sources”

Каталог содержит примеры по работе с Единой библиотекой PKCS #11.

  • примеры «GOST2_...» демонстрируют работу с апплетом Криптотокен 2 ЭП;
  • примеры «PKI_...» демонстрируют работу с апплетом Laser;
  • примеры «GOST_...» демонстрируют работу с апплетом Криптотокен;
  • примеры «LICENSE_...» демонстрируют работу с апплетом Лицензионный.

Полный список примеров представлен в разделе Список примеров.

Встраивание

Для работы с устройствами JaCarta используется Java-обертка над единой библиотекой PKCS #11, предоставляющая высокоуровневый интерфейс (см. API Единой библиотеки PKCS #11) для взаимодействия по стандарту PKCS #11 v2.30.

Интеграция в приложение

Рассмотрим пример встраивания в приложение проект которого создан в Android Studio.

Шаги по интеграции в проект:

  1. В папке проекта перейти в папку app, в ней создать папку libs, если она еще не существует и скопировать в нее файлы common.jar, jcPKCS11-2.jar и jna-min.jar.

    ../../_images/android_copy_libs.jpg
  2. Перейти в папку app/src/main, в ней создать папку jniLibs, если она еще не существует и скопировать в нее папки arm64-v8a и armeabi-v7a.

    ../../_images/android_copy_jniLibs.jpg

    Проект будет иметь следующую файловую структуру:

    ../../_images/android_project_fs.jpg
  3. Нажать File -> Project Structure..., в открывшемся окне перейти во вкладку Dependencies, нажать на “плюс” -> JAR/AAR Dependency

    ../../_images/android_linked_libs.png
  4. В открывшемся окне для Step 1 ввести “libs” и нажать OK.

    ../../_images/android_add_libs_dir.jpg
  5. Установить из магазина приложений Google Play приложение JaCarta Service для обеспечения поддержки работоспособности устройств JaCarta.

Администрирование смарт-карт JaCarta

Для администрирования смарт–карт JaCarta ГОСТ, JaCarta PKI и JaCarta PKI/ГОСТ следует использовать ПК Единый Клиент JaCarta, установленный на ПК.

Работа с примерами

Сборка с помощью CLI

  1. Выполнить подготовку сборочного окружения

    • Установить java 11

    • Установить Android SDK

    • Задать переменные среды для системы автоматической сборки Gradle

      Например:

      export ANDROID_SDK_ROOT="/Users/username/Library/android/android-sdk"
      
  2. Выполнить сборку компонента common.jar. для этого нужно выполнить следующие действия:

    • перейти в директорию с компонентом common и выпонить команду:

      ./gradlew makeJar
      
    • результат сборки окажется в папке libs в виде файла common.jar.

  3. Выполнить сборку интересующего примера:

    • перейти в директорию с необходимым примером (например ./sources/GOST2_info) и выполнить команду:

      ./gradlew :app:assembleDebug
      
    • результат сборки (файл app-debug.apk) окажется в папке ./sources/GOST_info/app/build/outputs/apk/debug

Сборка с помощью IDE

Рассмотрим пример сборки в среде Android Studio. При установке Android Studio сама предложит установить Android SDK. Для правильной сборки папки libs и sources должны находится в одной директории.

Если сборочное окружение настроено корректно, то шаги по сборке выглядят следующим образом:

  1. Открыть Android Studio.

  2. Нажать Open an Existing Project (Открыть существующий проект).

  3. Открыть проект common.

  4. Собрать компонент common.jar. Для этого открыть файл сборки build.gradle в Android Studio, в открывшемся файле нажать на зеленую стрелочку рядом с задачей makeJar -> “Run ‘common [makeJar]’”.

    ../../_images/android_run_makeJar.jpg
  5. Открыть любой пример. Для этого можно не выходя из проекта common нажать: File -> Open... и выбрать интересующий проект.

    ../../_images/android_open_sample.jpg
  6. Необходимо подключить смартфон, с включенными на нем режимами отладки и установки по USB, а также он должен быть разблокирован.

  7. Если папки libs (папка с библиотеками и Java-оберткой) и sources (папка с примерами) лежат в одной директории, то все готово для запуска примера.

  8. Чтобы запустить пример из Android Studio надо нажать на зеленую стрелочку в правом верхнем углу, либо комбинацию клавиш Shift+F10.

    ../../_images/android_sample_run.png

Список примеров

В комплект разработчика JC-Mobile SDK Android входят примеры работы с апплетами:
  • Криптотокен 2 ЭП;
  • Laser;
  • Криптотокен;
  • Лицензионный.

Примеры для Криптотокен 2 ЭП

  • GOST2_info – получение информации о библиотеке, ридере, слоте и апплете;
  • GOST2_initUser – подготовка JaCarta-2 ГОСТ к работе с jcPKCS11 после инициализации устройства в ПО “АРМ разработчика”;
  • GOST2_keyPairAndCertificate2012 – создание/удаление ключевой пары ГОСТ Р 34.10–2012 (длина ключа 256 бит) и соответствующего ей сертификата;
  • GOST2_certificateInfo – получение информации о сертификатах;
  • GOST2_certificateRenewal – создания запроса на перевыпуск сертификата;
  • GOST2_signAndVerify2012 – создания и проверки подписи данных по ГОСТ Р 34.10–2012 (длина ключа 256 бит);
  • GOST2_signAndVerifyExternalHash2012 – создания и проверки подписи хэша по ГОСТ Р 34.11–2012 (длина хэш–кода 256 бит);
  • GOST2_cmsSignAndVerify2012 – создания и проверки подписи сообщения в формате CMS типа signed data с ГОСТ Р 34.10–2012 (длина ключа 256 бит);
  • GOST2_changePinUser – смена PIN-кода пользователя;
  • GOST2_unlockPinUser – разблокировка PIN-кода пользователя с помощью предъявления PUK-кода;
  • GOST2_data – создание, поиск и удаление бинарных объектов.

Примеры для Laser

  • PKI_appletStatus – получение информации о готовности апплета к использованию;
  • PKI_init – инициализация апплета и выпуск сертификата;
  • PKI_info – получение полной информации о библиотеке, слоте и электронном ключе;
  • PKI_pinUser – изменение PIN-кода пользователя;
  • PKI_certInfo – получение информации о сертификатах, размещённых в памяти электронного ключа;
  • PKI_reissue — перевыпуск сертификата;
  • PKI_delete – удаление сертификата с ключевой парой;
  • PKI_signAndVerify – создание и проверка электронной подписи;
  • PKI_CMSSignAndVerify – создание и проверка электронной подписи в формате CMS;
  • PKI_data – запись и чтение файлов в памяти электронного ключа;
  • PKI_pinAdmin – изменение PIN-кода администратора;
  • PKI_pinUserUnblock – сброс попыток предъявления PIN-кода пользователя.

Примеры для Криптотокен

  • GOST_appletStatus – получение информации о готовности апплета к использованию;
  • GOST_init – установка PIN-кода пользователя и выпуск сертификата;
  • GOST_info – получение полной информации о библиотеке, слоте и электронном ключе;
  • GOST_pinUser – изменение PIN-кода пользователя;
  • GOST_certInfo – получение информации о сертификатах, размещённых в памяти электронного ключа;
  • GOST_reissue – перевыпуск сертификата;
  • GOST_delete – удаление сертификата с ключевой парой;
  • GOST_signAndVerify – создание и проверка электронной подписи;
  • GOST_pkcs7SignAndVerify – создание и проверка электронной подписи в формате PKCS #7;
  • GOST_data – запись и чтение файлов в памяти электронного ключа;
  • GOST_encryption – зашифрование и расшифрование данных;
  • GOST_pinAdmin – изменение PIN-кода администратора;
  • GOST_pinUserUnblock – сброс попыток предъявления PIN-кода пользователя.

Примеры для апплета Лицензионный

  • LICENSE_appletStatus – получение информации о готовности апплета к использованию;
  • LICENSE_changeKey – смена ключа доступа вендора;
  • LICENSE_init – создание лицензий на апплете;
  • LICENSE_read – чтение всех лицензий;
  • LICENSE_delete – удаление лицензий с апплета.