DAT C / C++ Biblioteca

GitHub

Instalación

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

Inicio rápido

Este flujo completo obtiene certificados de CMS, crea un DAT con datos JSON y lo verifica.

c

Paso a paso

1. Conectar con CMS

Un servicio emisor usa un token para certificados completos. La sincronización inmediata al iniciar evita emitir antes de que los certificados estén disponibles.

c

2. Emitir un DAT

Este ejemplo guarda JSON público en plain e información protegida del usuario en formato JSON en secure.

c

3. Verificar un DAT

parse comprueba la caducidad y la firma, y después descifra secure. Usa únicamente el payload devuelto tras una verificación correcta.

c

Funciones principales

FunciónPropósito
dat_cms_manager_syncSincroniza los certificados inmediatamente.
dat_cms_manager_issueAsigna y devuelve una string DAT.
dat_cms_manager_parseAsigna y devuelve un payload verificado.
dat_cms_manager_last_errorDevuelve el último error de sincronización.

Áreas de datos

  • plain: bytes firmados pero no cifrados.
  • secure: bytes cifrados.
  • payload: confía en él únicamente cuando parse termine correctamente.

Opciones además de JSON

Los ejemplos usan el conocido formato JSON. Para procesar más rápido, los datos binarios pueden evitar la serialización y el análisis de JSON, además de reducir el tamaño de los datos.

Guarda valores simples como texto o coloca datos estructurados en formatos binarios como Protobuf o MessagePack dentro de plain y secure.

c

La API de emisión C actual acepta strings terminadas en NUL. Codifica bytes arbitrarios como Base64Url o Hex y lee el resultado usando las longitudes del payload.

Servicios exclusivos para verificación

Un servicio que no emite DAT usa la opción verify-only y un token verify-only, y solo llama a parse.

Cierre y errores

Libera dat, payload y cms con sus respectivas funciones de limpieza.

Usa los códigos de error y las clasificaciones de reintento en lugar de los mensajes de error.