DAT
Dokumentation

Fehlercodes

Dies sind die gemeinsamen Fehlercodes der offiziell von DAT unterstützten Service-Bibliotheken.

Jeder Code trägt zwei Werte — Auswirkung und Wiederholung — und einige zusätzlich die Markierung Verdacht.

Auswirkung — was der Dienst abbekommt

Das ist der Maßstab für Alarme. Betrachtet wird nur: „Steht der Dienst gerade still?"

AuswirkungBedeutungBeispiel
KritischDer Dienst oder eine bestimmte Funktion steht still. Ausstellung unmöglich, Synchronisierung dauerhaft fehlgeschlagen, Initialisierung fehlgeschlagenDer ausstellende Server hat kein einziges verwendbares Zertifikat
TeilweiseEinzelne Anfragen oder Zyklen schlagen fehl, der Dienst läuft aber weiter. Meist erholt er sich von selbstEin CMS-Zyklus schlägt fehl. Mit den vorhandenen Zertifikaten läuft alles weiter
Keine AuswirkungEine Anfrage wird abgelehnt, mehr nichtEin manipuliertes Token kommt an. Aussortieren genügt

Keine Auswirkung ist kein Alarmfall. Wenn die gesamte Bereitschaft nachsehen müsste, weil einmal eine fehlerhafte Eingabe eintraf, wird der Alarm bedeutungslos.

Verdacht — bei Dauerhaftigkeit untersuchen

Codes mit der Markierung Verdacht sind im Einzelfall Teil des normalen Betriebs. Clients können jederzeit falsche Werte senden, und es ist genau die Aufgabe der Bibliothek, diese auszusortieren.

Treten solche Fehler jedoch dauerhaft oder gehäuft aus einer bestimmten Quelle auf, liegt einer von zwei Fällen vor.

  • Konfigurationsfehler — ein fehlerhaftes Deployment, verbliebene Clients einer alten Version oder nicht zueinander passende Zertifikate.
  • Angriffsversuch — der Versuch, mit manipulierten Tokens oder Schlüsseln die Prüfung zu bestehen, oder das Abtasten nach gültigen Werten.

Deshalb ist es richtig, für diese Codes die Anzahl als Metrik zu erfassen. Gemeldet wird erst beim Überschreiten eines Schwellenwerts.

Wiederholung

WiederholungBedeutung
VorübergehendLöst sich mit einem erneuten Versuch nach Backoff
DauerhaftNicht wiederholen. Konfiguration oder Eingabe muss korrigiert werden
StatusKein Fehler, sondern ein Signal

Token

Probleme mit der empfangenen Token-Zeichenkette selbst.

DAT_TOKEN_MALFORMEDKeine AuswirkungDauerhaftshieldVerdacht

Die durch Punkte getrennten Teile sind nicht genau fünf, expire ist nicht rein dezimal, cid ist nicht rein hexadezimal, plain oder secure ist kein base64url, oder ein Zahlenfeld überschreitet den darstellbaren Ganzzahlbereich.

arrow_forwardAnfrage ablehnen

DAT_TOKEN_EXPIREDKeine AuswirkungDauerhaft

expire <= now. Auch der exakte Zeitpunkt gilt als abgelaufen — bei expire == now ist das Token bereits abgelaufen.

arrow_forwardNeuausstellung des Tokens veranlassen

DAT_TOKEN_UNKNOWNTeilweiseDauerhaft

Ein Token-Fehler, der sich keiner der obigen Kategorien zuordnen lässt.

arrow_forwardLogs prüfen

Ablauf und Formatfehler niemals vermischen

Die Reaktionen sind gegensätzlich — Ablauf ist ein normales Lebensende, hier genügt es, das Token erneuern zu lassen; ein Formatfehler bedeutet, dass das Token von vornherein nicht von uns stammt und abgelehnt werden muss.

