Форум КриптоПро
»
Средства криптографической защиты информации
»
Android
»
Не возвращается сертификат закрытого ключа, либо пишет что неверный пароль.
Статус: Новичок
Группы: Участники
Зарегистрирован: 05.12.2014(UTC) Сообщений: 7
Сказал(а) «Спасибо»: 3 раз
|
Добрый день! Есть такая проблема: У меня есть набор ключей для подписи, они вроде как успешно добавляются в хранилище, но при попытке использовать их возникает ошибка в стиле что-то типа: неверный пароль. Набор ключей выглядит так:test.000/ - header.key - masks.key - masks2.key - name.key - primary.key - primary2.key Добавляю их в хранилище таким образом:Код:CSPTool localCSPTool = new CSPTool(context);
//Создаю путь внутри приложения
String str = localCSPTool.getAppInfrastructure().getKeysDirectory() + File.separator + userName2Dir(context);
File dirs = new File(str, directory.getName());
dirs.mkdirs();
//Получаю список ключей внутри директории
File[] keys = directory.listFiles();
for (int i = 0; i < keys.length; i++) {
File key = keys[i];
if (!key.getName().equals(".") && !key.getName().equals("..")) {
//Добавляю их туда
RawResource.writeStreamToFile(new FileInputStream(key), dirs.getPath(), key.getName());
}
}
При вызове:Код:KeyStore keyStore = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME);
keyStore.load(null, null);
if (keyStore.aliases().hasMoreElements())
return keyStore.aliases().nextElement();
else
return null;
Мне возвращается алиас только-что добавленного ключа. А вот при получении этого ключа и сертификата начинаются ошибки. Получаю ключ так:Код:KeyStore keyStore = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME);
keyStore.load(null, null);
KeyStore.ProtectionParameter protectedParam = new KeyStore.PasswordProtection(password.toCharArray());
JCPPrivateKeyEntry entry = (JCPPrivateKeyEntry) keyStore.getEntry(alias, protectedParam); //Исключение с текстом, что неверный пароль.
PrivateKey privateKey = entry.getPrivateKey();
X509Certificate certificate = (X509Certificate) entry.getCertificate();
Так же пробовал такой способ:Код:keyStore.getKey(alias, password.toCharArray()); //Ключ возвращается (при любом пароле)
keyStore.getCertificate(alias); //Всегда null
Перед всем этим выполнил следующий код:Код:CSPConfig.init(context);
boolean initOk = initCode == CSPConfig.CSP_INIT_OK;
if (initOk) {
if (Security.getProvider(JCSP.PROVIDER_NAME) == null) {
Security.addProvider(new JCSP());
}
if (Security.getProvider(ru.CryptoPro.ssl.Provider.PROVIDER_NAME) == null) {
Security.addProvider(new ru.CryptoPro.ssl.Provider());
}
cpSSLConfig.setDefaultSSLProvider(JCSP.PROVIDER_NAME);
}
А так же при старте/возобновлении активити:Код:CSPConfig.registerActivityContext(this);
Помогите пожалуйста! Что я забыл сделать? Пароль точно верный, проверил его, добавив контейнер ключей в тестовое приложение (которое поставляется с библиотекой). Сертификат тоже не отсутствует, также в тестовом приложении проверил что он возвращается. Есть подозрение, что я неправильно добавляю ключи в хранилище, но раз после добавления мне возвращается корректный алиас, то я не знаю что и думать =(( Отредактировано пользователем 5 декабря 2014 г. 9:13:03(UTC)
| Причина: возвращается корректный [b]сертификат[/b] - заменил на [b]алиас[/b]
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,962 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Здравствуйте. Не на устройстве проверяли контейнер (CSP, JCP)? Пробовали копировать контейнер с помощью кнопки "Копировать" из папки /mnt/sdcard в приложении с примерами? Если зайти с помощью adb, контейнер лежит в папке /data/data/<app.package>/cprocsp/keys/<uid> ? Отредактировано пользователем 5 декабря 2014 г. 10:18:42(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 05.12.2014(UTC) Сообщений: 7
Сказал(а) «Спасибо»: 3 раз
|
Цитата:Не на устройстве проверяли контейнер (CSP, JCP)? Кроме как на устройстве - нигде, где можно его проверить? Цитата:Пробовали копировать контейнер с помощью кнопки "Копировать" из папки /mnt/sdcard в приложении с примерами? Да. Копирует: Код:**** Copy containers to the application store ***
Source directory: /mnt/sdcard/test.000
Destination directory: /data/data/ru.CryptoPro.ACSPClientApp/cprocsp/keys/10216.10216
Copy container: header.key
Copy container: masks.key
Copy container: masks2.key
Copy container: name.key
Copy container: primary.key
Copy container: primary2.key
Цитата:Если зайти с помощью adb, контейнер лежит в папке /data/data/<app.package>/cprocsp/keys/<uid> Права доступа не позволяют зайти далее: data/data/<app.package>
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,962 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Попробуйте run-as <app.package> |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 05.12.2014(UTC) Сообщений: 7
Сказал(а) «Спасибо»: 3 раз
|
Цитата:Попробуйте run-as <app.package> Зашло. Контейнер есть Код:D:\Android\android-studio\sdk\platform-tools>adb shell
shell@flo:/ $ run-as com.companyname.appproject ls /data/data/com.companyname.appproject/cprocsp/keys/10367.10367/
companyname.appproject ls /data/data/com.companyname.appproject/cprocsp/keys/10367.10367/ <
test.000
shell@flo:/ $ run-as com.companyname.appproject ls /data/data/com.companyname.appproject/cprocsp/keys/10367.10367/test.000/
/data/com.companyname.appproject/cprocsp/keys/10367.10367/test.000/ <
header.key
masks.key
masks2.key
name.key
primary.key
primary2.key
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,962 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Можете попробовать немного модифицировать пример, допустим, PrintCertificateContentExample, так, чтобы выбирался ваш контейнер (сертификат)? |
|
1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 05.12.2014(UTC) Сообщений: 7
Сказал(а) «Спасибо»: 3 раз
|
Модифицировал. Сертификат отображается. Но проблема решилась: Обратил внимание что сертификат, который вернуло приложение не совпадает с тем, который нужно вернуть. Поэтому еще раз проверил наличие сертификата, уже предварительно почистив все хранилища, оказалось подгружался не тот сертификат.
Попробовал разобраться в причинах: оказалось при генерации контейнера с файлами header.key и тд., я не привязал сертификат к ним, думая что он вшит в pfx. Как оказалось там присутствовала какая-то заглушка: сертификат с пустым телом.
Импортировал все по новой, заработало, только не понимаю почему нигде не запрашивается пароль, который я указал при генерации о_О
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 05.12.2014(UTC) Сообщений: 7
Сказал(а) «Спасибо»: 3 раз
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,962 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Автор: alex712 только не понимаю почему нигде не запрашивается пароль, который я указал при генерации о_О
Пароль запрашивается непосредственно при операциях с закрытым ключом. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 05.12.2014(UTC) Сообщений: 7
Сказал(а) «Спасибо»: 3 раз
|
Ок, ключ и сертификат получил, попробовал подписать данные, получил такую ошибку: Код:12-05 15:41:27.697 19883-19883/com.companyname.appproject E/cprocsp﹕ 15:41:27.696924 support_an_fopen:87 p:19883 t:0x0xb6f55c7b support_an_fopen("/data/data/com.companyname.appproject/cprocsp/users/global.ini", "rb") = 0x0x0 fail No such file or directory(2)
12-05 15:41:29.162 19883-19883/com.companyname.appproject E/cprocsp﹕ 15:41:29.162226 support_an_fopen:87 p:19883 t:0x0xb6f55c7b support_an_fopen("/data/data/com.companyname.appproject/cprocsp/users/10368.10368/policies.ini", "rb") = 0x0x0 fail No such file or directory(2)
12-05 15:41:29.163 19883-19883/com.companyname.appproject E/cprocsp﹕ 15:41:29.163019 support_an_fopen:87 p:19883 t:0x0xb6f55c7b support_an_fopen("/data/data/com.companyname.appproject/cprocsp/users/10368.10368/policies.ini", "rb") = 0x0x0 fail No such file or directory(2)
12-05 15:41:29.288 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: JNI CallObjectMethodV called with pending exception 'android.view.WindowManager$BadTokenException' thrown in unknown throw location
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] in call to CallObjectMethodV
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] from int ru.CryptoPro.JCSP.MSCAPI.CAPI.cryptSignHash(long, int, java.lang.String, int, byte[], int[])
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] "main" prio=5 tid=1 Runnable
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] | group="main" sCount=0 dsCount=0 obj=0x74aceeb8 self=0xb8c5e260
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] | sysTid=19883 nice=0 cgrp=apps sched=0/0 handle=0xb6fbe038
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] | state=R schedstat=( 0 0 0 ) utm=505 stm=81 core=1 HZ=100
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] | stack=0xbe748000-0xbe750000 stackSize=7MB
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #00 pc 0000448c /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+23)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #01 pc 00002d8d /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+8)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #02 pc 00259749 /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, art::DumpNativeStack::char_traits<char> >&, int, char const*, art::mirror::ArtMethod*)+84)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #03 pc 0023e62f /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, art::Thread::Dump::char_traits<char> >&) const+158)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #04 pc 000c26d3 /system/lib/libart.so (art::JniAbort(char const*, char const)+618)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #05 pc 000c2e11 /system/lib/libart.so (art::JniAbortF(char const*, char const, ellipsis)+68)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #06 pc 000c65e9 /system/lib/libart.so (art::ScopedCheck::ScopedCheck(_JNIEnv*, int, char const*)+1952)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #07 pc 000cab9f /system/lib/libart.so (art::CheckJNI::CallObjectMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list)+42)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #08 pc 00260f8c /data/app-lib/ru.cprocsp.ACSP-1/libcspjni.so (???)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #09 pc 00260b60 /data/app-lib/ru.cprocsp.ACSP-1/libcspjni.so (JniQueryPin+484)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #10 pc 00313128 /data/app-lib/ru.cprocsp.ACSP-1/libcspjni.so (CPQueryPin+92)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #11 pc 0035fff8 /data/app-lib/ru.cprocsp.ACSP-1/libcspjni.so (__float128+2588)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #12 pc 0036cf2c /data/app-lib/ru.cprocsp.ACSP-1/libcspjni.so (long+3636)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #13 pc 003663e4 /data/app-lib/ru.cprocsp.ACSP-1/libcspjni.so (char+2388)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #14 pc 003770d4 /data/app-lib/ru.cprocsp.ACSP-1/libcspjni.so (key_carrier_get_material_with_public+180)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #15 pc 00336a34 /data/app-lib/ru.cprocsp.ACSP-1/libcspjni.so (long double restrict complex+2612)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #16 pc 00394d5c /data/app-lib/ru.cprocsp.ACSP-1/libcspjni.so (OpenUserKey+224)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #17 pc 0033a74c /data/app-lib/ru.cprocsp.ACSP-1/libcspjni.so (CUK_OpenUserKey_interlocked+264)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #18 pc 0033a8d0 /data/app-lib/ru.cprocsp.ACSP-1/libcspjni.so (std::istream+252)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #19 pc 0032bb08 /data/app-lib/ru.cprocsp.ACSP-1/libcspjni.so (std::istream complex* complex+820)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #20 pc 0035e4fc /data/app-lib/ru.cprocsp.ACSP-1/libcspjni.so (std::istream* complex+88)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #21 pc 00263aec /data/app-lib/ru.cprocsp.ACSP-1/libcspjni.so (unsigned long long restrict complex+256)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #22 pc 00263be8 /data/app-lib/ru.cprocsp.ACSP-1/libcspjni.so (unsigned long long restrict complex+216)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #23 pc 0026026c /data/app-lib/ru.cprocsp.ACSP-1/libcspjni.so (Java_ru_CryptoPro_JCSP_MSCAPI_CAPI_cryptSignHash+224)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] native: #24 pc 0028e038 /data/dalvik-cache/arm/data@app@com.companyname.appproject-2.apk@classes.dex (Java_ru_CryptoPro_JCSP_MSCAPI_CAPI_cryptSignHash__JILjava_lang_String_2I_3B_3I+200)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at ru.CryptoPro.JCSP.MSCAPI.CAPI.cryptSignHash(Native method)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at ru.CryptoPro.JCSP.MSCAPI.j.a(unavailable:-1)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at ru.CryptoPro.JCSP.MSCAPI.i.b(unavailable:-1)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at ru.CryptoPro.JCSP.MSCAPI.b.a(unavailable:-1)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at ru.CryptoPro.JCSP.Key.AbstractKeySpec.signature(unavailable:-1)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at ru.CryptoPro.JCSP.Sign.CryptoProSign.engineSign(unavailable:-1)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at ru.CryptoPro.JCSP.Sign.JCSPGostElSign.engineSign(unavailable:-1)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at java.security.Signature.sign(Signature.java:368)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at com.companyname.appproject.sign.SignAdapter.create(SignAdapter.java:476)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at com.companyname.appproject.sign.SignAdapter.sign(SignAdapter.java:186)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at com.companyname.appproject.dialogs.SignDialog.onClick(SignDialog.java:181)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at android.view.View.performClick(View.java:4598)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at android.view.View$PerformClick.run(View.java:19268)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at android.os.Handler.handleCallback(Handler.java:738)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at android.os.Handler.dispatchMessage(Handler.java:95)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at android.os.Looper.loop(Looper.java:135)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at android.app.ActivityThread.main(ActivityThread.java:5070)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at java.lang.reflect.Method.invoke!(Native method)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at java.lang.reflect.Method.invoke(Method.java:372)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836)
12-05 15:41:29.289 19883-19883/com.companyname.appproject A/art﹕ art/runtime/check_jni.cc:65] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631)
Я правильно понимаю что проблема в: android.view.WindowManager$BadTokenException и поэтому что-то идет не так?
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
Android
»
Не возвращается сертификат закрытого ключа, либо пишет что неверный пароль.
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close