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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline nesdmitrijj  
#1 Оставлено : 13 октября 2020 г. 14:19:36(UTC)
nesdmitrijj

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

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

Сказал(а) «Спасибо»: 6 раз
Добрый день!
При вызове GetLastError после безуспешного вызова какой либо функции (например, CryptSignMessage) код ошибки всегда равен -1 (FFFFFFFF). С чем это может быть связано? Это вцелом при работе с CAPILite так?
Пишу на Delphi. Отладка под Ubuntu 18.04.
Offline Андрей *  
#2 Оставлено : 14 октября 2020 г. 0:38:30(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2043 раз в 1584 постах
Здравствуйте.

Автор: nesdmitrijj Перейти к цитате
Добрый день!
При вызове GetLastError после безуспешного вызова какой либо функции (например, CryptSignMessage) код ошибки всегда равен -1 (FFFFFFFF). С чем это может быть связано? Это вцелом при работе с CAPILite так?
Пишу на Delphi. Отладка под Ubuntu 18.04.



GetLastError нужно вызывать из библиотеки CSP, а не системную.

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#3 Оставлено : 14 октября 2020 г. 0:41:11(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2043 раз в 1584 постах
GetLastError в libcapi20.so
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
nesdmitrijj оставлено 14.10.2020(UTC)
Offline nesdmitrijj  
#4 Оставлено : 14 октября 2020 г. 8:23:15(UTC)
nesdmitrijj

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

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

Сказал(а) «Спасибо»: 6 раз
Добрый день!
Автор: Андрей * Перейти к цитате
GetLastError в libcapi20.so

Спасибо за ответ!
Где можно почитать как она объявлена? В libcapi20.so она не найдена (GetProcAddress возвращает nil). Или она не объявлена как "external (global)".

Отредактировано пользователем 14 октября 2020 г. 8:29:34(UTC)  | Причина: Не указана

Offline nesdmitrijj  
#5 Оставлено : 14 октября 2020 г. 8:29:12(UTC)
nesdmitrijj

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

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

Сказал(а) «Спасибо»: 6 раз
Посмотрев что происходит внутри процедуры GetProcAddress обнаружил что dladdr возвращает информацию (dl_info), в которой указано что функция объявлена в библиотеке librdrsup.so. Поэтому реализовал вызов GetProcAddress именно для librdrsup.so.

Объявил описание функции у себя так:
function(): DWORD; stdcall;

Коды ошибок получаются.

Вопрос напоследок:
возможно ли как-то получить текстовое описание ошибок?

Отредактировано пользователем 14 октября 2020 г. 8:35:44(UTC)  | Причина: Не указана

Offline Максим Коллегин  
#6 Оставлено : 14 октября 2020 г. 11:49:46(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
FormatMessage рядом в той же библиотеке.
Знания в базе знаний, поддержка в техподдержке
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
nesdmitrijj оставлено 14.10.2020(UTC)
Offline nesdmitrijj  
#7 Оставлено : 14 октября 2020 г. 14:39:26(UTC)
nesdmitrijj

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

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

Сказал(а) «Спасибо»: 6 раз
Автор: Максим Коллегин Перейти к цитате
FormatMessage рядом в той же библиотеке.

Спасибо! А текст сообщения всегда только на английском?
Offline Максим Коллегин  
#8 Оставлено : 14 октября 2020 г. 22:28:02(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
Язык - четвёртый аргумент функции. https://docs.microsoft.c...nf-winbase-formatmessage
Поддерживается LANG_RUSSIAN и LANG_ENGLISH.
Или установите русскую локаль.
Знания в базе знаний, поддержка в техподдержке
Offline nesdmitrijj  
#9 Оставлено : 15 октября 2020 г. 8:13:48(UTC)
nesdmitrijj

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

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

Сказал(а) «Спасибо»: 6 раз
Автор: Максим Коллегин Перейти к цитате
Язык - четвёртый аргумент функции. https://docs.microsoft.c...nf-winbase-formatmessage
Поддерживается LANG_RUSSIAN и LANG_ENGLISH.
Или установите русскую локаль.


Спасибо за ответ. Локаль русская. 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)  | Причина: Не указана

Offline Андрей Русев  
#10 Оставлено : 30 октября 2020 г. 10:02:39(UTC)
Русев Андрей

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

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

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 445 раз в 324 постах
Использование FormatMessage (вместо FormatMessageA/FormatMessageW) является ошибкой в любом случае. Сам символ оставлен в экспорте исключительно для обратной совместимости со старыми программами.
Официальная техподдержка. Официальная база знаний.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.