Beim Parsen wird zuerst die Struktur festgestellt, danach werden die Werte betrachtet. Eine Zeichenkette wie "1.2.3" mit zu wenigen Teilen ist kein abgelaufenes Token, sondern von vornherein kein Token — also DAT_TOKEN_MALFORMED.

Auch ein Vorzeichen im Feld expire, etwa +100, ist kein Ablauf, sondern ein Formatfehler. Erlaubt sind ausschließlich reine ASCII-Ziffern.


Zertifikat

Das Format der Zertifikatszeichenkette und die Frage, ob dieses Zertifikat jetzt verwendbar ist.

DAT_CERT_MALFORMEDKritischDauerhaft

Die durch Punkte getrennten Teile sind nicht genau acht, das Parsen von cid, start, duration oder ttl ist fehlgeschlagen, ein Schlüsselfeld ist kein base64url, oder start + duration + ttl überschreitet u64.

arrow_forwardZertifikat neu ausrollen

DAT_CERT_EXPIREDKritischDauerhaft

start + duration + ttl < now. Vollständig abgelaufen — weder Ausstellung noch Prüfung sind möglich.

arrow_forwardZertifikat erneuern

DAT_CERT_NOT_YET_ISSUABLEKritischVorübergehend

now < start. Das Ausstellungsfenster ist noch nicht geöffnet.

arrow_forwardWarten

DAT_CERT_ISSUANCE_ENDEDKritischDauerhaft

now > start + duration, aber die TTL läuft noch. Ausstellen ist nicht mehr möglich, nur noch prüfen.

arrow_forwardNeues Zertifikat ausrollen

DAT_CERT_VERIFY_ONLYKritischDauerhaft

Ein Zertifikat, das nur den öffentlichen Schlüssel ohne privaten Signaturschlüssel enthält. Prüfen ist möglich, Ausstellen nicht.

arrow_forwardDeployment-Konfiguration prüfen

DAT_CERT_NOT_FOUNDKeine AuswirkungDauerhaftshieldVerdacht

Zur cid des Tokens liegt kein Zertifikat vor. Entweder ein gefälschtes Token oder ein fehlerhaftes Ausrollen.

arrow_forwardAnfrage ablehnen

DAT_CERT_NOT_SYNCEDTeilweiseVorübergehend

Diese cid wurde noch nicht vom CMS empfangen. Tritt kurz nach dem Ausrollen eines neuen Zertifikats auf.

arrow_forwardNach der Synchronisierung erneut versuchen

DAT_CERT_DUPLICATE_CIDKritischDauerhaft

In der importierten Liste kommt dieselbe cid mehr als einmal vor.

arrow_forwardServerantwort prüfen

DAT_CERT_UNKNOWNTeilweiseDauerhaft

Ein Zertifikatsfehler, der sich keiner der obigen Kategorien zuordnen lässt.

arrow_forwardLogs prüfen

DAT_CERT_NOT_FOUND und DAT_CERT_NOT_SYNCED sehen gleich aus, erfordern aber unterschiedliche Reaktionen. Beim ersten handelt es sich um eine cid, die wir nie ausgestellt haben — Warten hilft nicht. Der zweite löst sich, sobald die Synchronisierung erfolgt ist.

Ein einzelnes DAT_CERT_NOT_FOUND sortiert man einfach aus; steigt die Zahl plötzlich, ist entweder das Ausrollen aus dem Tritt geraten oder es kursieren gefälschte Tokens.


Signatur

DAT_SIG_MISMATCHKeine AuswirkungDauerhaftshieldVerdacht

Die Signaturprüfung endete mit einer Abweichung. Der HMAC-Wert stimmt nicht überein oder ECDSA verify liefert false.

arrow_forwardSitzung sperren, Security-Log

DAT_SIG_MALFORMEDKeine AuswirkungDauerhaftshieldVerdacht

Der Signaturteil ist leer, kein base64url, die Länge von ECDSA r‖s passt nicht zur Kurve, oder die DER-Umwandlung ist fehlgeschlagen.

arrow_forwardAnfrage ablehnen

