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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline RybalkoAA  
#1 Оставлено : 16 февраля 2021 г. 13:55:15(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Добрый день!
Подскажите, пожалуйста, где можно найти пример импорта PFX-контейнера.
В описании последнего релиза указана данная возможность, однако по всем исходникам непосредственно импорт не найден.
Был найден модуль PfxReaderExample, но тогда требуется пояснение, как это использовать для импорта.
Offline Евгений Афанасьев  
#2 Оставлено : 17 февраля 2021 г. 15:32:08(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 583 раз в 554 постах
Добрый день.
Автор: RybalkoAA Перейти к цитате
Был найден модуль PfxReaderExample, но тогда требуется пояснение, как это использовать для импорта.

Верно, в составе ACSPClientApp есть этот пример. В нем производится чтение ключей из PFX, зафиксированного в коде. Полученные из PFX ключ и сертификат(ы) могут быть сохранены в другое хранилище, например, HDIMAGE.

Offline RybalkoAA  
#3 Оставлено : 17 февраля 2021 г. 16:21:32(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Мы так и предположили.
Тогда вопрос следующий:
Я успешно создаю в своем приложении:

Код:
ByteArrayInputStream in = new ByteArrayInputStream(pfx_content);
KeyStore pfxStore = KeyStore.getInstance(JCSP.PFX_STORE_NAME, JCSP.PROVIDER_NAME);


Однако далее на:
Код:
pfxStore.load(in, password);

приложение крашится. Как понять или посмотреть, в чем дело?
Offline Евгений Афанасьев  
#4 Оставлено : 17 февраля 2021 г. 18:33:27(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 583 раз в 554 постах
ACSP переустановили?
Offline RybalkoAA  
#5 Оставлено : 18 февраля 2021 г. 9:23:07(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Не устанавливал. Это обязательно?
Нет ли какого-то аналога метода copyContainerFromDirectory, но для PFX? Мы его используем для загрузки контейнера из ZIP.
Offline Евгений Афанасьев  
#6 Оставлено : 18 февраля 2021 г. 10:18:09(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 583 раз в 554 постах
Автор: RybalkoAA Перейти к цитате
Не устанавливал. Это обязательно?
Нет ли какого-то аналога метода copyContainerFromDirectory, но для PFX? Мы его используем для загрузки контейнера из ZIP.

ACSPClientApp без ACSP не работает. Если обновили ACSPClientApp, то и ACSP надо переустановить.
Аналога copyContainerFromDirectory нет, copyContainerFromDirectory - это самописный метод для простого копирования файлов из одного места в другое.
В ACSP и в JInitCSP.aar есть FileExplorerActivity - класс проводника, пример:
Код:

    /**
     * Разделитель для задания фильтра расширений.
     */
    public static final String FILE_FILTER_SEP = ";";
    /**
     * Выбор только папки или файла.
     */
    public static final String INTENT_EXTRA_IN_ONLY_DIRS = "onlyDirs";
    /**
     * Отображение скрытых объектов.
     */
    public static final String INTENT_EXTRA_IN_SHOW_HIDDEN = "showHidden";
    /**
     * Фильтр расширений файлов, заданный с помощью
     * разделителя {@link #FILE_FILTER_SEP}.
     */
    public static final String INTENT_EXTRA_IN_FILE_FILTER = "fileFilter";
    /**
     * Выбранный объект (путь к файлу или папке).
     */
    public static final String INTENT_EXTRA_OUT_CHOSEN_OBJECT = "chosenObject";

Код:

    Intent intent = new Intent(this, FileExplorerActivity.class); // или использовать "ru.cprocsp.ACSP.util.FileExplorerActivity"
    intent.putExtra(FileExplorerActivity.INTENT_EXTRA_IN_ONLY_DIRS, true); // true - только папки
    startActivityForResult(intent, FILE_SELECT_CODE);
    ...
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {

        switch (requestCode) {

            case FILE_SELECT_CODE: {

                if (resultCode == Activity.RESULT_OK && data != null) {

                    String chosenPath = data.getStringExtra(FileExplorerActivity.INTENT_EXTRA_OUT_CHOSEN_OBJECT); // путь к папке или файлу
                    // копирование
                }
            }
        }
    }
