Códigos de error ​

Las implementaciones de DAT proporcionan códigos de error estables además de mensajes legibles. Los programas deben decidir su comportamiento mediante el código y la clasificación de reintento, sin comparar cadenas de mensajes.

Cómo leerlos ​

text
DAT_<área>_<causa>
PrefijoÁrea
DAT_TOKEN_Cadena DAT y caducidad
DAT_CERT_Cadena y estado del certificado
DAT_SIG_Firma y verificación
DAT_CRYPTO_Cifrado y descifrado
DAT_KEY_Formato y permisos de claves
DAT_MANAGER_Gestor de certificados
DAT_CONFIG_Argumentos de llamada y configuración
DAT_INTERNAL_Funciones internas del runtime
DAT_CMS_Sincronización del cliente CMS
DAT_AUTH_, DAT_REQ_, DAT_STORE_Servidor CMS

_UNKNOWN se usa únicamente para los errores que no pueden clasificarse con otro código dentro de su área. La misma causa usa el mismo nombre aunque aparezca en áreas diferentes.

Clasificación de reintentos ​

ClasificaciónSignificadoTratamiento
TransitorioPuede funcionar cuando se recupere el estado externoReintentar de forma limitada tras un backoff
EstadoPuede funcionar al cambiar la sincronización de certificados o la horaActualizar el estado necesario y reintentar
PermanenteVolver a intentarlo con la misma entrada fallaráCorregir la entrada, la configuración o el código

Token y certificado ​

DAT_TOKEN_MALFORMEDSin impactoPermanente

El número de campos, los números o la representación Base64Url del DAT no cumplen la especificación. Descarta la entrada.

DAT_TOKEN_EXPIREDSin impactoPermanente

La fecha de caducidad del DAT es igual o anterior a la hora actual. Se necesita un DAT nuevo.

DAT_CERT_MALFORMEDSin impactoPermanente

La estructura o la representación de los campos de la cadena del certificado es incorrecta.

DAT_CERT_NOT_FOUNDSin impactoEstado

No existe un certificado para el `cid` del DAT. Comprueba el estado de sincronización de los certificados.

DAT_CERT_NOT_SYNCEDSin impactoEstado

Es posible que el certificado necesario todavía no haya llegado al servicio. Sincroniza inmediatamente y vuelve a evaluarlo.

DAT_CERT_NOT_YET_VALIDSin impactoEstado

La hora de inicio del certificado aún no ha llegado. Comprueba la hora del sistema y el momento de distribución del certificado.

DAT_CERT_EXPIREDSin impactoPermanente

Ha terminado el periodo durante el que se podía verificar con el certificado.

DAT_CERT_DUPLICATEParcialPermanente

El mismo `cid` aparece más de una vez en una única lista de importación. Se rechaza toda la importación.

Firma, cifrado y claves ​

DAT_SIG_MISMATCHSin impactoPermanenteshieldSospechoso

La firma no corresponde al contenido. El DAT puede haber sido alterado o firmado con otra clave.

DAT_CRYPTO_TAG_MISMATCHSin impactoPermanenteshieldSospechoso

La etiqueta de autenticación AES-GCM no coincide. Comprueba si se ha alterado el texto cifrado o si el certificado no corresponde.

DAT_KEY_INVALIDSin impactoPermanente

La longitud, el formato o la combinación de algoritmo de la clave no son válidos.

DAT_SIG_KEY_MISSINGSin impactoPermanente

Se intentó emitir un DAT con un certificado exclusivo para verificación. Los servicios emisores necesitan un certificado completo.

DAT_SIG_MISMATCH y DAT_CRYPTO_TAG_MISMATCH son errores que la API pública de eventos de seguridad clasifica como verdaderos. Una sola entrada no válida no supone una caída del servicio, pero las repeticiones deben observarse como un posible evento de seguridad.

Gestor y configuración ​

DAT_MANAGER_NO_CERTIFICATEParcialEstado

El gestor no tiene certificados. Importa certificados o completa la sincronización con CMS.

DAT_MANAGER_NO_ISSUABLE_CERTIFICATEParcialEstado

Hay certificados, pero ninguno completo puede emitir en este momento. Revisa en la cadena de causas la caducidad, la hora de inicio o el estado verify-only.

DAT_CONFIG_ARGUMENT_INVALIDSin impactoPermanente

Un argumento de llamada o un valor de configuración está fuera del intervalo permitido.

DAT_INTERNAL_UNAVAILABLECríticoPermanente

La función criptográfica o de red necesaria no está disponible en esta plataforma.

Cliente CMS ​

CódigoSignificadoTratamiento habitual
DAT_CMS_URI_INVALIDFormato no válido de la URI de CMSCorregir la configuración
DAT_CMS_UNAUTHORIZEDFallo de autenticaciónCorregir el token
DAT_CMS_FORBIDDENEl rol no tiene permisoComprobar el rol del token
DAT_CMS_ENDPOINT_NOT_FOUNDLa ruta no existe o es distintaComprobar la dirección y la ruta de CMS
DAT_CMS_NETWORKFallo de conexión o transferenciaComprobar la red y aplicar backoff
DAT_CMS_TIMEOUTTiempo de espera agotadoAjustar la red y los tiempos de espera
DAT_CMS_SERVER_ERRORError del servidor CMSComprobar el servidor y aplicar backoff
DAT_CMS_RESPONSE_INVALIDFormato no válido de una respuesta correctaComprobar el contrato entre servidor y cliente
DAT_CMS_VERSION_RESETLa versión del servidor retrocedióComprobar los datos de CMS y el despliegue
DAT_CMS_IMPORT_FAILEDNo se pudieron aplicar los certificados recibidosRevisar la cadena de causas
DAT_CMS_STOPPEDSe usó un gestor ya detenidoCrear otro gestor o corregir el orden de llamadas

Las bibliotecas cuya sincronización inicial es best-effort conservan el error en el campo del último error. Si el inicio debe fallar, usa la API de sincronización inmediata que devuelve o lanza el error directamente.

Servidor CMS ​

CódigoHTTPSignificado
DAT_AUTH_UNAUTHORIZED401El token no existe o no es válido
DAT_AUTH_FORBIDDEN403El rol del token no corresponde al permiso solicitado
DAT_REQ_ALG_UNSUPPORTED400Nombre de algoritmo no compatible
DAT_REQ_NOT_FOUND404·405La ruta o el método no coinciden
DAT_REQ_TOO_LARGE413Código reservado para superar el límite del cuerpo de la solicitud
DAT_STORE_UNAVAILABLE503El almacén no está disponible temporalmente
DAT_STORE_UNKNOWN500Error no clasificado al procesar el almacén

Actualmente, los clientes no exponen literalmente el código del servidor incluido en un JSON no 2xx: convierten el estado HTTP en un código DAT_CMS_*. Por ello, el código del registro del servidor y el del error del cliente pueden diferir.

Consulta por lenguaje ​

EntornoCódigo de errorClasificación de reintento
Rusterr.code()err.retry()
Godat.Code(err)dat.Retry(err)
JavaScript / TypeScripterror.codeerror.retry
Pythonerror.codeerror.retry
Rubyerror.codeerror.retry
Java / Kotlinerror.codeerror.retry
C#error.Codeerror.Retry
C / C++dat_error_code(error)dat_error_retry(error)

Los errores con una causa subyacente pueden inspeccionarse mediante la cadena de excepciones o la API de consulta de causas de cada lenguaje.