DAT_SIG_KEY_MISSINGKritischDauerhaft

Es wurde versucht, mit einem Verify-only-Schlüssel zu signieren. Zur Laufzeit liegt kein privater Schlüssel vor.

arrow_forwardKonfiguration des ausstellenden Servers prüfen

DAT_SIG_BACKENDTeilweiseDauerhaft

Die Signatur- bzw. Prüfoperation konnte selbst nicht ausgeführt werden. Falscher Schlüsseltyp, freigegebenes Handle oder ein interner Fehler der Krypto-Bibliothek.

arrow_forwardSchlüsseltyp und Bibliothek prüfen

DAT_SIG_UNKNOWNTeilweiseDauerhaft

Ein Signaturfehler, der sich keiner der obigen Kategorien zuordnen lässt.

arrow_forwardLogs prüfen

Abweichung und Backend-Fehler nicht vermischen

Die beiden Codes liegen auf entgegengesetzten Achsen.

  • DAT_SIG_MISMATCH — lediglich eine nicht passende eingehende Signatur, also ohne Auswirkung auf den Dienst; bei Dauerhaftigkeit jedoch ein Fall für Verdacht.
  • DAT_SIG_BACKEND — die Prüfoperation selbst lief nicht, also ein Problem auf unserer Seite, und kein Verdachtsfall.

Wird ein falscher Schlüsseltyp oder ein Bibliotheksfehler als „Signaturabweichung" gemeldet, mischt sich eine Situation, in der tatsächlich unser Code defekt ist, unter die Angriffsindikatoren. Umgekehrt fällt eine echte Fälschung, die als Backend-Fehler eingestuft wird, komplett aus den Verdachtsmetriken heraus.


Verschlüsselung

Probleme bei der Ver- und Entschlüsselung der secure-Payload.

DAT_CRYPTO_TAG_MISMATCHKeine AuswirkungDauerhaftshieldVerdacht

Das AES-GCM-Authentifizierungs-Tag stimmt nicht. Entweder wurde secure manipuliert oder der Zertifikatsschlüssel ist ein anderer.

arrow_forwardSitzung sperren, Security-Log

DAT_CRYPTO_DATA_INVALIDKeine AuswirkungDauerhaftshieldVerdacht

Der Chiffretext ist nicht leer, aber höchstens so lang wie der IV (12 Byte), oder die Eingabe überschreitet die Implementierungsgrenze (etwa INT_MAX).

arrow_forwardAnfrage ablehnen

DAT_CRYPTO_BACKENDTeilweiseDauerhaft

Die Ver- bzw. Entschlüsselung konnte nicht ausgeführt werden. Die Plattform unterstützt GCM nicht oder die Kontextinitialisierung ist fehlgeschlagen.

arrow_forwardPlattformunterstützung prüfen

DAT_CRYPTO_UNKNOWNTeilweiseDauerhaft

Ein Ver-/Entschlüsselungsfehler, der sich keiner der obigen Kategorien zuordnen lässt.

arrow_forwardLogs prüfen

Eine leere secure-Payload ist kein Fehler. Leere Eingabe wird zu leerer Ausgabe, und es wird kein Code erzeugt.

Auf dem Pfad ohne Signaturprüfung ist das GCM-Tag die einzige Integritätsprüfung. Deshalb wird DAT_CRYPTO_TAG_MISMATCH nicht mit anderen Entschlüsselungsfehlern in einen Code zusammengefasst.


Schlüssel

DAT_KEY_INVALIDKeine AuswirkungDauerhaftshieldVerdacht

Die Schlüssellänge passt nicht zum deklarierten Algorithmus (HMAC 32/48/64, AES 16/32), der Punkt liegt nicht auf der Kurve, d ∉ [1,n-1], das Format ist nicht unkomprimiert (0x04), oder privater und öffentlicher Schlüssel bilden kein Paar.

arrow_forwardSchlüssel austauschen

DAT_KEY_VERIFY_ONLY_UNSUPPORTEDKritischDauerhaft

