﻿[ru]
1. Введение
Pkcs11Sample-SM-CPro -- это проект, содержащий пример обмена данными с Рутокен по защищенному каналу, реализованному с использованием криптографических функций Крипто-Про CSP, в устройствах с операционной системой Android через интерфейс PKCS#11 (реализованный в библиотеке librtpkcs11ecp.so) c использованием механизма JNA.
Подробнее о технологии защищенного канала взаимодействия с токеном по адресу: http://dev.rutoken.ru/pages/viewpage.action?pageId=10059873

2. Как собрать пример
Внимание! Для успешной сборки примера в проект необходимо установить дополнительные бинарные компоненты: библиотеку librtpkcs11ecp.so (см. п. 3) и бинарные модули Крипто-Про (см. п. 5).
Для сборки примера необходимо, чтобы были установлены и настроены Android SDK (http://developer.android.com/sdk/index.html) и система сборки Gradle (http://www.gradle.org/downloads) (подробнее http://developer.android.com/sdk/installing/studio-build.html). 
Для сборки из консоли выполните:
~/Pkcs11Sample-SM-CPro$> gradle build
Для сборки при помощи Android Studio, откройте проект, используя следующую последовательность обращений к меню:
"File">"Import Project...": "~/Pkcs11Sample-SM-CPro/build.gradle"

3. Установка/обновление библиотеки librtpkcs11ecp.so
Следует заметить, что, в случае, если пример был распространен вне комплекта разработчика Рутокен (rtSDK), библиотека librtpkcs11ecp.so не распространяется с примером. Расположение библиотеки в  комплекте разработчика Рутокен: Libs/android/native/pkcs11-sm-cryptopro/librtpkcs11ecp.so
Поместите библиотеку librtpkcs11ecp.so по пути:  ~/Pkcs11Sample-SM-CPro/app/libs/librtpkcs11ecp.so.

4. Обновление бинарных модулей поддержки механизма JNA
Для обновления поместите модули поддержки механизма JNA, полученные из дистрибутива JNA (https://github.com/twall/jna/releases) по пути:
~/Pkcs11Sample-SM-CPro/app/libs/jna.jar
~/Pkcs11Sample-SM-CPro/app/libs/android-arm.jar

5. Установка/обновление бинарных модулей Крипто-Про
Данный продукт использует следующие бинарные модули Крипто-Про:
- JCP.jar
- JCSP.jar
- JInitCSP.jar
- libsupport.so
Эти бинарные модули могут быть получены из SDK Крипто-Про, который можно загрузить по адресу: https://www.cryptopro.ru/products/csp/downloads#android_csp
Поместите данные бинарные модули по пути: ~/Pkcs11Sample-SM-CPro/app/libs/

6. Запуск примера
Для работы примера необходимо, чтобы на мобильном устройстве были установлены:
- сервис Рутокен (можно найти в комплекте разработчика Рутокен (rtSDK) по пути: Services/android/pcsc/service.apk)
- КриптоПро CSP (загрузка по адресу: https://www.cryptopro.ru/products/csp/downloads#android_csp)
Установку собранного примера производите либо средствами Android Sudio, либо при помощи утилиты "adb install"

Замечание
Этот продукт содержит программное обеспечение, разработанное IAIK of Graz University of Technology.

Copyright Aktiv Co. 2014.

[en]
1. Introduction
Pkcs11WithSM-CPro is a sample project to access Rutoken through rtPKCS11ECP library built with SM support using JNA.
For more information about trusted data channel please visit http://dev.rutoken.ru/pages/viewpage.action?pageId=10059873

2. How to build
Warning! To build the sample successfully one has to install additional binary components: rtPKCS11ECP library (see p. 3) and CryptoPro binaries (see p. 5).
To build Pkcs11Sample-SM-CPro you have to get Android SDK (http://developer.android.com/sdk/index.html) and Gradle (http://www.gradle.org/downloads) installed (more information at http://developer.android.com/sdk/installing/studio-build.html).
To build sample from console run:
~/Pkcs11Sample-SM-CPro$> gradle build
To build sample from Android Studio, use this option:
"File">"Import Project...": "~/Pkcs11Sample-SM-CPro/build.gradle"

3. Setting/updating rtPKCS11ECP native library
In case the sample has been distributed without Rutoken SDK, the project does not contain rtPKCS11ECP library. rtPKCS11ECP library may be found in Rutoken SDK at: Libs/android/native/pkcs11-sm-cryptopro/librtpkcs11ecp.so.
To set rtPKCS11ECP library you are to place it to ~/Pkcs11Sample-SM-CPro/app/libs/librtpkcs11ecp.so.

4. Updating JNA binaries
To update JNA you are to replace ~/Pkcs11Sample-SM-CPro/app/libs/jna.jar and ~/Pkcs11Sample-SM-CPro/app/libs/android-arm.jar taken from dist directory of JNA distribution (https://github.com/twall/jna/releases).

5. Setting/updating CryproPro binaries
The project uses binaries distributed with CryptoPro SDK:
- JCP.jar
- JCSP.jar
- JInitCSP.jar
- libsupport.so
The binaries can be downloaded from https://www.cryptopro.ru/products/csp/downloads#android_csp.
Place these binaries at: ~/Pkcs11Sample-SM-CPro/app/libs/

6. Running sample
For the sample being completely functional be sure to have installed:
- Rutoken service (can be found in Rutoken SDK (rtSDK) at: Services/android/pcsc/service.apk)
- CryptoPro CSP (download from https://www.cryptopro.ru/products/csp/downloads#android_csp)
Built sample can be installed either with Android Studio or using "adb install" console utility.

Notice
This product includes software developed by IAIK of Graz University of Technology.

Copyright Aktiv Co. 2014.
