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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline lesha_red  
#1 Оставлено : 26 февраля 2026 г. 12:55:27(UTC)
lesha_red

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

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

Сказал(а) «Спасибо»: 2 раз
В Linux сборке КриптоПро 5.0.13700 пропала либа libades-core.so, раньше она был в пакете cprocsp-pki-cades.

Из этой библиотеки я использовал метод CDateTime.getTime() для получения времени из штампа времени. Теперь этот метод только в cprocsp-legacy пакете?
Offline Русев Андрей  
#2 Оставлено : 26 февраля 2026 г. 15:49:18(UTC)
Русев Андрей

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

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

Сказал(а) «Спасибо»: 49 раз
Поблагодарили: 702 раз в 484 постах
Здравствуйте.
Настоятельно не рекомендуем использовать объектные (C++) интерфейсы во избежание потенциальных проблем. ades-core была внутренней библиотекой, не предназначенной для использования в сторонних проектах. Для разбора штампов и OCSP предлагаем использовать CryptDecodeObject: OCSP_SIGNED_REQUEST, OCSP_REQUEST, OCSP_RESPONSE, OCSP_BASIC_SIGNED_RESPONSE, OCSP_BASIC_RESPONSE, TIMESTAMP_REQUEST, TIMESTAMP_RESPONSE, TIMESTAMP_INFO. Судя по вопросу вам нужно сконвертировать в time_t время из другого типа. Из какого? Для FILETIME и Яндекс подскажет:
Код:
time_t filetime_to_timet(const FILETIME& ft) {
    ULARGE_INTEGER ull;
    ull.LowPart = ft.LowPart;
    ull.HighPart = ft.HighPart;
    return ull.QuadPart / 10000000ULL - 11644473600ULL;
}
Официальная техподдержка. Официальная база знаний.
Offline lesha_red  
#3 Оставлено : 26 февраля 2026 г. 16:46:13(UTC)
lesha_red

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

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

Сказал(а) «Спасибо»: 2 раз
Спасибо за ответ. У меня используется libtsp для проверки штампа времени, и потом из штампа я получаю время в time_t:

Код:
std::vector<unsigned char> timestamp; // Здесь содержится штамп времени из подписи в бинарном виде

CryptoPro::PKI::TSP::Client::CStamp stamp;
stamp.Import(&timestamp[0], timestamp.size());
DWORD dwError = stamp.Verify();


if (ERROR_SUCCESS == dwError) {
    time_t outputTime = stamp.get_Time().getTime();

// Здесь stamp.get_Time() возвращает объект класса CDateTime. Чтобы получить из него время time_t,
// нужно вызвать CDatetime::getTime(), реализация которого раньше была в libades-core.so,
// а теперь пропала
}



Или CryptoPro::PKI::TSP::Client::CStamp тоже предназначен для внутреннего использования?
Offline lesha_red  
#4 Оставлено : 28 февраля 2026 г. 13:21:26(UTC)
lesha_red

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

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

Сказал(а) «Спасибо»: 2 раз
Автор: Русев Андрей Перейти к цитате
ades-core была внутренней библиотекой, не предназначенной для использования в сторонних проектах.

Добрый день! А вы точно не поспешили с выпиливанием ades-core? Получается, что libtsp теперь нельзя использовать.

Или подскажите, что использовать теперь в linux вместо функций cryptoapi CryptRetrieveTimeStamp/CryptVerifyTimeStampSignature, которые есть в win32 и отсутствуют в linux. До этого момента с этим замечательно справлялась libtsp.
Offline Зубов Иван  
#5 Оставлено : 2 марта 2026 г. 13:31:34(UTC)
Зубов Иван

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

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

Сказал «Спасибо»: 14 раз
Поблагодарили: 32 раз в 29 постах
С библиотекой ades-core было 2 проблемы:
1. Она вообще не должна была появляться в видимом для пользователей виде.
2. Даже если было бы нормально, что она появилась, то её экспортируемые символы не обрезались. Указанные вами символы торчали оттуда по ошибке, и мы бы это починили однажды. Динамическая библиотека, из которой в норме экспортируются символы класса CDateTime -- это libcplib.
Обе этих проблемы мы починили устранением библиотеки ades-core, и кажется, это было правильным решением.

CryptoPro::PKI::TSP::Client::CStamp предназначен для внешнего использования, ваша правда. И действительно, сейчас выходит так, что для использования этого класса требуется установить legacy-пакет. Действительно, это неудобно. С C++-интерфейсами связан ряд сложных проблем, так что стратегически мы стараемся предоставить клиентам C-интерфейс со сходной функциональностью. Для некоторых задач это уже выполнено, для некоторых -- находится в разработке. Не могу сходу сказать, можно ли закрыть ваш конкретный сценарий нашими C-функциями прямо сейчас, но в будущем мы конечно планируем сделать так, чтобы это было возможно (и притом без установки legacy-пакета). Пока что к сожалению возможны, случаются такие вот неприятные ситуации, когда требуется установка legacy-пакета.

CryptRetrieveTimeStamp/CryptVerifyTimeStampSignature мы пока не реализовали, когда-то в будущем планируем реализовать, но видимо не в ближайшее время.
Техническую поддержку оказываем тут
Наша база знаний
Offline lesha_red  
#6 Оставлено : 2 марта 2026 г. 14:25:39(UTC)
lesha_red

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

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