Für ein Verfahren der HMAC-Familie wurde ein Verify-only-Export angefordert.

arrow_forwardAlgorithmus wechseln

DAT_KEY_UNKNOWNTeilweiseDauerhaft

Ein Schlüsselfehler, der sich keiner der obigen Kategorien zuordnen lässt.

arrow_forwardLogs prüfen

Drei ähnlich aussehende, aber verschiedene Fälle:

CodeBedeutung
DAT_KEY_VERIFY_ONLY_UNSUPPORTEDStrukturelle Grenze des Algorithmus. HMAC ist symmetrisch und kennt keinen öffentlichen Schlüssel
DAT_SIG_KEY_MISSINGLaufzeitzustand. In diesem Schlüssel steckt derzeit kein privater Schlüssel
DAT_CERT_VERIFY_ONLYAusrollform. Dieses Zertifikat wurde nur zum Prüfen ausgerollt

Manager

Der Zustand des Objekts, das Zertifikate hält und zum Ausstellen und Prüfen verwendet.

DAT_MANAGER_NO_CERTIFICATEKritischVorübergehend

Es liegt kein einziges Zertifikat vor. Entweder vor dem Import oder nach einer fehlgeschlagenen ersten CMS-Synchronisierung.

arrow_forwardCMS-Verbindung prüfen

DAT_MANAGER_NO_ISSUABLE_CERTIFICATEKritischDauerhaft

Zertifikate sind vorhanden, aber keines davon ist derzeit zum Ausstellen verwendbar. Der Grund wird mitgeliefert.

arrow_forwardAnhand des Grundes (cause) entscheiden — siehe Tabelle unten

DAT_MANAGER_DISPOSEDKritischDauerhaft

Ein bereits freigegebener Manager oder ein freigegebenes Zertifikat wurde verwendet.

arrow_forwardAufrufenden Code korrigieren

DAT_MANAGER_UNKNOWNTeilweiseDauerhaft

Ein Manager-Fehler, der sich keiner der obigen Kategorien zuordnen lässt.

arrow_forwardLogs prüfen

Der Grund (cause) von DAT_MANAGER_NO_ISSUABLE_CERTIFICATE ist einer von vieren. Je nach Ursache ist das Vorgehen völlig unterschiedlich.

GrundBedeutungWiederholungReaktion
DAT_CERT_NOT_YET_ISSUABLEVor Beginn des AusstellungsfenstersVorübergehendLöst sich durch Warten
DAT_CERT_ISSUANCE_ENDEDAusstellungsfenster beendet, nur noch Prüfung möglichDauerhaftEin neues Zertifikat muss ausgerollt werden
DAT_CERT_EXPIREDDer gesamte Bestand ist abgelaufenDauerhaftDie Zertifikate müssen erneuert werden
DAT_CERT_VERIFY_ONLYDer gesamte Bestand dient nur der PrüfungDauerhaftEin Fehler in der Deployment-Konfiguration

Ist der ausstellende Server so konfiguriert, dass er nur reine Prüfzertifikate erhält, erscheint DAT_CERT_VERIFY_ONLY. Warten hilft hier nie, deshalb ist dies kein Fall für eine Wiederholung.


Konfiguration

Probleme mit den vom Aufrufer übergebenen Werten. Die CONFIG-Familie besteht durchweg aus Fehlern, die im Code behoben werden müssen; treten sie im Betrieb auf, ist das Deployment fehlerhaft.

DAT_CONFIG_ALG_UNSUPPORTEDKritischDauerhaft

Unbekannter Algorithmusname. Er muss exakt der Wire-Schreibweise entsprechen (ECDSA-P256, IV-AES256-GCM).

arrow_forwardAlgorithmusnamen prüfen

DAT_CONFIG_ARGUMENT_INVALIDKritischDauerhaft

