DAT C / C++ Biblioteca
GitHubInstalació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.
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.
2. Emitir un DAT
Este ejemplo guarda JSON público en plain e información protegida del usuario en formato JSON en secure.
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.
Funciones principales
| Función | Propósito |
|---|---|
dat_cms_manager_sync | Sincroniza los certificados inmediatamente. |
dat_cms_manager_issue | Asigna y devuelve una string DAT. |
dat_cms_manager_parse | Asigna y devuelve un payload verificado. |
dat_cms_manager_last_error | Devuelve el último error de sincronización. |
Áreas de datos
plain: bytes firmados pero no cifrados.secure: bytes cifrados.payload: confía en él únicamente cuandoparsetermine 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.
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.