Codici di errore

Le implementazioni DAT forniscono codici di errore stabili separati dai messaggi leggibili. Il programma deve decidere il comportamento usando il codice e la categoria di nuovo tentativo, senza confrontare il testo del messaggio.

Come leggerli

text
DAT_<area>_<causa>
PrefissoArea
DAT_TOKEN_Stringa DAT e scadenza
DAT_CERT_Stringa e stato del certificato
DAT_SIG_Firma e verifica
DAT_CRYPTO_Cifratura e decifratura
DAT_KEY_Formato e autorità delle chiavi
DAT_MANAGER_Gestore dei certificati
DAT_CONFIG_Argomenti e configurazione
DAT_INTERNAL_Funzioni interne del runtime
DAT_CMS_Sincronizzazione del client CMS
DAT_AUTH_, DAT_REQ_, DAT_STORE_Server CMS

_UNKNOWN si usa soltanto per errori che non possono essere classificati con un altro codice nella stessa area. La stessa causa mantiene lo stesso nome anche in aree differenti.

Categorie di nuovo tentativo

CategoriaSignificatoGestione
TemporaneoPuò riuscire quando lo stato esterno torna disponibileRiprovare un numero limitato di volte con backoff
StatoPuò riuscire dopo una sincronizzazione dei certificati o un cambiamento dell’oraAggiornare lo stato necessario e riprovare
PermanenteFallirà di nuovo con lo stesso inputCorreggere input, configurazione o codice

Token e certificati

DAT_TOKEN_MALFORMEDNessun impattoPermanente

Il numero dei campi, i numeri o la rappresentazione Base64Url del DAT non rispettano la specifica. Scartare l’input.

DAT_TOKEN_EXPIREDNessun impattoPermanente

La data di scadenza del DAT è uguale o precedente all’ora corrente. È necessario ottenere un nuovo DAT.

DAT_CERT_MALFORMEDNessun impattoPermanente

La struttura o la rappresentazione dei campi della stringa del certificato non è valida.

DAT_CERT_NOT_FOUNDNessun impattoStato

Non è presente un certificato corrispondente al `cid` del DAT. Controllare lo stato della sincronizzazione.

DAT_CERT_NOT_SYNCEDNessun impattoStato

Il certificato potrebbe non essere ancora arrivato al servizio. Sincronizzare subito e valutare nuovamente.

DAT_CERT_NOT_YET_VALIDNessun impattoStato

L’istante iniziale del certificato non è ancora arrivato. Controllare l’orologio di sistema e i tempi di distribuzione.

DAT_CERT_EXPIREDNessun impattoPermanente

Il periodo di verifica del certificato è terminato.

DAT_CERT_DUPLICATEParzialePermanente

Lo stesso `cid` compare più volte in un singolo elenco di importazione. L’intera importazione viene rifiutata.

Firma, crittografia e chiavi

DAT_SIG_MISMATCHNessun impattoPermanenteshieldSospetto

La firma non corrisponde al contenuto. Il DAT è stato alterato oppure è stato firmato con un’altra chiave.

DAT_CRYPTO_TAG_MISMATCHNessun impattoPermanenteshieldSospetto

Il tag di autenticazione AES-GCM non corrisponde. Verificare un’alterazione del testo cifrato o un certificato errato.

DAT_KEY_INVALIDNessun impattoPermanente

La lunghezza, il formato o la combinazione di algoritmi della chiave non è valida.

DAT_SIG_KEY_MISSINGNessun impattoPermanente

Si è tentato di emettere un DAT con un certificato di sola verifica. Il servizio emittente richiede un certificato completo.

DAT_SIG_MISMATCH e DAT_CRYPTO_TAG_MISMATCH sono gli errori classificati come veri eventi dall’API pubblica degli eventi di sicurezza. Un singolo input errato non costituisce un guasto del servizio, ma la ripetizione va trattata come segnale di sicurezza.

Gestore e configurazione

DAT_MANAGER_NO_CERTIFICATEParzialeStato

Il gestore non contiene certificati. Importare i certificati o completare la sincronizzazione CMS.

DAT_MANAGER_NO_ISSUABLE_CERTIFICATEParzialeStato

Esistono certificati, ma nessun certificato completo è attualmente utilizzabile per l’emissione. Controllare nella catena delle cause scadenza, istante iniziale e stato verify-only.

DAT_CONFIG_ARGUMENT_INVALIDNessun impattoPermanente

Un argomento o un valore di configurazione è fuori dall’intervallo consentito.

DAT_INTERNAL_UNAVAILABLECriticoPermanente

La piattaforma corrente non offre la funzione crittografica o di rete richiesta.

Client CMS

CodiceSignificatoGestione abituale
DAT_CMS_URI_INVALIDFormato URI del CMS non validoCorreggere la configurazione
DAT_CMS_UNAUTHORIZEDAutenticazione non riuscitaCorreggere il token
DAT_CMS_FORBIDDENIl ruolo non dispone dell’autorizzazioneControllare il ruolo del token
DAT_CMS_ENDPOINT_NOT_FOUNDPercorso assente o diversoControllare indirizzo e percorso del CMS
DAT_CMS_NETWORKConnessione o trasferimento non riuscitoControllare la rete e applicare backoff
DAT_CMS_TIMEOUTTempo limite superatoRegolare rete e timeout
DAT_CMS_SERVER_ERRORErrore del server CMSControllare il server e applicare backoff
DAT_CMS_RESPONSE_INVALIDFormato della risposta riuscita non validoControllare il contratto tra server e client
DAT_CMS_VERSION_RESETLa versione del server è retrocessaControllare dati e distribuzione del CMS
DAT_CMS_IMPORT_FAILEDImpossibile applicare i certificati ricevutiEsaminare la catena delle cause
DAT_CMS_STOPPEDUso di un gestore già arrestatoCreare un nuovo gestore o correggere l’ordine delle chiamate

Le librerie con sincronizzazione iniziale best-effort conservano l’errore nell’apposito campo dell’ultimo errore. Se l’avvio deve fallire, usare l’API di sincronizzazione immediata che restituisce o genera direttamente l’errore.

Server CMS

CodiceHTTPSignificato
DAT_AUTH_UNAUTHORIZED401Token assente o non valido
DAT_AUTH_FORBIDDEN403Il ruolo del token non corrisponde all’autorizzazione richiesta
DAT_REQ_ALG_UNSUPPORTED400Nome dell’algoritmo non supportato
DAT_REQ_NOT_FOUND404·405Percorso o metodo non corrispondente
DAT_REQ_TOO_LARGE413Codice riservato al superamento del limite del corpo
DAT_STORE_UNAVAILABLE503Archivio temporaneamente non disponibile
DAT_STORE_UNKNOWN500Errore non classificato durante l’elaborazione dell’archivio

I client attuali non espongono direttamente il codice del server nel JSON non 2xx: convertono lo stato HTTP in un codice DAT_CMS_*. Il codice nel log del server può quindi differire da quello segnalato dal client.

Controllo per linguaggio

AmbienteCodice di erroreCategoria di nuovo tentativo
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)

Gli errori con una causa sottostante possono essere esaminati tramite la catena delle eccezioni o l’API per le cause del linguaggio.