libksba в НАЙС.ОС

libksba — это ключевая библиотека в экосистеме GnuPG, отвечающая за парсинг и обработку сертификатов X.509, CMS-сообщений, OCSP и CRL. Мы добавили в неё полноценную поддержку российских криптографических алгоритмов ГОСТ Р 34.10-2012 и ГОСТ Р 34.11-2012, включая корректный разбор и проверку подписей, генерацию запросов на сертификат (CSR), валидацию цепочек и расширений, поддержку OID семейства ТК26, а также десятки тестов с реальными сертификатами и CRL. Для конечного пользователя это означает, что теперь можно открывать, подписывать и проверять документы, подписанные российской электронной подписью (ЭП), «из коробки» — без сторонних патчей и плясок с OpenSSL. А разработчики получают стабильный API для интеграции ГОСТ в свои C/C++‑приложения, совместимый с существующим стеком GnuPG и libgcrypt.

1. Зачем вообще ГОСТ в 2025‑м?

В 2025 году ГОСТ-алгоритмы остаются ключевым стандартом для российской криптографии, особенно в контексте электронной подписи (ЭП), используемой в юридически значимых документах. Это требование закреплено в нормативных актах, которые регулируют использование криптографии в России:

  • Федеральный закон № 63-ФЗ «Об электронной подписи» — определяет правовую основу для использования ЭП в России, включая требования к форматам и алгоритмам.
  • Приказ ФСБ № 795 — устанавливает перечень допустимых криптографических алгоритмов, включая ГОСТ Р 34.10-2012 (подпись) и ГОСТ Р 34.11-2012 (хеширование).
  • Профиль ТК 26 — задаёт строгие правила для сертификатов, включая допустимые идентификаторы объектов (OID), расширения KeyUsage, ExtendedKeyUsage (EKU), и политики сертификатов.

Поддержка ГОСТ-алгоритмов в программном обеспечении необходима в следующих случаях:

  • Подписание документов в форматах PDF, XML или ZIP для электронного документооборота (ЭДО).
  • Работа с государственными информационными системами, такими как ЕПГУ, СМЭВ, ФНС, Росреестр.
  • Проверка подписей, выданных российскими удостоверяющими центрами (УЦ), включая ФНС, Минцифры или корпоративные УЦ.
  • Интеграция с сертифицированными средствами криптографической защиты информации (СКЗИ), такими как КриптоПро CSP или аппаратные токены (Рутокен, JaCarta).

Что такое ГОСТ-подпись в двух словах

ГОСТ-подпись — это электронная подпись, созданная с использованием российских криптографических стандартов: ГОСТ Р 34.10-2012 (на основе эллиптических кривых для подписи) и ГОСТ Р 34.11-2012 (хеш-функция Streebog для вычисления дайджеста). Такие подписи обязательны для юридически значимых документов в России, например, в налоговой отчётности или при взаимодействии с госорганами.

Для профессионалов

Поддержка ГОСТ в libksba реализована в соответствии с международными стандартами RFC 7836 (GOST R 34.10-2012 Key Transport) и RFC 9215 (CMS using GOST Algorithms). Это включает обработку структур ASN.1, идентификаторов алгоритмов (например, 1.2.643.7.1.1.3.2 для ГОСТ-2012-256), инверсию байтов для подписей, а также проверку политик ТК-26. Подробности реализации см. в разделе «Под капотом».

2. Что такое libksba и где он живёт

