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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline navrocky  
#1 Оставлено : 10 июля 2023 г. 11:32:35(UTC)
navrocky

Статус: Активный участник

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

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 2 раз в 2 постах
Пишу приложение на C++, реализовал подписывание при помощи CSP5. В случае если заканчивается демо лицензия вызывать функцию CryptAcquireContext с указанием имени криптоконтейнера появляется надпись "CPCSP: Срок действия этой версии КриптоПро CSP истёк или ещё не наступил, либо серийный номер лицензии не был введен."
И надпись "(o) OK".

И что самое плохое - в месте вызова CryptAcquireContext выполнение программы прерывается необъяснимым способом. Функция не возвращает false, а просто ничего не возвращает, зависает что-ли или делает exit в потоке. При попытке перешагнуть эту функцию в отладчике прерывается приостановка процесса и программа продолжает выполнятся, как-будто я нажал Continue. Причем так происходит, если я запускаю приложение в терминале штатно или под отладчиком в QtCreator. Но если я запускаю в QtCreator не под отладкой, то вызов этой функции проходит нормально, возвращается false и GetLastError + FormatMessageA возвращает правильный текст ошибки, что лицензия закончилась.

Как это можно починить?

Я сперва предполагал, что это такая защита от отладки, но почему просто в терминале не работает?

Окружение: OpenSuse Tumbleweed, cprocsp 5.0.12600, g++ (SUSE Linux) 13.1.1 20230522
Offline Русев Андрей  
#2 Оставлено : 10 июля 2023 г. 13:07:28(UTC)
Русев Андрей

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

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,577

Сказал(а) «Спасибо»: 46 раз
Поблагодарили: 663 раз в 458 постах
Здравствуйте.
Больше всего похоже, что у вас включён "Режим усиленного контроля использования ключей":
Код:
./cpconfig -ini '\config\parameters' -add long StrengthenedKeyUsageControl 1

Именно такая конфигурация должна быть при эксплуатации, поэтому финальное тестирование действительно надо проводить с ней. В то же время, этот параметр включает динамический контроль целостности СКЗИ, который детектирует внесение точек останова и поэтому не позволит работать провайдеру под отладчиком. Для отключения при разработке нужно выставить этот параметр в ноль.
Официальная техподдержка. Официальная база знаний.
Offline navrocky  
#3 Оставлено : 10 июля 2023 г. 13:56:18(UTC)
navrocky

Статус: Активный участник

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

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 2 раз в 2 постах
Автор: Русев Андрей Перейти к цитате
Больше всего похоже, что у вас включён "Режим усиленного контроля использования ключей":

Ранее при установке я его не включал явно.

Я попробовал выставить в ноль:
Код:
sudo /opt/cprocsp/sbin/amd64/cpconfig -ini '\config\parameters' -add long StrengthenedKeyUsageControl 0

Но это не помогло. Куда он прописывает этот параметр?

Ну и остаётся вопрос, почему при обычном запуске в терминале тоже не работает? Понимаю что только при отладке не должно.

Отредактировано пользователем 10 июля 2023 г. 14:18:43(UTC)  | Причина: Не указана

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