Offline RybalkoAA  
#7 Оставлено : 18 февраля 2021 г. 19:27:15(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Спасибо.
Уточню еще раз: в примере ACSPInClientApp (без внешнего ACSP) реализовать импорт из PFX на текущий момент нельзя?
Offline Евгений Афанасьев  
#8 Оставлено : 18 февраля 2021 г. 19:30:31(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 583 раз в 554 постах
Можно, только в ACSPInClientApp нет такого примера. Можно читать PFX, как удобно (перенеся его откуда-то - в виде потока, параметра со base64-строкой и др.), после чего передать в KeyStore с типом PFXSTORE, как в примере в ACSPClientApp.
Offline RybalkoAA  
#9 Оставлено : 20 февраля 2021 г. 11:09:23(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Прошу простить, не понимаю, о каком примере речь.
Я выше привел кусок кода, который не работает без установленного ACSP.
Далее спросил, можно ли загрузить PFX без ACSP.
Поясните, пожалуйста, какой пример PFXSTORE Вы имеет ввиду?
Offline Евгений Афанасьев  
#10 Оставлено : 20 февраля 2021 г. 11:29:14(UTC)
Евгений Афанасьев

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

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

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

Прошу простить, не понимаю, о каком примере речь.

Автор: RybalkoAA Перейти к цитате

Был найден модуль PfxReaderExample

О том же примере, что был упомянут в начале.
Автор: RybalkoAA Перейти к цитате

Я выше привел кусок кода, который не работает без установленного ACSP.

Автор: Евгений Афанасьев Перейти к цитате

ACSPClientApp без ACSP не работает. Если обновили ACSPClientApp, то и ACSP надо переустановить.

Автор: RybalkoAA Перейти к цитате

Далее спросил, можно ли загрузить PFX без ACSP.

Да, например, можно пример PfxReaderExample из ACSPClientApp перенести в ACSPInClientApp. ACSPInClientApp - это пример со встроенным провайдером и не требует ACSP.
Автор: RybalkoAA Перейти к цитате

Поясните, пожалуйста, какой пример PFXSTORE Вы имеет ввиду?

Автор: Евгений Афанасьев Перейти к цитате

передать в KeyStore с типом PFXSTORE

PFXSTORE - это тип. В примере вы его и использовали для чтения PFX.

Offline RybalkoAA  
#11 Оставлено : 20 февраля 2021 г. 16:05:34(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Ну подождите, давайте еще раз, я встраиваю этот код к себе в приложение, а не запускаю ACSPInClientApp.
И приложение мрачно крашится на
Код:
pfxStore.Load

Вы говорите, что это не работает без ACSP.
А я в свою очередь спрашиваю, можно ли импортировать PFX без ACSP.
А Вы мне опять говорите "используйте этот пример" =)
Я не могу, пч он крашится))
Так как мне в своем приложении импортировать PFX?
Offline Евгений Афанасьев  
#12 Оставлено : 20 февраля 2021 г. 16:15:49(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 583 раз в 554 постах
Автор: RybalkoAA Перейти к цитате
Ну подождите, давайте еще раз, я встраиваю этот код к себе в приложение, а не запускаю ACSPInClientApp.
И приложение мрачно крашится на
Код:
pfxStore.Load

Вы говорите, что это не работает без ACSP.
А я в свою очередь спрашиваю, можно ли импортировать PFX без ACSP.
А Вы мне опять говорите "используйте этот пример" =)
Я не могу, пч он крашится))
Так как мне в своем приложении импортировать PFX?

