Статус: Участник
Группы: Участники
Зарегистрирован: 05.08.2021(UTC) Сообщений: 16 Откуда: Воронеж Сказал(а) «Спасибо»: 1 раз
|
Автор: Евгений Афанасьев В последнем релизе в ACSP в панели видно имя считывателя под именем контейнера. Проверьте, что оно тоже "Aktiv Rutoken ECP 1". "Aktiv Rutoken ECP 1" - совпадает. Да и собственно я именно опросом хранилищ и находящихся в них контейнеров имя хранилища и алиас контейнера и получал. А есть ли где до пример корректного использования рутокена для подписи? Отредактировано пользователем 11 августа 2021 г. 17:21:12(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
А сертификат есть в контейнере? Просматривается в ACSP? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.08.2021(UTC) Сообщений: 16 Откуда: Воронеж Сказал(а) «Спасибо»: 1 раз
|
Автор: Евгений Афанасьев А сертификат есть в контейнере? Просматривается в ACSP? Да сертификат лежит. С этой флешкой другое приложение (КрипоАРМ ГОСТ) успешно файл подписало, но к сожалению нужно именно с внутренним провайдером (раз интенты отменили). Ошибка явно в моем коде: Возможно в указании хранилища, или задания параметров адаптера (остальное вроде 1:1 как в примерах) Код: if(useItem == 1 ){
// подключенный рутоен
alias = "Kab00";
store = "Aktiv Rutoken ECP 1";
}else {
// созданный в приложении контейнер
alias = "Test81";
store = "HDIMAGE";
}
String text = "тестовый текст";
//Указываем хранилище
KeyStoreType.init(this);
KeyStoreType.saveCurrentType(store);
ContainerAdapter adapter = new ContainerAdapter(this, alias, false);
adapter.setProviderType(ProviderType.currentProviderType());
ПС А можно ли как то получить данные о сертификатах имея данные о Хранилище и алиас Контейнера - дабы убедится что сертификат видится ? Отредактировано пользователем 11 августа 2021 г. 17:30:12(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Можете проверить так? Код:
KeyStore keyStore = KeyStore.getInstance("Aktiv Rutoken ECP 1", JCSP.PROVIDER_NAME);
keyStore.load(null, null);
Enumeration<String> aliases = keyStore.aliases();
распечатать aliases
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.08.2021(UTC) Сообщений: 16 Откуда: Воронеж Сказал(а) «Спасибо»: 1 раз
|
Автор: Евгений Афанасьев Можете проверить так? Код:
KeyStore keyStore = KeyStore.getInstance("Aktiv Rutoken ECP 1", JCSP.PROVIDER_NAME);
keyStore.load(null, null);
Enumeration<String> aliases = keyStore.aliases();
распечатать aliases
Посыпаю голову пеплом: как выяснилось я неверно вписал алиас контейнера (00 - OO), контейнер видися , но функция подписи все еще выдает ошибку, теперь: "Алгоритм ключа не соответствует алгоритму подписи" Отредактировано пользователем 11 августа 2021 г. 19:29:27(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
А как вы подписываете, какой алгоритм подписи задается у Signature? Для ключа ГОСТ 2012 и алгоритм подписи должен быть 2012. Может, у вас тут разночтения. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.08.2021(UTC) Сообщений: 16 Откуда: Воронеж Сказал(а) «Спасибо»: 1 раз
|
Автор: Евгений Афанасьев А как вы подписываете, какой алгоритм подписи задается у Signature? Для ключа ГОСТ 2012 и алгоритм подписи должен быть 2012. Может, у вас тут разночтения. С алгоритмом разобрался - да разночтение есть В аписаниии сертификата в указано ГОСТ Р 34.10-2012 (512) А algorithmSelector.getSignatureAlgorithmName() в Код:
Signature sn = Signature.getInstance(
algorithmSelector.getSignatureAlgorithmName(),
JCSP.PROVIDER_NAME);
выдает GOST3411withGOST3410EL Исправил вручную Код:
Signature sn = Signature.getInstance(
algorithmSelector.getSignatureAlgorithmName(),
JCSP.PROVIDER_NAME);
sn = Signature.getInstance(
JCP.GOST_SIGN_2012_512_NAME,
JCSP.PROVIDER_NAME);
Так отработало. Остались вопросы: как верно определить алгоритм по контейнеру ( и корректно ли его задавать так в явно Signature.getInstance без algorithmSelector.getSignatureAlgorithmName()) и как создатьполучить самого файл sig ? Отредактировано пользователем 11 августа 2021 г. 19:30:53(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
algorithmSelector.getSignatureAlgorithmName() заведен для удобства интерактивной проверки примеров, он опирается, скорее всего, на свойства списка алгоритмов на вкладке "Настройки". Определять алгоритм подписи можно по алгоритму ключа, например: Код:
String keyAlg = key.getAlgorithm();
String sigAlg = getSignatureAlgByKeyAlg(keyAlg);
String getSignatureAlgByKeyAlg(String keyAlgName) {
if (keyAlgName.equalsIgnoreCase(JCP.GOST_EL_2012_256_NAME) ||
keyAlgName.equalsIgnoreCase(JCP.GOST_DH_2012_256_NAME)) {
return JCP.GOST_SIGN_2012_256_NAME;
}
else if (keyAlgName.equalsIgnoreCase(JCP.GOST_EL_2012_512_NAME) ||
keyAlgName.equalsIgnoreCase(JCP.GOST_DH_2012_512_NAME)) {
return JCP.GOST_SIGN_2012_512_NAME;
}
return JCP.GOST_EL_SIGN_NAME;
}
Отредактировано пользователем 11 августа 2021 г. 20:43:44(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.08.2021(UTC) Сообщений: 16 Откуда: Воронеж Сказал(а) «Спасибо»: 1 раз
|
Здравствуйте. Еще раз спасибо за прошлые подсказки. И хочется уточнить еще 1 момент: как можно получить данные о сертификате которые демонстрирются в провайдере (ФИО и дата создания). Сейчас получаю алиасы контейнера, сертификата, тип - для успешной подписи достаточно, но хотелось бы отобразить пользователю пристойные данные. (перебор доступных рутокен сертификатов) Код:
for (int i = 0; i < KEY_STORE_ALIASES.length; i++) {
KeyStore keyStore = KeyStore.getInstance(KEY_STORE_ALIASES[i], JCSP.PROVIDER_NAME);
keyStore.load(null, null);
//обьектов внутри
int keyStoreSize = keyStore.size();
//перебор
for (Enumeration<String> aliases = keyStore.aliases(); aliases.hasMoreElements(); ) {
String alias = aliases.nextElement();
Certificate certificate = keyStore.getCertificate(alias);
String certificateType = certificate.getType() ;
... ... ...
}
}
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Если имеются в виду поля сертификата, где есть ФИО и срок действия, то надо объект сертификата certificate привести к X509Certificate, у него есть методы getNotBefore, getNotAfter, getSubject, getSerialNumber, getIssuer. Отредактировано пользователем 25 августа 2021 г. 15:26:32(UTC)
| Причина: Не указана |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close