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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline romar777  
#1 Оставлено : 17 октября 2024 г. 9:48:56(UTC)
romar777

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

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

Сказал(а) «Спасибо»: 1 раз
Здравствуйте

Пробую SignByLoadKeyExample из примеров, изменил только хранилище (My, контейнер в реестре пользователя) и alias сертификата на свои.
signer.sign() вызывает исключение ru.CryptoPro.JCSP.MSCAPI.MSHashNSignException: Hash or Sign ERROR: 0x80090022
Перед этим получаю приватный ключ через keyStore.getKey(alias, null). Но никаких попыток показа окна пин-кода не происходит.
С сохраненным пин-кодом все ОК (естественно, без окна пин-кода) и через getKey и через keyStore.getEntry.

Что я делаю не так?
Windows, запуск из IntelijIdea с правами пользователя или локального администратора.

Попутный вопрос. Если задать хранилище REGISTRY, то при запуске от пользователя не находит ничего в хранилище, хотя это не так.
Offline Санчир Момолдаев  
#2 Оставлено : 17 октября 2024 г. 10:34:50(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 101 раз
Поблагодарили: 285 раз в 265 постах
Добрый день.

вот так попробуйте
Код:
JCPProtectionParameter parameter = new JCPProtectionParameter(stringPassword.toCharArray());
PrivateKey privateKey = ( //getEntry нужен в случае работы jcsp и hsm
(JCPPrivateKeyEntry) keyStore.getEntry(ALIAS, parameter)
).getPrivateKey();
Техническую поддержку оказываем тут
Наша база знаний
Offline romar777  
#3 Оставлено : 17 октября 2024 г. 11:10:00(UTC)
romar777

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: Санчир Момолдаев Перейти к цитате
Добрый день.

вот так попробуйте
Код:
JCPProtectionParameter parameter = new JCPProtectionParameter(stringPassword.toCharArray());
PrivateKey privateKey = ( //getEntry нужен в случае работы jcsp и hsm
(JCPPrivateKeyEntry) keyStore.getEntry(ALIAS, parameter)
).getPrivateKey();


Так другая ошибка, указывающая что пароль неверный, в данном случае ожидаемо.

Частично разобрался. Для хранилища на диске окно с пин-кодом отображается. С токеном, надеюсь, тоже будет.
А с реестром нет. Из другой программы на Delphi для того же самого контейнера окно выдается.
Есть подозрение, что JCSP пытается обращаться к реестру с учеткой LocalSystem, из-за чего и происходит "не могу выполнить действие в автоматическом контексте"

Offline Санчир Момолдаев  
#4 Оставлено : 17 октября 2024 г. 11:16:30(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 101 раз
Поблагодарили: 285 раз в 265 постах
Цитата:
учеткой LocalSystem, из-за чего и происходит "не могу выполнить действие в автоматическом контексте"

автоматический контекст это CRYPT_SILENT
LocalSystem это другое
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.