Ein Pflichtargument ist null, liegt außerhalb des zulässigen Bereichs (negativer Zeitwert, interval <= 0), hat einen nicht unterstützten Typ (in dynamisch typisierten Sprachen eine Zahl oder ein Boolescher Wert als Payload), oder der zu signierende Body ist leer.

arrow_forwardAufrufenden Code korrigieren

DAT_CONFIG_URI_INVALIDKritischDauerhaft

Die URI des CMS-Servers entspricht nicht der Spezifikation. Nicht parsebar, Schema ist weder http noch https, oder es hängt ein Pfad bzw. eine Query daran.

arrow_forwardURI korrigieren

DAT_CONFIG_UNKNOWNKritischDauerhaft

Ein Konfigurationsfehler, der sich keiner der obigen Kategorien zuordnen lässt.

arrow_forwardLogs prüfen


Intern

Probleme der Ausführungsumgebung und der Laufzeit.

DAT_INTERNAL_UNAVAILABLEKritischDauerhaft

Das Krypto-Backend oder die Laufzeit-API fehlt vollständig. crypto.subtle ist nicht vorhanden, die Plattform unterstützt AES-GCM nicht, oder die Laufzeitversion ist zu alt.

arrow_forwardDeployment und Plattform prüfen

DAT_INTERNAL_UNKNOWNKritischDauerhaft

Fehlgeschlagene Speicherzuweisung, fehlgeschlagene Zufallszahlenerzeugung, fehlgeschlagene Sperrenanforderung, oder ein als unerreichbar entworfener Zweig wurde erreicht.

arrow_forwardLogs prüfen

DAT_INTERNAL_UNAVAILABLE löst sich, indem die Deployment-Umgebung korrigiert wird; DAT_INTERNAL_UNKNOWN ist meist eine Laufzeitstörung oder ein Bibliotheksfehler.


CMS-Synchronisierung

Ohne CMS-Synchronisierung treten diese Codes nicht auf.

DAT_CMS_UNREACHABLETeilweiseVorübergehend

DNS-Fehler, abgelehnte Verbindung, TLS-Fehler, Timeout. Der Timeout hat keinen eigenen Code, sondern ist hier enthalten — die Reaktion ist dieselbe.

arrow_forwardNach Backoff erneut versuchen

DAT_CMS_UNAUTHORIZEDKritischDauerhaft401

Der Server hat mit 401 geantwortet. Das Token fehlt oder ist falsch.

arrow_forwardToken-Konfiguration prüfen

DAT_CMS_FORBIDDENKritischDauerhaft403

Der Server hat mit 403 geantwortet. Das Token ist gültig, hat aber keine Berechtigung für diesen Endpunkt.

arrow_forwardToken-Stufe prüfen

DAT_CMS_ENDPOINT_NOT_FOUNDKritischDauerhaft404

Der Server hat mit 404 geantwortet. Die URL ist falsch.

arrow_forwardURL-Konfiguration prüfen

DAT_CMS_SERVER_ERRORTeilweiseVorübergehend5xx

Der Server hat mit 5xx geantwortet.

arrow_forwardNach Backoff erneut versuchen

DAT_CMS_HTTP_STATUSKritischDauerhaft

Eine Nicht-2xx-Antwort, die keinem der obigen Fälle entspricht.

arrow_forwardStatuscode prüfen

DAT_CMS_MALFORMEDKritischDauerhaft

Die Antwort enthält keine Versionszeile, die Versionszeile ist nicht rein dezimal, oder sie überschreitet den Wertebereich.

arrow_forwardServerversion prüfen

DAT_CMS_IMPORT_FAILEDKritischDauerhaft

Die Antwort kam an, aber die Zertifikate konnten nicht übernommen werden. Die Ursache steckt in cause.

arrow_forwardCERT_* / KEY_* in cause prüfen

DAT_CMS_VERSION_RESETKeine AuswirkungStatus200

Der Server hat eine ältere Version zurückgegeben als unsere. Das ist die Anweisung zur vollständigen Neusynchronisierung.

arrow_forwardWird automatisch behandelt