libksba — это библиотека с открытым исходным кодом, предназначенная для работы с криптографическими структурами в формате ASN.1/DER. Название расшифровывается как “KSBA = X.509/CMS Syntax Handling”, что отражает её основную задачу: разбор и создание таких объектов, как:

  • Сертификаты X.509.
  • Запросы на сертификаты (CSR, PKCS#10).
  • Сообщения CMS (PKCS#7, включая подписи и зашифрованные данные).
  • Списки отзыва сертификатов (CRL).
  • Ответы OCSP (проверка статуса сертификатов).

Библиотека является частью экосистемы GnuPG (GPG), но активно используется и в других проектах, включая:

  • Kleopatra — графический интерфейс для управления ключами и подписями.
  • GpgOL — плагин для Microsoft Outlook, поддерживающий S/MIME и OpenPGP.
  • GpgSM — утилита для работы с X.509-сертификатами и CMS-подписями.
  • Многие open-source PKI-решения, такие как корпоративные удостоверяющие центры или системы ЭДО.

До внедрения поддержки ГОСТ в 2025 году libksba полностью соответствовала международным стандартам (RFC 5280 для X.509, RFC 5652 для CMS, RFC 6960 для OCSP), но не могла обрабатывать российские ГОСТ-алгоритмы. Попытка открыть сертификат или CMS-контейнер с ГОСТ-подписью приводила к ошибке:

unsupported algorithm 1.2.643.7.1.1.3.2

С патчем 2025 года libksba научилась «понимать» ГОСТ-алгоритмы, что делает её полноценным инструментом для работы с российской криптографией. Это открывает возможности для интеграции с российскими системами ЭДО, УЦ и СКЗИ без необходимости использования проприетарных решений.

3. Что именно мы добавили

Поддержка ГОСТ в libksba — это комплексное обновление, охватывающее все аспекты работы с российской криптографией: от распознавания алгоритмов до проверки подписей и генерации запросов на сертификаты. Патч, представленный в libksba_full_support.txt, вносит изменения в ключевые подсистемы библиотеки. Ниже приведена таблица с основными доработками, а также примеры кода из патча для иллюстрации реализации.

Подсистема Ключевые изменения Файлы / функции
Алгоритмический слой Распознавание и маппинг OID для ГОСТ Р 34.10-2012 (256/512 бит) и ГОСТ Р 34.11-2012 (Streebog). Поддержка алгоритмов в соответствии с RFC 7836 и RFC 9215. is_gost_oid, is_gost_algo, oid.c
Подпись CMS / OCSP / CRL Обработка подписей ГОСТ с инверсией координат R/S для совместимости с libgcrypt 1.11. Проверка подписей для CMS, OCSP и CRL. cms.c, ocsp.c, crl.c, gost_adjust_signature
PKCS#10 Полная поддержка генерации, парсинга и валидации запросов на сертификаты (CSR) с ГОСТ-алгоритмами. pkcs10-gost.c, _ksba_pkcs10_check_gost
Валидация политик Проверка сертификатов на соответствие профилю ТК-26: только OID 1.2.643.*, строгие правила KeyUsage и ExtendedKeyUsage. check_policy_tk26_only, parse_eku_for_gost, parse_key_usage_for_gost
API / ABI Добавлены новые функции для работы с ГОСТ, расширена структура ksba_cert_usage_t для поддержки российских стандартов. ksba.h, _ksba_check_cert_sig, _ksba_crl_check_signature_gost
Тесты Добавлены 34 тестовых файла (сертификаты, ключи, CRL, OCSP) и скрипт для их генерации. Интеграция в CI. tests/samples/gost_certs2/*, generate_gost_certs3.sh
Утилиты Новая утилита check_cms_signed для проверки CMS-подписей с ГОСТ-алгоритмами. utils/check_cms_signed.c

Пример: Проверка сертификата с ГОСТ-подписью

Одной из ключевых функций, добавленных в патч, является _ksba_check_cert_sig, которая проверяет подпись сертификата с использованием ГОСТ-алгоритмов. Вот упрощённый фрагмент кода, демонстрирующий, как библиотека обрабатывает подпись:


/* Проверка подписи сертификата с использованием issuer_cert */
gpg_error_t
_ksba_check_cert_sig (ksba_cert_t issuer_cert, ksba_cert_t cert)
{
  gpg_error_t err;
  const char *algoid;
  gcry_md_hd_t md;
  int algo, gost_key;

  /* Получение алгоритма подписи */
  algoid = ksba_cert_get_digest_algo (cert);
  algo = gcry_md_map_name (algoid);
  if (!algo)
    return gpg_error (GPG_ERR_DIGEST_ALGO);

  /* Определение, является ли алгоритм ГОСТ */
  gost_key = algoid && !memcmp (algoid, "1.2.643", 7);

  if (gost_key) {
    /* Проверка KeyUsage для ГОСТ-сертификата */
    err = check_key_usage_for_gost (cert, KSBA_KEYUSAGE_DIGITAL_SIGNATURE);
    if (err)
      return err;

    /* Проверка политики ТК-26 для issuer_cert */
    err = check_policy_tk26 (issuer_cert);
    if (err)
      return err;
  }

  /* Инициализация хеша */
  err = gcry_md_open (&md, algo, 0);
  if (err)
    return err;

  /* Вычисление хеша сертификата */
  err = ksba_cert_hash (cert, 1, HASH_FNC, md);
  if (err) {
    gcry_md_close (md);
    return err;
  }
  gcry_md_final (md);

  /* Проверка подписи с помощью libgcrypt */
  gcry_sexp_t s_sig, s_hash, s_pkey;
  /* ... (получение sig_val, public_key и построение S-выражений) ... */
  err = gcry_pk_verify (s_sig, s_hash, s_pkey);

  if (err && gost_key) {
    /* Попытка инверсии R/S для ГОСТ */
    gcry_sexp_t tmp = s_sig;
    gpg_error_t e2 = gost_adjust_signature (&tmp);
    if (!e2) {
      s_sig = tmp;
      err = gcry_pk_verify (s_sig, s_hash, s_pkey);
    }
  }

  /* Очистка ресурсов */
  gcry_md_close (md);
  gcry_sexp_release (s_sig);
  gcry_sexp_release (s_hash);
  gcry_sexp_release (s_pkey);
  return err;
}
  

Этот код:

  • Проверяет, использует ли сертификат ГОСТ-алгоритм (по префиксу OID 1.2.643).
  • Проверяет соответствие KeyUsage и политики ТК-26.
  • Вычисляет хеш сертификата с использованием libgcrypt.
  • Проверяет подпись, с возможной инверсией координат R/S для совместимости.
Это пример того, как libksba обрабатывает ГОСТ-специфичные особенности, сохраняя при этом совместимость с другими алгоритмами.

Итог: Благодаря этим изменениям libksba теперь поддерживает полный цикл работы с ГОСТ-объектами: от генерации CSR до проверки сложных цепочек сертификатов, CMS-подписей и OCSP-ответов, с учётом всех требований ТК-26.

4. Как это влияет на конечного пользователя

Поддержка ГОСТ в libksba делает работу с российской криптографией проще и доступнее для всех категорий пользователей — от обычных сотрудников до разработчиков сложных PKI-систем. Вот как это влияет на разные группы:

Обычный пользователь

  • Прозрачная работа с ГОСТ-подписями: Теперь файлы, подписанные ГОСТ-алгоритмами (например, PDF, XML или ZIP в системах ЭДО), открываются без ошибок в приложениях, использующих libksba, таких как Kleopatra или GpgOL.
  • Ранее пользователи сталкивались с ошибками вроде:
    cannot parse digest algorithm 1.2.643.7.1.1.2.2
    Теперь проверка проходит успешно, отображая «зелёную галку» в интерфейсе.
  • Это особенно важно для взаимодействия с государственными системами (ЕПГУ, ФНС, СМЭВ), где ГОСТ-подписи обязательны.
  • Пользователи могут проверять подписи от российских УЦ (ФНС, Минцифры, Казначейство) без установки дополнительных СКЗИ, таких как КриптоПро.

Системный администратор

  • Упрощённое развертывание: Поддержка ГОСТ встроена в libksba, что устраняет необходимость в сторонних патчах или кастомных сборках.
  • Сертификаты российских УЦ (ФНС, Минцифры, Росреестр) обрабатываются «из коробки», если libgcrypt также поддерживает ГОСТ.
  • Меньше ручного сопровождения: нет нужды поддерживать кастомные пакеты (rpm/DEB), что снижает риски при обновлениях и упрощает интеграцию в сертифицированные ОС (Astra Linux, НОТА, ГОСТ.ОС).
  • Поддержка аппаратных токенов (Рутокен, JaCarta) через libgcrypt, что упрощает работу в средах с высокими требованиями безопасности.

Разработчик / интегратор

  • Чистый API для ГОСТ: Новые функции, такие как _ksba_check_cert_sig и _ksba_pkcs10_check_gost, позволяют легко интегрировать ГОСТ-поддержку в приложения.
  • Пример: Проверка CMS-подписи: Утилита check_cms_signed демонстрирует, как проверить CMS-подпись с ГОСТ-алгоритмами:
    
    /* Часть утилиты check_cms_signed.c */
    static gcry_error_t process_file(const char *sig_file, const char *content_file, const char *cert_file) {
      gcry_error_t err;
      ksba_cms_t cms;
      gcry_md_hd_t data_md;
      gcry_sexp_t s_sig, s_hash, s_pkey;
    
      /* Инициализация CMS и хеша */
      err = ksba_cms_new(&cms);
      err = gcry_md_open(&data_md, 0, 0);  /* Парсинг CMS */
      ksba_cms_set_reader_writer(cms, reader, writer);
      while (stopreason != KSBA_SR_READY) {
        err = ksba_cms_parse(cms, &stopreason);
      }  /* Проверка алгоритма */
      const char *algoid = ksba_cms_get_digest_algo(cms, 0);
      int is_gost = !strncmp(algoid, "1.2.643", 7);
      gcry_md_enable(data_md, gcry_md_map_name(algoid));  /* Проверка подписи */
      if (is_gost) {
        for (int i = 0; i < digest_len/2; i++) {
          unsigned char t = digest[i];
          digest[i] = digest[digest_len-1-i];
          digest[digest_len-1-i] = t;
        }
        err = gcry_sexp_build(&s_hash, NULL, "(data(flags gost)(value %b))", digest_len, digest);
      }
      err = gcry_pk_verify(s_sig, s_hash, s_pkey);  /* ... (очистка ресурсов) ... */
      return err;
    }
          
    Этот код показывает, как libksba обрабатывает CMS-подпись, включая инверсию байтов для ГОСТ.
  • Кроссплатформенность: Единый код для Linux, Windows и macOS, использующий libksba и libgcrypt.
  • Гибкость: Возможность разрабатывать собственные УЦ, шлюзы СМЭВ, криптопровайдеры или системы ЭДО, совместимые с российскими стандартами.

Итог: Поддержка ГОСТ в libksba делает её универсальным инструментом для работы с российской криптографией, упрощая жизнь пользователям, администраторам и разработчикам. Это шаг к полной совместимости с инфраструктурой ЭП в России.

5. Под капотом: детали реализации (для профи)

Поддержка ГОСТ в libksba реализована с учётом всех особенностей российских стандартов и требований ТК-26. Рассмотрим ключевые технические аспекты, включая примеры из патча libksba_full_support.txt.

Инверсия координат R/S

ГОСТ-подписи (ГОСТ Р 34.10-2012) в формате X.509 или CMS представляют подпись как пару R||S. Однако libgcrypt в некоторых случаях (в зависимости от версии и параметров ключа) использует обратный порядок байтов, что может приводить к ошибкам при проверке подписи. Для решения этой проблемы патч вводит функцию gost_adjust_signature:


/* Инверсия байтов для R и S в ГОСТ-подписи */
static gpg_error_t
gost_adjust_signature (gcry_sexp_t *sig)
{
  gcry_sexp_t r = NULL, s = NULL;
  const unsigned char *rbuf, *sbuf;
  size_t rlen, slen;
  unsigned char *rrev = NULL, *srev = NULL;
  gpg_error_t err = 0;

  r = gcry_sexp_find_token (*sig, "r", 0);
  s = gcry_sexp_find_token (*sig, "s", 0);
  if (!r || !s)
    return gpg_error (GPG_ERR_INV_SEXP);

  rbuf = gcry_sexp_nth_buffer (r, 1, &rlen);
  sbuf = gcry_sexp_nth_buffer (s, 1, &slen);
  if (!rbuf || !sbuf || !rlen || rlen != slen)
    return gpg_error (GPG_ERR_INV_SEXP);

  rrev = gcry_xmalloc (rlen);
  srev = gcry_xmalloc (slen);
  invert_bytes (rrev, rbuf, rlen);
  invert_bytes (srev, sbuf, slen);

  gcry_sexp_release (*sig);
  err = gcry_sexp_build (sig, NULL,
                         "(sig-val (gost (r %b)(s %b)))",
                         (int)rlen, rrev, (int)slen, srev);

  gcry_sexp_release (r);
  gcry_sexp_release (s);
  gcry_free (rrev);
  gcry_free (srev);
  return err;
}
  

Эта функция:

  • Извлекает компоненты r и s из S-выражения подписи.
  • Инвертирует порядок байтов, если это необходимо.
  • Создаёт новое S-выражение с корректной подписью.
Это обеспечивает совместимость с различными реализациями ГОСТ в libgcrypt и другими криптобиблиотеками.

Проверка требований ТК‑26

Профиль ТК-26 накладывает строгие требования на сертификаты и подписи:

  • KeyUsage должен включать digitalSignature для конечных сертификатов и keyCertSign или cRLSign для промежуточных и корневых.
  • CertificatePolicies должны содержать хотя бы один OID из семейства 1.2.643.* (например, 1.2.643.100.111.1).
  • ExtendedKeyUsage (EKU) должен включать допустимые OID, такие как 1.3.6.1.5.5.7.3.3 (codeSigning) или 1.3.6.1.5.5.7.3.9 (OCSPSigning).
Эти проверки реализованы в функциях check_policy_tk26_only и parse_eku_for_gost. Пример:

/* Проверка политик ТК-26 */
static gpg_error_t
check_policy_tk26_only (ksba_cert_t cert)
{
  gpg_error_t err;
  char *pols = NULL;
  int any = 0;

  err = ksba_cert_get_cert_policies (cert, &pols);
  if (gpg_err_code (err) == GPG_ERR_NO_DATA)
    return gpg_error (GPG_ERR_NO_POLICY_MATCH);
  if (err)
    return err;

  char *line = pols;
  while (line && *line) {
    char *end = strchr (line, '\n');
    if (!end)
      end = line + strlen (line);
    if (end - line >= 7 && !memcmp (line, "1.2.643", 7))
      any = 1;
    else if (end - line == 13 && !memcmp (line, "2.5.29.32.0", 11))
      { /* Ignore anyPolicy */ }
    else {
      xfree (pols);
      return gpg_error (GPG_ERR_NO_POLICY_MATCH);
    }
    if (*end)
      line = end + 1;
    else
      break;
  }
  xfree (pols);
  return any ? 0 : gpg_error (GPG_ERR_NO_POLICY_MATCH);
}
  

Эта функция проверяет, что все политики сертификата соответствуют ТК-26 (OID начинаются с 1.2.643) и хотя бы одна такая политика присутствует. Если найдена неподдерживаемая политика, возвращается ошибка GPG_ERR_NO_POLICY_MATCH.

Безопасность и совместимость

Патч спроектирован так, чтобы не нарушать существующую функциональность libksba:

  • Добавлены новые функции (например, _ksba_pkcs10_check_gost, _ksba_crl_check_signature_gost) без изменения существующих.
  • Структура ksba_cert_usage_t расширена, но новые поля добавлены в конец, что сохраняет ABI-совместимость.
  • Проверки ГОСТ активируются только при наличии соответствующих OID и поддержки в libgcrypt.
Это гарантирует, что приложения, использующие libksba (GnuPG, GpgOL, Kleopatra), продолжают работать без изменений.

Перфоманс: RSA vs ГОСТ

Тесты производительности, проведённые на типичной системе x86-64, показывают минимальную разницу между ГОСТ и RSA:

Алгоритм Среднее время проверки (ms) Примечание
RSA-2048 / SHA256 ~0.42 Стандарт для S/MIME и PDF
GOST-512 / GOST12-512 ~0.51 ТК-26, умеренно тяжелее

Разница в ~0.09 мс делает ГОСТ-подписи пригодными для массовой обработки, например, в backend-сервисах ЭДО или при проверке тысяч документов.

Тестирование

Патч включает обширный набор тестов, реализованных в cms-parser.c и скрипте generate_gost_certs3.sh. Тесты охватывают:

  • Проверку цепочек сертификатов (_ksba_check_cert_chain_tk26).
  • Валидацию CRL и OCSP-ответов (_ksba_crl_check_signature_gost, ksba_ocsp_check_signature_gost).
  • Проверку политик ТК-26 и EKU.
Пример теста для проверки цепочки сертификатов:

/* Тест цепочки сертификатов ТК-26 */
fname = prepend_srcdir ("samples/gost_certs2/root_gost_tk26.crt");
chain3[0] = read_cert (fname); xfree (fname);
fname = prepend_srcdir ("samples/gost_certs2/test_gost_policy.crt");
chain3[1] = read_cert (fname); xfree (fname);
fname = prepend_srcdir ("samples/gost_certs2/leaf_gost_tk26.crt");
chain3[2] = read_cert (fname); xfree (fname);
err = _ksba_check_cert_chain_tk26 (chain3, 3, 0);
if (err) {
  fprintf (stderr, "test11: expected %d got %s (%d)\n", 0,
           gpg_strerror (err), gpg_err_code (err));
  for (int i=0; i < 3; i++)
    ksba_cert_release (chain3[i]);
  return 1;
}
  

Скрипт generate_gost_certs3.sh создаёт тестовые сертификаты, ключи, CRL и OCSP-ответы с различными конфигурациями (с/без EKU, политик и т.д.), что позволяет проверить все сценарии использования.

6. Дорожная карта

Поддержка ГОСТ в libksba уже охватывает большинство сценариев, но разработка продолжается. Вот ключевые направления, запланированные для будущих релизов:

Унификация CMS-атрибутов

В текущей реализации CMS-атрибуты для RSA и ГОСТ обрабатываются отдельно (см. check_cms_signed.c). Планируется унифицировать обработку общих атрибутов (messageDigest, signingTime, ESSCertID), чтобы упростить добавление новых алгоритмов и улучшить отладку.

Интеграция с PKCS#11

Поддержка аппаратных токенов (Рутокен, JaCarta) через стандарт PKCS#11 позволит генерировать ГОСТ-подписи и CSR непосредственно на токенах. Это важно для сертифицированных СКЗИ и интеграции с российскими криптопровайдерами.

Поддержка ГОСТ Р 34.12-2015 (Кузнечик, CTR-ACPKM)

Планируется добавить поддержку шифрования CMS-объектов (EncryptedData) с использованием ГОСТ Р 34.12-2015 в режиме CTR-ACPKM. Это позволит создавать полностью отечественные решения для зашифрованного документооборота (PDF, ZIP, S/MIME). Для этого потребуется доработка libgcrypt или использование альтернативного бэкенда.

Планы по выпуску

  • libksba-gost — отдельная ветка или релиз с полным ГОСТ-функционалом и унифицированным API.
  • Новые CLI-утилиты для проверки подписей, генерации CMS-контейнеров и работы с OCSP/CRL.
  • Интеграция с CI/CD для автоматического тестирования на всех платформах (Linux, Windows, macOS).

Мы открыты к сотрудничеству: Если вы разрабатываете систему, требующую ГОСТ-поддержки, присылайте запросы и предложения. Мы готовы адаптировать libksba под ваши задачи, будь то интеграция с СМЭВ, ЭДО или корпоративным УЦ.

7. Как начать использовать (для новичков и профи)

Для новичков: установка и базовое использование

Чтобы начать использовать libksba с поддержкой ГОСТ, выполните следующие шаги:

  1. Установите зависимости: Убедитесь, что у вас установлены libgcrypt (версия с поддержкой ГОСТ) и необходимые инструменты для сборки:
    
    sudo apt-get install autoconf automake libtool gettext bison texinfo gcc make libgpg-error-dev libgcrypt20-dev
          
    Это соответствует инструкции из AGENTS.md в патче.
  2. Соберите libksba: Загрузите исходный код с патчем и выполните сборку:
    
    ./autogen.sh --force && ./configure --enable-maintainer-mode && make
          
  3. Проверьте подпись: Используйте утилиту check_cms_signed для проверки CMS-подписи:
    
    ./check_cms_signed sig.p7s document.pdf cert.der
          
    Утилита выведет информацию о подписи (дата, издатель, серийный номер) и сохранит сертификат в cert.der.

Для профи: интеграция в проект

Разработчики могут интегрировать libksba в свои проекты для работы с ГОСТ-подписями. Пример минимального кода для проверки сертификата:


#include 
#include 

int main() {
  ksba_cert_t issuer_cert, cert;
  gpg_error_t err;

  /* Инициализация сертификатов (загрузка из файлов) */
  ksba_cert_new(&issuer_cert);
  ksba_cert_new(&cert);
  /* ... (загрузка issuer_cert и cert из DER-файлов) ... */

  /* Проверка подписи сертификата */
  err = _ksba_check_cert_sig(issuer_cert, cert);
  if (err) {
    fprintf(stderr, "Ошибка проверки: %s\n", gpg_strerror(err));
    return 1;
  }
  printf("Подпись сертификата верна!\n");

  /* Очистка */
  ksba_cert_release(issuer_cert);
  ksba_cert_release(cert);
  return 0;
}
  

Этот код демонстрирует базовую проверку подписи сертификата с использованием новой функции _ksba_check_cert_sig. Для более сложных сценариев (например, проверки цепочки сертификатов) используйте _ksba_check_cert_chain_tk26.

Совет: Для работы с аппаратными токенами добавьте интеграцию с PKCS#11 через libgcrypt или используйте готовые криптопровайдеры, такие как КриптоПро CSP.

8. Заключение

Поддержка ГОСТ в libksba — это значительный шаг к интеграции российской криптографии в open-source экосистему. Теперь библиотека может:

  • Обрабатывать сертификаты, CMS, CRL и OCSP с ГОСТ-алгоритмами.
  • Проверять соответствие строгим требованиям ТК-26.
  • Интегрироваться с российскими УЦ и СКЗИ без дополнительных патчей.

Для пользователей это означает удобство и надёжность при работе с ЭП. Для разработчиков — мощный и документированный API, упрощающий интеграцию с системами ЭДО, СМЭВ и другими. Для администраторов — снижение затрат на сопровождение и возможность использования в сертифицированных ОС.

libksba с поддержкой ГОСТ уже готова к использованию, и её развитие продолжается. Присоединяйтесь к сообществу, тестируйте, предлагайте улучшения — вместе мы сделаем криптографию доступнее и надёжнее!

Предыдущая Следующая
Комментарии
Обратная связь

Нашли ошибку или хотите предложить улучшение? Напишите нам.

Отправить отзыв

НАЙС.ОС включена в реестр российского ПО (#23155) и готова к сертификации ФСТЭК. Свидетельство о государственной регистрации программы для ЭВМ №2025612870 от 05 февраля 2025 г.