crypt_signature 4.1.0 crypt_signature: ^4.1.0 copied to clipboard
crypt
Flutter-плагин для подписи данных с помощью ГОСТ сертификатов электронной подписи #
Описание #
Плагин принимает сертификаты в формате PKCS12 .pfx
Приватный ключ должен быть помечен как экспортируемый
Поддерживаемые алгоритмы для Android: GOST R 34.10-2001, GOST R 34.10-2012, GOST R 34.10-2012 Strong
Поддерживаемые архитектуры для Android: arm64-v8a, armeabi-v7a
Поддерживаемые алгоритмы для iOS: GOST R 34.10-2012
Подключение плагина к Android проекту #
-
Скопировать
.aar
библиотеки изandroid/libs
плагина к себе в проект вandroid\app\libs
-
Добавить в
AndroidManifest.xml
<application android:extractNativeLibs="true"></application>
- Добавить в
gradle.properties
android.bundle.enableUncompressedNativeLibs = false
android.enableR8=false
- Добавить в
build.gradle
minSdkVersion 24
buildTypes {
release {
shrinkResources false
minifyEnabled false
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/Digest.CP'
exclude 'META-INF/Sign.CP'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/LICENSE.txt'
doNotStrip "*/arm64-v8a/*.so"
doNotStrip "*/armeabi/*.so"
}
dependencies {
implementation 'com.google.android.material:material:1.2.0-alpha03'
implementation fileTree(dir: 'libs', include: '*.aar')
}
- Создать файл
proguard-rules.pro
вandroid/app
-keep public class ru.CryptoPro.*
Подключение плагина к iOS проекту #
Добавить папки en.lproj, locale, ru.lproj
и файлы kis_1, root.sto, config.ini, license.enc
из ios/Resources
плагина к себе в проект через Xcode
Методы #
-
Подписать данные
CryptSignature.sign
Возможны два сценария работы метода:
- Если данные известны сразу
Требуется передать данные в формате Base64 в параметрdata
для подписи - Если для формирования данных нужен сертификат пользователя
Требуется передать сallbackonCertificateSelected
, который отдает вам сертификат, выбранный пользователем, и ожидает данные в формате Base64 для подписи
Метод возвращает объект класса
SignResult
, содержащий сертификат, сигнатуру в Base64 и данные, поданные на подпись - Если данные известны сразу
-
Получить список сертификатов, добавленных пользователем
CryptSignature.getCertificates
-
Очистить список сертификатов
CryptSignature.clear
Пример #
-
Требуется подписать
0J/Rg9GC0LjQvSDQstC+0YA=
SignResult signResult = await CryptSignature.sign(context, data: "0J/Rg9GC0LjQvSDQstC+0YA=");
-
Требуется сначала получить сертификат, которым будет выполняться подпись, чтобы сформировать хэш
SignResult result = await CryptSignature.sign(context, onCertificateSelected: onCertificateSelected);
Future<String> onCertificateSelected(Certificate certificate) async => "0J/Rg9GC0LjQvSDQstC+0YA=";