DAT_CMS_NOT_SYNCEDKritischVorübergehend

Es gab noch keine einzige erfolgreiche Synchronisierung.

arrow_forwardAuf die erste Synchronisierung warten

DAT_CMS_SYNC_IN_PROGRESSKeine AuswirkungStatus

Die vorherige Synchronisierung läuft noch, deshalb wurde dieser Zyklus übersprungen. Kein Fehler.

DAT_CMS_NOT_SUPPORTEDKritischDauerhaft

Die CMS-Funktion ist nicht Teil des Builds. Das Feature ist deaktiviert oder CURL fehlt.

arrow_forwardBuild-Optionen prüfen

DAT_CMS_UNKNOWNTeilweiseDauerhaft

Ein CMS-Fehler, der sich keiner der obigen Kategorien zuordnen lässt.

arrow_forwardLogs prüfen

Die Codes, bei denen die Synchronisierung als dauerhaft fehlgeschlagen gilt (UNAUTHORIZED, FORBIDDEN, ENDPOINT_NOT_FOUND, MALFORMED, IMPORT_FAILED), sind allesamt kritisch. Eine Wiederholung löst nichts, während die Zertifikate weiter ablaufen — bleibt es unbeachtet, kommt der Dienst zwangsläufig zum Stillstand.

UNREACHABLE und SERVER_ERROR sind dagegen teilweise. Mit den vorhandenen Zertifikaten läuft alles weiter, und im nächsten Zyklus erholt sich die Synchronisierung von selbst — schlägt sie jedoch dauerhaft fehl, geht sie am Ende in „kritisch" über. Setzen Sie den Alarm auf die Anzahl aufeinanderfolgender Fehlschläge.

Synchronisierungsfehler werden nicht als Ausnahme geworfen

Auch wenn die erste Synchronisierung fehlschlägt, wird der Manager normal zurückgegeben — es ist besser, wenn die Synchronisierung wenigstens verspätet gelingt. Der Fehlschlag bleibt stattdessen als abfragbarer Zustand erhalten.

ClientAbfrage
Rustmanager.last_error().await
Gomanager.LastError()
JavaScriptmanager.lastError()
Pythonmanager.last_error()
Rubymanager.last_error
Java/Kotlinmanager.lastError
C#manager.LastError
C/C++dat_cms_manager_last_error(m)

Gab es noch keinen Erfolg, steht dort DAT_CMS_NOT_SYNCED; im Normalfall ist der Wert leer.


Server

Codes, die der CMS-Server erzeugt. Clients erzeugen sie nicht, sondern empfangen sie nur.

DAT_AUTH_UNAUTHORIZEDKeine AuswirkungDauerhaftshieldVerdacht401

Der Header Authorization fehlt, oder das Token ist auf keiner Stufe registriert.

DAT_AUTH_FORBIDDENKeine AuswirkungDauerhaftshieldVerdacht403

Das Token ist registriert, entspricht aber nicht der Stufe, die dieser Endpunkt verlangt.

DAT_AUTH_DISABLEDKritischStatus

Es ist kein einziges Token konfiguriert, deshalb ist die Authentifizierung vollständig deaktiviert. Damit steht sogar die API zur Zertifikatsausstellung ohne Authentifizierung offen. Erscheint nicht in der Antwort, sondern nur im Startprotokoll.

arrow_forwardToken sofort konfigurieren

DAT_REQ_MALFORMEDKeine AuswirkungDauerhaftshieldVerdacht400

Pfad- oder Query-Parameter sind nicht interpretierbar, oder ein Argument liegt außerhalb des zulässigen Bereichs (negatives delay, mehr als zehn Jahre usw.).

DAT_REQ_ALG_UNSUPPORTEDKeine AuswirkungDauerhaft400

Der Algorithmusname im Anfragepfad ist unbekannt.

DAT_REQ_NOT_FOUNDKeine AuswirkungDauerhaftshieldVerdacht404·405

Diese Route existiert nicht oder die Methode weicht ab.

