Для получения комплекта разработчика JC-Mobile SDK Android оформите заявку.
jcPKCS11-2.jar, jna-min.jar;libjcPKCS11-2.so, libgti_jni.so, libjnidispatch.so, libjcpcsclite.so;libjcPKCS11-2.so, libgti_jni.so, libjnidispatch.so, libjcpcsclite.so.Каталог содержит примеры по работе с Единой библиотекой PKCS #11.
Полный список примеров представлен в разделе Список примеров.
Для работы с устройствами JaCarta используется Java-обертка над единой библиотекой PKCS #11, предоставляющая высокоуровневый интерфейс (см. API Единой библиотеки PKCS #11) для взаимодействия по стандарту PKCS #11 v2.30.
Рассмотрим пример встраивания в приложение проект которого создан в Android Studio.
Шаги по интеграции в проект:
В папке проекта перейти в папку app, в ней создать папку libs, если она еще не существует и скопировать в нее файлы common.jar, jcPKCS11-2.jar и jna-min.jar.
Перейти в папку app/src/main, в ней создать папку jniLibs, если она еще не существует и скопировать в нее папки arm64-v8a и armeabi-v7a.
Проект будет иметь следующую файловую структуру:
Нажать File -> Project Structure..., в открывшемся окне перейти во вкладку Dependencies, нажать на “плюс” -> JAR/AAR Dependency
В открывшемся окне для Step 1 ввести “libs” и нажать OK.
Установить из магазина приложений Google Play приложение JaCarta Service для обеспечения поддержки работоспособности устройств JaCarta.
Для администрирования смарт–карт JaCarta ГОСТ, JaCarta PKI и JaCarta PKI/ГОСТ следует использовать ПК Единый Клиент JaCarta, установленный на ПК.
Выполнить подготовку сборочного окружения
Установить java 11
Установить Android SDK
Задать переменные среды для системы автоматической сборки Gradle
Например:
export ANDROID_SDK_ROOT="/Users/username/Library/android/android-sdk"
Выполнить сборку компонента common.jar. для этого нужно выполнить следующие действия:
перейти в директорию с компонентом common и выпонить команду:
./gradlew makeJar
результат сборки окажется в папке libs в виде файла common.jar.
Выполнить сборку интересующего примера:
перейти в директорию с необходимым примером (например ./sources/GOST2_info) и выполнить команду:
./gradlew :app:assembleDebug
результат сборки (файл app-debug.apk) окажется в папке ./sources/GOST_info/app/build/outputs/apk/debug
Рассмотрим пример сборки в среде Android Studio. При установке Android Studio сама предложит установить Android SDK. Для правильной сборки папки libs и sources должны находится в одной директории.
Если сборочное окружение настроено корректно, то шаги по сборке выглядят следующим образом:
Открыть Android Studio.
Нажать Open an Existing Project (Открыть существующий проект).
Открыть проект common.
Собрать компонент common.jar. Для этого открыть файл сборки build.gradle в Android Studio, в открывшемся файле нажать на зеленую стрелочку рядом с задачей makeJar -> “Run ‘common [makeJar]’”.
Открыть любой пример. Для этого можно не выходя из проекта common нажать: File -> Open... и выбрать интересующий проект.
Необходимо подключить смартфон, с включенными на нем режимами отладки и установки по USB, а также он должен быть разблокирован.
Если папки libs (папка с библиотеками и Java-оберткой) и sources (папка с примерами) лежат в одной директории, то все готово для запуска примера.
Чтобы запустить пример из Android Studio надо нажать на зеленую стрелочку в правом верхнем углу, либо комбинацию клавиш Shift+F10.
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 – создание, поиск и удаление бинарных объектов.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 – удаление лицензий с апплета.