Статус: Участник
Группы: Участники
Зарегистрирован: 13.10.2020(UTC) Сообщений: 22  Откуда: Ростов-на-Дону Сказал(а) «Спасибо»: 6 раз
|
Добрый день! При вызове GetLastError после безуспешного вызова какой либо функции (например, CryptSignMessage) код ошибки всегда равен -1 (FFFFFFFF). С чем это может быть связано? Это вцелом при работе с CAPILite так? Пишу на Delphi. Отладка под Ubuntu 18.04.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,658   Сказал «Спасибо»: 570 раз Поблагодарили: 2293 раз в 1794 постах
|
Здравствуйте. Автор: nesdmitrijj  Добрый день! При вызове GetLastError после безуспешного вызова какой либо функции (например, CryptSignMessage) код ошибки всегда равен -1 (FFFFFFFF). С чем это может быть связано? Это вцелом при работе с CAPILite так? Пишу на Delphi. Отладка под Ubuntu 18.04. GetLastError нужно вызывать из библиотеки CSP, а не системную. |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,658   Сказал «Спасибо»: 570 раз Поблагодарили: 2293 раз в 1794 постах
|
GetLastError в libcapi20.so |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.10.2020(UTC) Сообщений: 22  Откуда: Ростов-на-Дону Сказал(а) «Спасибо»: 6 раз
|
Добрый день! Автор: Андрей *  GetLastError в libcapi20.so Спасибо за ответ! Где можно почитать как она объявлена? В libcapi20.so она не найдена (GetProcAddress возвращает nil). Или она не объявлена как "external (global)". Отредактировано пользователем 14 октября 2020 г. 8:29:34(UTC)
| Причина: Не указана
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.10.2020(UTC) Сообщений: 22  Откуда: Ростов-на-Дону Сказал(а) «Спасибо»: 6 раз
|
Посмотрев что происходит внутри процедуры GetProcAddress обнаружил что dladdr возвращает информацию (dl_info), в которой указано что функция объявлена в библиотеке librdrsup.so. Поэтому реализовал вызов GetProcAddress именно для librdrsup.so. Объявил описание функции у себя так: function(): DWORD; stdcall; Коды ошибок получаются. Вопрос напоследок: возможно ли как-то получить текстовое описание ошибок? Отредактировано пользователем 14 октября 2020 г. 8:35:44(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,404  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
FormatMessage рядом в той же библиотеке. |
|
 1 пользователь поблагодарил Максим Коллегин за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.10.2020(UTC) Сообщений: 22  Откуда: Ростов-на-Дону Сказал(а) «Спасибо»: 6 раз
|
Автор: Максим Коллегин  FormatMessage рядом в той же библиотеке. Спасибо! А текст сообщения всегда только на английском?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,404  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.10.2020(UTC) Сообщений: 22  Откуда: Ростов-на-Дону Сказал(а) «Спасибо»: 6 раз
|
Автор: Максим Коллегин  Спасибо за ответ. Локаль русская. 4й аргумент игнорируется в "FormatMessage", поэтому и спросил. Я провел некоторый анализ вот результат: FormatMessage/0 = "Cannot find the certificate and private key for decryption." FormatMessage/LANG_ENGLISH = "Cannot find the certificate and private key for decryption." FormatMessage/LANG_RUSSIAN = "Cannot find the certificate and private key for decryption." FormatMessageA/0 = "Не удается найти сертификат и закрытый ключ для расшифровки." FormatMessageA/LANG_ENGLISH = "Cannot find the certificate and private key for decryption." FormatMessageA/LANG_RUSSIAN = "Не удается найти сертификат и закрытый ключ для расшифровки." FormatMessageW/0 = "Не удается найти сертификат и закрытый ключ для расшифровки." FormatMessageW/LANG_ENGLISH = "Cannot find the certificate and private key for decryption." FormatMessageW/LANG_RUSSIAN = "Не удается найти сертификат и закрытый ключ для расшифровки." В итоге выявил что следует использовать FormatMessageA или FormatMessageW. По крайней мере в версии: v4.0.9019 KC1 Release Ver:4.0.9963 OS:Linux Отредактировано пользователем 15 октября 2020 г. 8:30:26(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,499
Сказал(а) «Спасибо»: 41 раз Поблагодарили: 606 раз в 420 постах
|
Использование FormatMessage (вместо FormatMessageA/FormatMessageW) является ошибкой в любом случае. Сам символ оставлен в экспорте исключительно для обратной совместимости со старыми программами. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close