DAT C / C++ Библиотека

GitHub

Установка

Until it is officially merged into vcpkg, you will need to manually install and integrate the project using this repository.
https://github.com/microsoft/vcpkg/pull/52088
version: 4.7.0

Быстрый старт

Этот полный процесс получает сертификаты из CMS, создаёт DAT с данными JSON и проверяет его.

c

Пошаговое руководство

1. Подключение к CMS

Сервис выпуска использует токен для полных сертификатов. Немедленная синхронизация при запуске предотвращает выпуск до появления сертификатов.

c

2. Выпуск DAT

В этом примере открытый JSON помещается в plain, а защищённые сведения о пользователе в формате JSON — в secure.

c

3. Проверка DAT

parse проверяет срок действия и подпись, а затем расшифровывает secure. Используйте только payload, возвращённый после успешной проверки.

c

Основные функции

ФункцияНазначение
dat_cms_manager_syncНемедленно синхронизирует сертификаты.
dat_cms_manager_issueВыделяет память и возвращает строку DAT.
dat_cms_manager_parseВыделяет память и возвращает проверенный payload.
dat_cms_manager_last_errorВозвращает последнюю ошибку синхронизации.

Области данных

  • plain: байты, которые подписаны, но не зашифрованы.
  • secure: зашифрованные байты.
  • payload: доверяйте ему только после успешного выполнения parse.

Варианты помимо JSON

В примерах используется привычный JSON. Для ускорения обработки двоичные данные позволяют обойтись без сериализации и разбора JSON, одновременно уменьшая объём данных.

Храните простые значения как текст либо помещайте структурированные данные в двоичных форматах, таких как Protobuf или MessagePack, в plain и secure.

c

Текущая API выпуска для C принимает строки, заканчивающиеся NUL. Кодируйте произвольные байты в Base64Url или Hex и считывайте результат с учётом длин payload.

Сервисы только для проверки

Сервис, который не выпускает DAT, использует параметр verify-only и токен verify-only, а также вызывает только parse.

Завершение работы и ошибки

Освобождайте dat, payload и cms соответствующими функциями очистки.

Используйте коды ошибок и классификацию повторных попыток вместо сообщений об ошибках.