Ваше приложение имеет внутри наше sdk, как ACSPInClientApp? Если да, то берите пример и обновите наш sdk.
Если приложение без sdk внутри, то есть как ACSPClientApp, то надо устанавливать актуальный ACSP.
Offline RybalkoAA  
#13 Оставлено : 20 февраля 2021 г. 17:06:21(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Да, наше приложение использует CryptoPro SDK, и это SDK обновлено на последнюю версию (используются несколько .aar вместо многих .jar).
Я поэтому и спрашиваю, как понять, почему крашится?
Offline Евгений Афанасьев  
#14 Оставлено : 20 февраля 2021 г. 17:16:08(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 583 раз в 554 постах
В последнем sdk всё сразу включено в SharebLibrary.aar - jar-файлы, конфиг, so-библиотеки. Может быть, у вас остались so-библиотеки и др. файлы от старого sdk?
Offline RybalkoAA  
#15 Оставлено : 24 февраля 2021 г. 10:06:06(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Вроде бы не осталось.
Прикладываю скрины краша.
2021-02-24_09-04-19.png (163kb) загружен 9 раз(а). 2021-02-24_09-05-21.png (158kb) загружен 9 раз(а).
Offline lepestova  
#16 Оставлено : 24 февраля 2021 г. 12:55:45(UTC)
lepestova

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

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

Поблагодарили: 1 раз в 1 постах
Добрый день.
Проверила корректность работы примера PfxReaderExample следующим образом:
1. в приложение со встроенным провайдером ACSPInClientApp (android-csp-5.0.42324\examples\ACSPInClientApp - данное приложение не требует дополнительной установки приложения ACSP, т.к. содержит все необходимые библиотеки провайдера у себя в папке ACSPInClientApp\libs) скопировала пример PfxReaderExample (из приложения android-csp-5.0.42324\examples\ACSPClientApp) в папку ACSPInClientApp\src\main\java\ru\CryptoPro\ACSPInClientApp\examples;
2. в класс MainActivity после строки 96 добавила следующие строки:
Logger.INSTANCE.append("*** 3. PFX reader example ***");
PfxReaderExample pfxReaderExample = new PfxReaderExample();
pfxReaderExample.execute();
3. на эмулятор Nexus 5 API 29 x86 установила ACSPInClientApp и запустила примеры. Пример "PFX reader example" корректно выполнился.

Прошу проверить корректность встраивания провайдера в ваше приложение (обратите внимание на п. 1 и п.3 документа android-csp-5.0.42324\examples\Doc\How_to_build_android_examples.docx, а также на либы в папке ACSPInClientApp\libs и параметр "android:extractNativeLibs="true" файла AndroidManifest.xml) или предлагаю попробовать собрать ACSPInClientApp с примером PfxReaderExample так, как описано выше.

PfxReaderExample.png (110kb) загружен 3 раз(а).

Отредактировано пользователем 24 февраля 2021 г. 12:57:15(UTC)  | Причина: Не указана

Offline RybalkoAA  
#17 Оставлено : 24 февраля 2021 г. 13:51:12(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Нативки добавлены, доп.пакеты указаны.
К тому же, всё работает, кроме этого нового режима. Т.е. подпись и пр. работает.
По приложенной детализации ошибки что-то видно?
Offline lepestova  
#18 Оставлено : 25 февраля 2021 г. 12:10:43(UTC)
lepestova

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

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

Поблагодарили: 1 раз в 1 постах
Добрый день.
Такая ошибка может быть, если используется старая библиотека libcspjni.so.
Прошу попробовать у себя собрать и запустить приложение ACSPInClientApp с примером PfxReaderExample. Проект ACSPInClientApp с примером PfxReaderExample находится тут - https://file.cryptopro.r...jBYmKSEdfSj/examples.zip
Offline RybalkoAA  
#19 Оставлено : 15 марта 2021 г. 13:25:42(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Добрый день.
Прошу простить за задержку.
Действительно, дело оказалось в старых jniLibs, после их удаления pfxStore.load проходит успешно, спасибо.
Однако возник следующий затык.
Для любых контейнеров, в том числе и для тестового из PfxReaderExample, всегда PrivateKey получается null.
Т.е.
Код:
PrivateKey privateKey = (PrivateKey) pfxStore.getKey(alias, null);
всегда возвращает пусто.
При этом сам сертификат достается корректно.
Подскажите, пожалуйста, как корректно получить PrivateKey?
Offline RybalkoAA  
#20 Оставлено : 19 марта 2021 г. 16:17:32(UTC)
RybalkoAA

Статус: Участник

Группы: Участники
Зарегистрирован: 16.02.2021(UTC)
Сообщений: 21
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Коллеги, кто-то может подсказать, почему privateKey может получаться null?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.