DAT_REQ_TOO_LARGEKeine AuswirkungDauerhaftshieldVerdacht413

Die Größe des Anfragekörpers wurde überschritten.

DAT_REQ_UNKNOWNKeine AuswirkungDauerhaft400

Ein Anfragefehler, der sich keiner der obigen Kategorien zuordnen lässt.

DAT_STORE_UNAVAILABLETeilweiseVorübergehend503

Abgerissene DB-Verbindung, erschöpfter Verbindungspool, Sperrenkonkurrenz, Timeout. Der einzige Code, der 503 verwendet — das Signal, an dem der Client erkennt: „Das wird durch Warten besser."

arrow_forwardNach Backoff erneut versuchen

DAT_STORE_UNKNOWNKritischDauerhaft500

Fehlgeschlagene Lese- oder Schreibvorgänge, fehlende Tabelle, Schemaabweichung, beschädigte Zertifikatszeile.

arrow_forwardDB-Zustand prüfen

Antwortumschlag:

json
{
  "code": "DAT_REQ_ALG_UNSUPPORTED",
  "details": { "algorithm": "BOGUS-ALG" }
}

Fehler, die beim Erzeugen und Verarbeiten von Zertifikaten auftreten, verwendet auch der Server unverändert aus den obigen gemeinsamen Codes (DAT_CERT_*, DAT_KEY_*, DAT_CONFIG_*).

Wenn ein Servercode eintrifft

Der Client hüllt den Servercode in seinen eigenen CMS-Code und bewahrt das Original in cause auf.

EmpfangenHTTPCode des Clients
DAT_AUTH_UNAUTHORIZED401DAT_CMS_UNAUTHORIZED
DAT_AUTH_FORBIDDEN403DAT_CMS_FORBIDDEN
DAT_REQ_NOT_FOUND404DAT_CMS_ENDPOINT_NOT_FOUND
DAT_REQ_* (übrige)400·405·413DAT_CMS_HTTP_STATUS
DAT_STORE_UNAVAILABLE503DAT_CMS_SERVER_ERROR
DAT_STORE_UNKNOWN500DAT_CMS_SERVER_ERROR
(Versionsrückstufung)200DAT_CMS_VERSION_RESET

Nach Symptom suchen

SymptomCode
Direkt nach dem Login geht es, kurz darauf wird abgelehntDAT_TOKEN_EXPIRED — Die Lebensdauer des Tokens ist abgelaufen. Eine Neuausstellung genügt
Prüfung schlägt nur auf einem bestimmten Server fehlDAT_CERT_NOT_SYNCED — Dieser Server hat die neue CID noch nicht erhalten
Dasselbe Token wird auf allen Servern abgelehntDAT_CERT_NOT_FOUND — Eine CID, die wir nie ausgestellt haben
Der ausstellende Server kann kein Token erzeugenDAT_MANAGER_NO_ISSUABLE_CERTIFICATE + DAT_CERT_VERIFY_ONLYEs wurde verify-only ausgerollt
Ausstellung schlägt nur direkt nach dem Start fehlDAT_MANAGER_NO_CERTIFICATE — Vor der ersten Synchronisierung. Löst sich in Kürze
Die CMS-Synchronisierung schlägt dauerhaft fehlDAT_CMS_UNAUTHORIZED — Das Token ist falsch. Eine Wiederholung löst nichts
Es kommt kein einziges Zertifikat anDAT_CMS_ENDPOINT_NOT_FOUND — Ein Tippfehler in der URL
Nur auf einer bestimmten Plattform schlägt es fehlDAT_INTERNAL_UNAVAILABLE — Das Krypto-Backend fehlt
Fehlgeschlagene Prüfungen nehmen plötzlich zuDAT_SIG_MISMATCH — Einzeln harmlos, aber gehäuft ein Fälschungsversuch
Die secure-Entschlüsselung schlägt plötzlich fehlDAT_CRYPTO_TAG_MISMATCH — Die Zertifikate passen nicht zusammen oder es ist ein Manipulationsversuch
Warnung im CMS-StartprotokollDAT_AUTH_DISABLEDDie Authentifizierung ist aus. Die Ausstellungs-API steht offen

