Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline alex712  
#1 Оставлено : 5 декабря 2014 г. 8:17:18(UTC)
alex712

Статус: Новичок

Группы: Участники
Зарегистрирован: 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]

Offline Евгений Афанасьев  
#2 Оставлено : 5 декабря 2014 г. 10:16:41(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline alex712  
#3 Оставлено : 5 декабря 2014 г. 10:52:12(UTC)
alex712

Статус: Новичок

Группы: Участники
Зарегистрирован: 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>
Offline Евгений Афанасьев  
#4 Оставлено : 5 декабря 2014 г. 10:55:58(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,962
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Попробуйте run-as <app.package>
Offline alex712  
#5 Оставлено : 5 декабря 2014 г. 11:08:27(UTC)
alex712

Статус: Новичок

Группы: Участники
Зарегистрирован: 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
Offline Евгений Афанасьев  
#6 Оставлено : 5 декабря 2014 г. 11:22:38(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,962
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Можете попробовать немного модифицировать пример, допустим, PrintCertificateContentExample, так, чтобы выбирался ваш контейнер (сертификат)?
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
alex712 оставлено 05.12.2014(UTC)
Offline alex712  
#7 Оставлено : 5 декабря 2014 г. 13:07:27(UTC)
alex712

Статус: Новичок

Группы: Участники
Зарегистрирован: 05.12.2014(UTC)
Сообщений: 7

Сказал(а) «Спасибо»: 3 раз
Модифицировал. Сертификат отображается. Но проблема решилась:
Обратил внимание что сертификат, который вернуло приложение не совпадает с тем, который нужно вернуть.
Поэтому еще раз проверил наличие сертификата, уже предварительно почистив все хранилища, оказалось подгружался не тот сертификат.

Попробовал разобраться в причинах: оказалось при генерации контейнера с файлами header.key и тд., я не привязал сертификат к ним, думая что он вшит в pfx. Как оказалось там присутствовала какая-то заглушка: сертификат с пустым телом.

Импортировал все по новой, заработало, только не понимаю почему нигде не запрашивается пароль, который я указал при генерации о_О
Offline alex712  
#8 Оставлено : 5 декабря 2014 г. 13:07:40(UTC)
alex712

Статус: Новичок

Группы: Участники
Зарегистрирован: 05.12.2014(UTC)
Сообщений: 7

Сказал(а) «Спасибо»: 3 раз
Спасибо за поддержку!
Offline Евгений Афанасьев  
#9 Оставлено : 5 декабря 2014 г. 13:10:33(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,962
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Автор: alex712 Перейти к цитате

только не понимаю почему нигде не запрашивается пароль, который я указал при генерации о_О

Пароль запрашивается непосредственно при операциях с закрытым ключом.
Offline alex712  
#10 Оставлено : 5 декабря 2014 г. 14:51:34(UTC)
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 и поэтому что-то идет не так?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.