Сказал(а) «Спасибо»: 2 раз
Иван, спасибо за ответ. Пока что принял решение сделать реализацию CDateTime::getTime() в своем коде, чтобы не было привязки ни к ades-core, ни к legacy для сохранения совместимости со всеми текущими (но, возможно, не будущими?) версиями криптопро csp:

Код:
time_t CryptoPro::CDateTime::getTime() const { // все эти фокусы нужны из-за этого https://cryptopro.ru/forum2/default.aspx?g=posts&t=25922
    // Combine the high and low parts into a single 64-bit integer
    const uint64_t windows_ticks = static_cast<uint64_t>(high_) << 32 | low_;

    // Convert from 100-nanosecond intervals to seconds
    const uint64_t total_seconds = windows_ticks / TICKS_PER_SECOND;

    // Subtract the difference between epochs
    // The result is the number of seconds since the Unix epoch
    return total_seconds - EPOCH_DIFFERENCE;
}

Offline Русев Андрей  
#7 Оставлено : 3 марта 2026 г. 17:24:58(UTC)
Русев Андрей

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

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

Сказал(а) «Спасибо»: 49 раз
Поблагодарили: 702 раз в 484 постах
А какую глобальную задачу вы решаете? libtsp (и отправка запросов на штамп) нужна только в случае, если вы собираете cades-сообщения руками, но это исключительная история. Создавать cades-сообщения стоит с помощью CadesSignMessage / CadesEnhanceMessage, а проверять с помощью CadesVerifyMessage. Выводить информацию о деталях в сообщении (в том числе о штампе) можно с помощью перечисления атрибутов и их разбора с помощью CryptDecodeObject.
Официальная техподдержка. Официальная база знаний.
Offline lesha_red  
#8 Оставлено : 3 марта 2026 г. 18:06:07(UTC)
lesha_red

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

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

Сказал(а) «Спасибо»: 2 раз
Автор: Русев Андрей Перейти к цитате
А какую глобальную задачу вы решаете? libtsp (и отправка запросов на штамп) нужна только в случае, если вы собираете cades-сообщения руками, но это исключительная история. Создавать cades-сообщения стоит с помощью CadesSignMessage / CadesEnhanceMessage, а проверять с помощью CadesVerifyMessage. Выводить информацию о деталях в сообщении (в том числе о штампе) можно с помощью перечисления атрибутов и их разбора с помощью CryptDecodeObject.

Спасибо, видимо, придется действительно переделать на CadesEnhanceMessage/CadesVerifyMessage.

Это была попытка сделать кросс-провайдерный (cryptopro/vipnet) и кросс-платформенный (win32/linux) код для следующего функционала:
1. Формирование подписи
2. Улучшение подписи до CADES-T
3. Проверка подписи
4. Проверка штампа времени (с возможностью вытащить время и сертификат сервера TSP из штампа)

В win32 все замечательно с функциями CryptRetrieveTimeStamp/CryptVerifyTimeStampSignature (они реализованы и в криптопро, и в vipnet), а в linux приходится посложнее.
Offline dead_mazay_bhg  
#9 Оставлено : 7 мая 2026 г. 22:53:22(UTC)
dead_mazay_bhg

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

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

Простите, что вмешиваюсь, но вопрос косвенно связан с вопросом топикстартера. Наверное.
Пытаюсь поставить ГИС НР ПЛАГИН на Астра Линукс, при установке выдаёт ошибку: halt_error 'ОШИБКА! КриптоПро ЭЦП Browser plug-in не установлен.
При копании в логах обнаружил, что ошибка как раз появляется после блока:
+ for EACH_LIB in $CADES_LIBS
+ '[' '!' -f /opt/cprocsp/lib/amd64/libades-core.so ']'
+ '[' '!' -L /opt/cprocsp/lib/amd64/libades-core.so ']'
Т.е., видимо, кто-то ещё желает использовать эту библиотеку, не прислушиваясь к рекомендациям разработчиков КриптоПро :)
Поскольку ГИС НР ПЛАГИН, который нам так нужен для работы на закупках, я не разрабатывал, отказаться от использования библиотеки у меня не получится :(
Не подскажете, как обойти эту проблему?
Установлено ПО КриптоПро 5.0.13003, КриптоПро ЭЦП браузер плагин установлен корректно (по крайней мере, на стестовой странице криптоплагина всё работает.
Спасибо заранее и прошу прощения, если всё же не в тему.
Offline nickm  
#10 Оставлено : 8 мая 2026 г. 7:55:23(UTC)
nickm

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

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

Сказал(а) «Спасибо»: 714 раз
Поблагодарили: 571 раз в 540 постах
Автор: dead_mazay_bhg Перейти к цитате
Не подскажете, как обойти эту проблему?

Установлено ПО КриптоПро 5.0.13003, КриптоПро ЭЦП браузер плагин установлен корректно (по крайней мере, на с тестовой странице криптоплагина всё работает.

Как вариант, используйте плагин "КриптоПро" версии "2.0.15003", из состава дистрибутива СКЗИ "КриптоПро CSP" версии "5.0.13003".

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