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

Уведомление

Icon
Error

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

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

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

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

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

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

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

Сказал(а) «Спасибо»: 47 раз
Поблагодарили: 685 раз в 471 постах
Здравствуйте.
Настоятельно не рекомендуем использовать объектные (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)
Сообщений: 13

Сказал(а) «Спасибо»: 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)
Сообщений: 13

Сказал(а) «Спасибо»: 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)
Сообщений: 13

Сказал(а) «Спасибо»: 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;
}

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