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 и проверяет его.
Пошаговое руководство
1. Подключение к CMS
Сервис выпуска использует токен для полных сертификатов. Немедленная синхронизация при запуске предотвращает выпуск до появления сертификатов.
2. Выпуск DAT
В этом примере открытый JSON помещается в plain, а защищённые сведения о пользователе в формате JSON — в secure.
3. Проверка DAT
parse проверяет срок действия и подпись, а затем расшифровывает secure. Используйте только payload, возвращённый после успешной проверки.
Основные функции
| Функция | Назначение |
|---|---|
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.
Текущая API выпуска для C принимает строки, заканчивающиеся NUL. Кодируйте произвольные байты в Base64Url или Hex и считывайте результат с учётом длин payload.
Сервисы только для проверки
Сервис, который не выпускает DAT, использует параметр verify-only и токен verify-only, а также вызывает только parse.
Завершение работы и ошибки
Освобождайте dat, payload и cms соответствующими функциями очистки.
Используйте коды ошибок и классификацию повторных попыток вместо сообщений об ошибках.