Códigos de erro ​

As implementações de DAT fornecem códigos de erro estáveis além de mensagens legíveis. Os programas devem decidir seu comportamento com base no código e na classificação de nova tentativa, sem comparar strings de mensagens.

Como ler ​

text
DAT_<área>_<causa>
PrefixoÁrea
DAT_TOKEN_String DAT e expiração
DAT_CERT_String e estado do certificado
DAT_SIG_Assinatura e verificação
DAT_CRYPTO_Criptografia e descriptografia
DAT_KEY_Formato e permissões da chave
DAT_MANAGER_Gerenciador de certificados
DAT_CONFIG_Argumentos de chamada e configuração
DAT_INTERNAL_Funções internas do runtime
DAT_CMS_Sincronização do cliente CMS
DAT_AUTH_, DAT_REQ_, DAT_STORE_Servidor CMS

_UNKNOWN é usado apenas para erros que não podem ser classificados por outro código na respectiva área. A mesma causa usa o mesmo nome mesmo em áreas diferentes.

Classificação de nova tentativa ​

ClassificaçãoSignificadoTratamento
TransitórioPode funcionar quando o estado externo se recuperarTentar novamente de forma limitada após backoff
EstadoPode funcionar quando a sincronização dos certificados ou o horário mudarAtualizar o estado necessário e tentar novamente
PermanenteTentar novamente com a mesma entrada continuará falhandoCorrigir a entrada, a configuração ou o código

Token e certificado ​

DAT_TOKEN_MALFORMEDSem impactoPermanente

A quantidade de campos, os números ou a representação Base64Url do DAT não correspondem à especificação. Descarte a entrada.

DAT_TOKEN_EXPIREDSem impactoPermanente

O horário de expiração do DAT é igual ou anterior ao horário atual. É necessário obter um novo DAT.

DAT_CERT_MALFORMEDSem impactoPermanente

A estrutura da string do certificado ou a representação dos campos está incorreta.

DAT_CERT_NOT_FOUNDSem impactoEstado

Não há certificado correspondente ao `cid` do DAT. Confira o estado de sincronização dos certificados.

DAT_CERT_NOT_SYNCEDSem impactoEstado

O certificado necessário talvez ainda não tenha chegado ao serviço. Sincronize imediatamente e avalie novamente.

DAT_CERT_NOT_YET_VALIDSem impactoEstado

O horário de início do certificado ainda não chegou. Confira o horário do sistema e o momento de distribuição do certificado.

DAT_CERT_EXPIREDSem impactoPermanente

O período em que o certificado podia verificar terminou.

DAT_CERT_DUPLICATEParcialPermanente

O mesmo `cid` apareceu mais de uma vez em uma única lista de importação. Toda a importação é rejeitada.

Assinatura, criptografia e chaves ​

DAT_SIG_MISMATCHSem impactoPermanenteshieldSuspeito

A assinatura não corresponde ao conteúdo. O DAT pode ter sido alterado ou assinado com outra chave.

DAT_CRYPTO_TAG_MISMATCHSem impactoPermanenteshieldSuspeito

A tag de autenticação AES-GCM não corresponde. Confira se o conteúdo criptografado foi alterado ou se o certificado não corresponde.

DAT_KEY_INVALIDSem impactoPermanente

O comprimento, o formato ou a combinação de algoritmo da chave é inválido.

DAT_SIG_KEY_MISSINGSem impactoPermanente

Houve uma tentativa de emitir DAT com um certificado exclusivo para verificação. Os serviços emissores precisam de um certificado completo.

DAT_SIG_MISMATCH e DAT_CRYPTO_TAG_MISMATCH são erros classificados como verdadeiros pela API pública de eventos de segurança. Uma única entrada inválida não representa indisponibilidade do serviço, mas repetições devem ser observadas como um possível evento de segurança.

Gerenciador e configuração ​

DAT_MANAGER_NO_CERTIFICATEParcialEstado

O gerenciador não contém certificados. Importe certificados ou conclua a sincronização do CMS.

DAT_MANAGER_NO_ISSUABLE_CERTIFICATEParcialEstado

Há certificados, mas nenhum certificado completo pode emitir no momento. Confira a expiração, o horário de início ou o estado verify-only na cadeia de causas.

DAT_CONFIG_ARGUMENT_INVALIDSem impactoPermanente

Um argumento de chamada ou valor de configuração está fora do intervalo permitido.

DAT_INTERNAL_UNAVAILABLECríticoPermanente

A função criptográfica ou de rede necessária não está disponível nesta plataforma.

Cliente CMS ​

CódigoSignificadoTratamento comum
DAT_CMS_URI_INVALIDFormato inválido da URI do CMSCorrigir a configuração
DAT_CMS_UNAUTHORIZEDFalha na autenticaçãoCorrigir o token
DAT_CMS_FORBIDDENO papel não tem permissãoConferir o papel do token
DAT_CMS_ENDPOINT_NOT_FOUNDO caminho não existe ou é diferenteConferir o endereço e o caminho do CMS
DAT_CMS_NETWORKFalha de conexão ou transferênciaConferir a rede e aplicar backoff
DAT_CMS_TIMEOUTTimeoutAjustar a rede e os timeouts
DAT_CMS_SERVER_ERRORErro do servidor CMSConferir o servidor e aplicar backoff
DAT_CMS_RESPONSE_INVALIDFormato inválido de uma resposta bem-sucedidaConferir o contrato entre servidor e cliente
DAT_CMS_VERSION_RESETA versão do servidor regrediuConferir os dados do CMS e a implantação
DAT_CMS_IMPORT_FAILEDFalha ao aplicar os certificados recebidosConferir a cadeia de causas
DAT_CMS_STOPPEDUso de um gerenciador já encerradoCriar outro gerenciador ou corrigir a ordem das chamadas

Bibliotecas cuja sincronização inicial é best-effort armazenam o erro no campo de último erro. Se a inicialização tiver de falhar, use a API de sincronização imediata que retorna ou lança o erro diretamente.

Servidor CMS ​

CódigoHTTPSignificado
DAT_AUTH_UNAUTHORIZED401O token está ausente ou é inválido
DAT_AUTH_FORBIDDEN403O papel do token não corresponde à permissão solicitada
DAT_REQ_ALG_UNSUPPORTED400Nome de algoritmo não suportado
DAT_REQ_NOT_FOUND404·405O caminho ou o método não corresponde
DAT_REQ_TOO_LARGE413Código reservado para exceder o limite do corpo da solicitação
DAT_STORE_UNAVAILABLE503O armazenamento está temporariamente indisponível
DAT_STORE_UNKNOWN500Erro não classificado durante o processamento do armazenamento

Atualmente, os clientes não expõem literalmente o código do servidor em um JSON não 2xx: eles convertem o status HTTP em um código DAT_CMS_*. Portanto, o código no log do servidor e o código de erro do cliente podem ser diferentes.

Como consultar por linguagem ​

AmbienteCódigo de erroClassificação de nova tentativa
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)

Erros com causas subjacentes podem ser consultados pela cadeia de exceções ou pela API de acesso à causa de cada linguagem.