Anhang

Code-Syntax

DAT_<Bereich>_<Ursache>
  • Tritt dieselbe Ursache in verschiedenen Bereichen auf, lautet der Ursachenname gleich. DAT_TOKEN_MALFORMED und DAT_CERT_MALFORMED unterscheiden sich nur im Gegenstand, die Bedeutung ist dieselbe.
  • _UNKNOWN ist ausschließlich der Fallback des jeweiligen Bereichs. Es wird nicht in anderer Bedeutung verwendet, etwa für „unbekannter Algorithmus" (dafür steht _UNSUPPORTED).
  • Die Code-Zeichenkette ist ein öffentlicher Vertrag. Die Meldung darf frei geändert werden, der Code nicht.
KategorieCode-Präfix
TokenDAT_TOKEN_
ZertifikatDAT_CERT_
SignaturDAT_SIG_
VerschlüsselungDAT_CRYPTO_
SchlüsselDAT_KEY_
ManagerDAT_MANAGER_
KonfigurationDAT_CONFIG_
InternDAT_INTERNAL_
CMS-SynchronisierungDAT_CMS_
ServerDAT_AUTH_ · DAT_REQ_ · DAT_STORE_

Zugriff je Client

ClientFehlertypCodeWiederholungsklasseSicherheitsereignis
RustDatError enumerr.code()err.retry()err.security_event()
Go*dat.Errorerr.Codedat.Retry(err)dat.SecurityEvent(err)
JavaScriptDatError extends Errore.codee.retrye.securityEvent
PythonDatError(ValueError, RuntimeError)e.codee.retrye.security_event
RubySaro::Dat::Errore.codee.retrye.security_event?
Java/KotlinDatExceptione.codee.retrye.securityEvent
C#DatExceptione.Codee.Retrye.SecurityEvent
C/C++dat_error_tdat_error_code(e)dat_error_retry(e)dat_error_is_security_event(e)
CMS-ServerJSON-UmschlagFeld code

Sicherheitsereignis liefert nur für die beiden Fälle true, bei denen Fälschung oder Manipulation feststeht (DAT_SIG_MISMATCH, DAT_CRYPTO_TAG_MISMATCH). Die Markierung Verdacht in diesem Dokument reicht weiter (bis hin zu manipulierten Tokens, Schlüsseln und Anfragen); sie ist derzeit nur eine Klassifikation der Dokumentation und wird nicht über die Client-API bereitgestellt.

Auch die Stufe Auswirkung ist eine Klassifikation der Dokumentation. Derselbe Code kann je nach Fundort unterschiedlich hart treffen — DAT_KEY_INVALID etwa hat keine Auswirkung, wenn damit ein eingehendes Token aussortiert wird, lässt aber die gesamte Synchronisierung scheitern, wenn er beim Lesen eines Zertifikats während der CMS-Synchronisierung auftritt.

Untergeordnete Ursachen gehen nicht verloren. DAT_MANAGER_NO_ISSUABLE_CERTIFICATE und DAT_CMS_IMPORT_FAILED reichen den Grund über die Ausnahmeverkettung der jeweiligen Sprache weiter (cause / __cause__ / InnerException / Unwrap()).

C/C++ behält auch die Ganzzahlwerte

Die bisherigen Ganzzahlwerte von dat_error_t bleiben aus Gründen der ABI-Kompatibilität erhalten, maßgeblich ist jedoch der Textcode. Die Bibliothek gibt die alten Werte nicht mehr zurück, deshalb trifft ein Vergleich wie err == DAT_ERROR_INVALID_DAT nicht mehr zu. Vergleichen Sie stattdessen über dat_error_code(e).

C kennt keine Ausnahmeverkettung, deshalb wird der Grund separat über dat_manager_issuable_cause() abgefragt.