DAT
Dokumentasi

Kode Error

Kode error bersama untuk pustaka klien yang didukung secara resmi oleh DAT.

Setiap kode memiliki dua nilai — dampak dan percobaan ulang — dan sebagian ditandai tambahan dengan label mencurigakan.

Dampak — kerusakan yang dialami layanan

Ini kriteria untuk memasang alert. Yang dilihat hanya satu hal: "apakah layanan sedang berhenti".

DampakArtiContoh
KritisLayanan atau fungsi tertentu berhenti. Penerbitan tidak mungkin, sinkronisasi gagal permanen, inisialisasi gagalTidak ada satu pun sertifikat yang bisa dipakai di server penerbitan
SebagianSebagian permintaan atau siklus gagal, tetapi layanan tetap berjalan. Umumnya pulih sendiriSatu siklus CMS gagal. Tetap berjalan dengan sertifikat yang ada
Tanpa dampakSatu permintaan ditolak, selesaiToken palsu masuk. Cukup disaring

Tanpa dampak bukan objek alert. Jika satu masukan salah harus diperiksa oleh seluruh penanggung jawab, alert kehilangan maknanya.

Mencurigakan — selidiki jika berlanjut

Kode dengan label Mencurigakan dalam satu kejadian adalah bagian dari operasi normal. Klien bisa mengirim nilai yang salah kapan saja, dan menyaringnya memang tugas pustaka.

Namun jika error semacam ini terjadi terus-menerus, atau menumpuk dari sumber tertentu, penyebabnya salah satu dari dua ini.

  • Kesalahan konfigurasi — deployment salah, klien versi lama masih tertinggal, atau sertifikat tidak selaras.
  • Percobaan peretasan — upaya memanipulasi token atau kunci agar lolos verifikasi, atau penelusuran untuk menemukan nilai yang valid.

Karena itu kode-kode ini sebaiknya dijadikan metrik berbasis jumlah. Cukup memberi tahu saat melewati ambang batas.

Percobaan Ulang

Percobaan UlangArti
SementaraMencoba lagi setelah backoff akan menyelesaikannya
PermanenDilarang mencoba lagi. Konfigurasi atau masukan harus diperbaiki
StatusIni sinyal, bukan error

Token

Masalah pada string token yang diterima itu sendiri.

DAT_TOKEN_MALFORMEDTanpa dampakPermanenshieldMencurigakan

Bagian yang dipisahkan titik bukan lima; atau expire bukan desimal murni; atau cid bukan heksadesimal murni; atau plain atau secure bukan base64url; atau kolom numerik melampaui rentang representasi bilangan bulat.

arrow_forwardTolak permintaan

DAT_TOKEN_EXPIREDTanpa dampakPermanen

expire <= now. Tepat pada detiknya pun sudah kedaluwarsa — jika expire == now, token dianggap sudah habis masa berlakunya.

arrow_forwardPicu penerbitan ulang token

DAT_TOKEN_UNKNOWNSebagianPermanen

Error token yang tidak masuk ke kategori mana pun di atas.

arrow_forwardPeriksa log

Kedaluwarsa dan error format wajib dibedakan

Responsnya berlawanan — kedaluwarsa adalah akhir masa hidup yang normal sehingga cukup memperbarui token, sedangkan error format berarti token itu sejak awal bukan terbitan kita dan harus ditolak.

Penguraian memastikan struktur lebih dulu, baru melihat nilainya. String seperti "1.2.3" yang kekurangan bagian bukanlah token kedaluwarsa melainkan memang bukan token, sehingga menjadi DAT_TOKEN_MALFORMED.

Tanda pada kolom expire, misalnya +100, juga error format, bukan kedaluwarsa. Hanya digit ASCII murni yang diizinkan.


Sertifikat

Masalah format string sertifikat, dan apakah sertifikat itu bisa dipakai sekarang.

DAT_CERT_MALFORMEDKritisPermanen

Bagian yang dipisahkan titik bukan delapan; atau penguraian cid, start, duration, ttl gagal; atau kolom kunci bukan base64url; atau start + duration + ttl melampaui u64.

arrow_forwardDeploy ulang sertifikat

DAT_CERT_EXPIREDKritisPermanen

start + duration + ttl < now. Kondisi kedaluwarsa total: penerbitan maupun verifikasi sama-sama tidak mungkin.

arrow_forwardPerbarui sertifikat

DAT_CERT_NOT_YET_ISSUABLEKritisSementara

now < start. Jendela penerbitan belum terbuka.

arrow_forwardTunggu

DAT_CERT_ISSUANCE_ENDEDKritisPermanen

now > start + duration tetapi ttl masih tersisa. Penerbitan tidak bisa, hanya verifikasi yang mungkin.

arrow_forwardDeploy sertifikat baru

DAT_CERT_VERIFY_ONLYKritisPermanen

Sertifikat hanya memuat kunci publik tanpa kunci privat penandatangan. Verifikasi berjalan, penerbitan tidak mungkin.

arrow_forwardPeriksa konfigurasi deployment

DAT_CERT_NOT_FOUNDTanpa dampakPermanenshieldMencurigakan

Sertifikat yang sesuai dengan cid pada token tidak dimiliki. Ini token palsu atau salah deploy.

arrow_forwardTolak permintaan

DAT_CERT_NOT_SYNCEDSebagianSementara

cid tersebut belum diterima dari CMS. Terjadi sebentar tepat setelah sertifikat baru di-deploy.

arrow_forwardCoba lagi setelah sinkronisasi

DAT_CERT_DUPLICATE_CIDKritisPermanen

Dalam daftar yang diimpor terdapat cid yang sama dua kali atau lebih.

arrow_forwardPeriksa respons server

DAT_CERT_UNKNOWNSebagianPermanen

Error sertifikat yang tidak masuk ke kategori mana pun di atas.

arrow_forwardPeriksa log

DAT_CERT_NOT_FOUND dan DAT_CERT_NOT_SYNCED tampak sama gejalanya tetapi responsnya berbeda. Yang pertama adalah cid yang tidak pernah kita terbitkan sehingga menunggu pun tidak akan muncul; yang kedua cukup menunggu sinkronisasi selesai.

Satu kejadian DAT_CERT_NOT_FOUND cukup disaring saja, tetapi lonjakan mendadak berarti deployment tidak selaras atau token palsu sedang beredar.


Tanda Tangan

DAT_SIG_MISMATCHTanpa dampakPermanenshieldMencurigakan

Verifikasi tanda tangan berakhir dengan ketidakcocokan. Nilai HMAC berbeda atau ECDSA verify mengembalikan false.

arrow_forwardBlokir sesi, catat di log keamanan

DAT_SIG_MALFORMEDTanpa dampakPermanenshieldMencurigakan

Bagian tanda tangan kosong; atau bukan base64url; atau panjang ECDSA r‖s tidak sesuai kurvanya; atau konversi ke DER gagal.

arrow_forwardTolak permintaan

DAT_SIG_KEY_MISSINGKritisPermanen

Mencoba menandatangani dengan kunci verify-only. Kunci privat tidak tersedia saat runtime.

arrow_forwardPeriksa konfigurasi server penerbitan

DAT_SIG_BACKENDSebagianPermanen

Operasi tanda tangan atau verifikasi itu sendiri tidak dapat dijalankan. Tipe kunci salah, handle sudah dilepas, atau error internal pustaka kriptografi.

arrow_forwardPeriksa tipe kunci dan pustaka

DAT_SIG_UNKNOWNSebagianPermanen

Error tanda tangan yang tidak masuk ke kategori mana pun di atas.

arrow_forwardPeriksa log

Jangan campur ketidakcocokan dengan kegagalan backend

Kedua kode ini berada di sumbu yang berlawanan.

  • DAT_SIG_MISMATCH — tanda tangan yang masuk sekadar tidak cocok, jadi tidak ada dampak ke layanan, tetapi jika berlanjut menjadi objek curiga.
  • DAT_SIG_BACKEND — operasi verifikasinya sendiri tidak berjalan, jadi ini masalah di pihak kita dan bukan objek kecurigaan.

Jika tipe kunci yang salah atau bug pustaka dilaporkan sebagai "tanda tangan tidak cocok", situasi di mana kode kita sendiri rusak akan tercampur ke dalam metrik serangan. Sebaliknya, jika pemalsuan sungguhan diklasifikasikan sebagai error backend, ia hilang sama sekali dari metrik kecurigaan.


Enkripsi

Masalah enkripsi dan dekripsi payload secure.

DAT_CRYPTO_TAG_MISMATCHTanpa dampakPermanenshieldMencurigakan

Tag autentikasi AES-GCM tidak cocok. Entah secure telah dimanipulasi, atau kunci sertifikatnya berbeda.

arrow_forwardBlokir sesi, catat di log keamanan

DAT_CRYPTO_DATA_INVALIDTanpa dampakPermanenshieldMencurigakan

Ciphertext tidak kosong tetapi panjangnya kurang dari atau sama dengan IV (12 byte); atau masukan melampaui batas implementasi (INT_MAX dan sejenisnya).

arrow_forwardTolak permintaan

DAT_CRYPTO_BACKENDSebagianPermanen

Operasi enkripsi atau dekripsi tidak dapat dijalankan. Platform tanpa dukungan GCM atau kegagalan inisialisasi konteks.

arrow_forwardPeriksa dukungan platform

DAT_CRYPTO_UNKNOWNSebagianPermanen

Error enkripsi atau dekripsi yang tidak masuk ke kategori mana pun di atas.

arrow_forwardPeriksa log

Payload secure yang kosong bukan error. Masukan kosong menghasilkan keluaran kosong dan tidak memunculkan kode apa pun.

Pada jalur yang melewati verifikasi tanda tangan, tag GCM adalah satu-satunya pemeriksaan integritas. Karena itu DAT_CRYPTO_TAG_MISMATCH tidak disatukan dalam satu kode dengan kegagalan dekripsi lainnya.


Kunci

DAT_KEY_INVALIDTanpa dampakPermanenshieldMencurigakan

Panjang kunci tidak cocok dengan algoritma yang dideklarasikan (HMAC 32/48/64, AES 16/32); atau titik tidak berada pada kurva; atau d ∉ [1,n-1]; atau format bukan uncompressed (0x04); atau kunci privat dan publik bukan pasangan.

arrow_forwardGanti kunci

DAT_KEY_VERIFY_ONLY_UNSUPPORTEDKritisPermanen

Ekspor verify-only diminta untuk keluarga HMAC.

arrow_forwardGanti algoritma

DAT_KEY_UNKNOWNSebagianPermanen

Error kunci yang tidak masuk ke kategori mana pun di atas.

arrow_forwardPeriksa log

Tiga hal yang tampak mirip tetapi berbeda:

KodeArti
DAT_KEY_VERIFY_ONLY_UNSUPPORTEDBatasan struktural algoritma. HMAC bersifat simetris sehingga tidak mengenal konsep kunci publik
DAT_SIG_KEY_MISSINGKondisi runtime. Saat ini kunci tersebut tidak memuat bagian privat
DAT_CERT_VERIFY_ONLYBentuk deployment. Sertifikat ini di-deploy khusus untuk verifikasi

Manajer

Kondisi objek yang menyimpan sertifikat dan memakainya untuk menerbitkan serta memverifikasi.

DAT_MANAGER_NO_CERTIFICATEKritisSementara

Tidak memiliki satu pun sertifikat. Entah belum diimpor, atau sinkronisasi pertama dengan CMS gagal.

arrow_forwardPeriksa koneksi CMS

DAT_MANAGER_NO_ISSUABLE_CERTIFICATEKritisPermanen

Sertifikat ada, tetapi tidak satu pun bisa dipakai menerbitkan saat ini. Penyebab disertakan bersama error.

arrow_forwardPutuskan berdasarkan penyebab (cause) — tabel di bawah

DAT_MANAGER_DISPOSEDKritisPermanen

Manajer atau sertifikat yang sudah dilepas tetap digunakan.

arrow_forwardPerbaiki kode pemanggil

DAT_MANAGER_UNKNOWNSebagianPermanen

Error manajer yang tidak masuk ke kategori mana pun di atas.

arrow_forwardPeriksa log

Penyebab (cause) dari DAT_MANAGER_NO_ISSUABLE_CERTIFICATE adalah salah satu dari empat. Tindakan yang harus diambil berbeda sama sekali untuk tiap penyebab.

PenyebabArtiCoba LagiTindakan
DAT_CERT_NOT_YET_ISSUABLESebelum jendela penerbitan dimulaiSementaraSelesai sendiri jika ditunggu
DAT_CERT_ISSUANCE_ENDEDJendela penerbitan berakhir, hanya verifikasiPermanenPerlu men-deploy sertifikat baru
DAT_CERT_EXPIREDSemua yang dimiliki sudah kedaluwarsaPermanenPerlu memperbarui sertifikat
DAT_CERT_VERIFY_ONLYSemua yang dimiliki hanya untuk verifikasiPermanenKesalahan konfigurasi deployment

Jika server penerbitan dikonfigurasi hanya menerima sertifikat verifikasi, DAT_CERT_VERIFY_ONLY akan muncul. Menunggu tidak akan pernah menyelesaikannya, jadi bukan objek percobaan ulang.


Konfigurasi

Masalah nilai yang diteruskan pemanggil. Semua kode keluarga CONFIG adalah error yang harus diperbaiki di kode; jika muncul saat operasional, berarti deployment-nya salah.

DAT_CONFIG_ALG_UNSUPPORTEDKritisPermanen

Nama algoritma tidak dikenal. Harus persis sama dengan notasi pada protokol (ECDSA-P256, IV-AES256-GCM).

arrow_forwardPeriksa nama algoritma

DAT_CONFIG_ARGUMENT_INVALIDKritisPermanen

Argumen wajib bernilai null; atau di luar rentang yang diizinkan (nilai waktu negatif, interval <= 0); atau tipe yang tidak didukung (pada bahasa bertipe dinamis, payload diisi angka atau boolean); atau body yang akan ditandatangani kosong.

arrow_forwardPerbaiki kode pemanggil

DAT_CONFIG_URI_INVALIDKritisPermanen

URI server CMS di luar spesifikasi: tidak bisa diurai, skema bukan http/https, atau mengandung path maupun query.

arrow_forwardPerbaiki URI

DAT_CONFIG_UNKNOWNKritisPermanen

Error konfigurasi yang tidak masuk ke kategori mana pun di atas.

arrow_forwardPeriksa log


Internal

Masalah lingkungan eksekusi dan runtime.

DAT_INTERNAL_UNAVAILABLEKritisPermanen

Backend kriptografi atau API runtime sama sekali tidak ada. crypto.subtle tidak tersedia, platform tanpa dukungan AES-GCM, atau versi runtime di bawah syarat.

arrow_forwardPeriksa deployment dan platform

DAT_INTERNAL_UNKNOWNKritisPermanen

Gagal mengalokasikan memori, gagal membangkitkan bilangan acak, gagal memperoleh lock, atau mencapai cabang yang dirancang tidak terjangkau.

arrow_forwardPeriksa log

DAT_INTERNAL_UNAVAILABLE selesai dengan memperbaiki lingkungan deployment, sedangkan DAT_INTERNAL_UNKNOWN umumnya gangguan runtime atau bug pustaka.


Sinkronisasi CMS

Jika sinkronisasi CMS tidak dipakai, kode-kode ini tidak muncul.

DAT_CMS_UNREACHABLESebagianSementara

Kegagalan DNS, koneksi ditolak, kegagalan TLS, timeout. Timeout tidak punya kode tersendiri dan termasuk di sini — karena responsnya sama.

arrow_forwardCoba lagi setelah backoff

DAT_CMS_UNAUTHORIZEDKritisPermanen401

Server merespons 401. Token tidak ada atau salah.

arrow_forwardPeriksa pengaturan token

DAT_CMS_FORBIDDENKritisPermanen403

Server merespons 403. Token valid tetapi tidak berwenang atas endpoint ini.

arrow_forwardPeriksa tingkat token

DAT_CMS_ENDPOINT_NOT_FOUNDKritisPermanen404

Server merespons 404. URL-nya salah.

arrow_forwardPeriksa pengaturan URL

DAT_CMS_SERVER_ERRORSebagianSementara5xx

Server merespons 5xx.

arrow_forwardCoba lagi setelah backoff

DAT_CMS_HTTP_STATUSKritisPermanen

Respons non-2xx yang tidak termasuk kasus mana pun di atas.

arrow_forwardPeriksa kode status

DAT_CMS_MALFORMEDKritisPermanen

Respons tidak memuat baris versi; atau baris versi bukan desimal murni; atau melampaui rentang.

arrow_forwardPeriksa versi server

DAT_CMS_IMPORT_FAILEDKritisPermanen

Respons diterima tetapi sertifikat gagal diterapkan. Penyebabnya termuat dalam cause.

arrow_forwardPeriksa CERT_* / KEY_* pada cause

DAT_CMS_VERSION_RESETTanpa dampakStatus200

Server mengembalikan versi yang lebih lama daripada milik kita. Ini instruksi sinkronisasi ulang menyeluruh.

arrow_forwardDitangani otomatis

DAT_CMS_NOT_SYNCEDKritisSementara

Kondisi di mana sinkronisasi belum pernah sekali pun berhasil.

arrow_forwardTunggu sinkronisasi pertama

DAT_CMS_SYNC_IN_PROGRESSTanpa dampakStatus

Sinkronisasi sebelumnya masih berjalan sehingga siklus kali ini dilewati. Ini bukan error.

DAT_CMS_NOT_SUPPORTEDKritisPermanen

Fungsi CMS tidak disertakan dalam build. Feature tidak diaktifkan atau CURL tidak terpasang.

arrow_forwardPeriksa opsi build

DAT_CMS_UNKNOWNSebagianPermanen

Error CMS yang tidak masuk ke kategori mana pun di atas.

arrow_forwardPeriksa log

Kode yang membuat sinkronisasi dinilai gagal permanen (UNAUTHORIZED, FORBIDDEN, ENDPOINT_NOT_FOUND, MALFORMED, IMPORT_FAILED) semuanya kritis. Mencoba lagi tidak menyelesaikannya sementara sertifikat terus kedaluwarsa, sehingga jika dibiarkan layanan pasti berhenti.

Sebaliknya UNREACHABLE dan SERVER_ERROR bersifat sebagian. Layanan tetap berjalan dengan sertifikat yang ada dan pulih sendiri pada siklus berikutnya — namun jika terus gagal, pada akhirnya berpindah menjadi kritis. Pasang alert berdasarkan jumlah kegagalan beruntun.

Kegagalan sinkronisasi tidak dilempar sebagai exception

Meskipun sinkronisasi pertama gagal, manajer tetap dikembalikan secara normal — karena tersinkronisasi terlambat masih lebih baik daripada tidak sama sekali. Sebagai gantinya, kegagalan tersimpan sebagai kondisi yang bisa dikueri.

KlienCara mengambil
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)

Jika belum pernah berhasil sekali pun bernilai DAT_CMS_NOT_SYNCED, jika normal kosong.


Server

Kode yang dikeluarkan server CMS. Klien tidak membuat kode ini, hanya menerimanya.

DAT_AUTH_UNAUTHORIZEDTanpa dampakPermanenshieldMencurigakan401

Header Authorization tidak ada, atau token tidak terdaftar pada tingkat mana pun.

DAT_AUTH_FORBIDDENTanpa dampakPermanenshieldMencurigakan403

Token terdaftar tetapi tingkatnya bukan yang diminta endpoint ini.

DAT_AUTH_DISABLEDKritisStatus

Tidak ada satu pun token yang dikonfigurasi sehingga autentikasi mati sepenuhnya. Bahkan API penerbitan sertifikat pun terbuka tanpa autentikasi. Tidak muncul pada respons, hanya tercatat di log saat startup.

arrow_forwardSegera atur token

DAT_REQ_MALFORMEDTanpa dampakPermanenshieldMencurigakan400

Parameter path atau query tidak dapat diurai, atau argumen di luar rentang yang diizinkan (delay negatif, melebihi 10 tahun, dan sejenisnya).

DAT_REQ_ALG_UNSUPPORTEDTanpa dampakPermanen400

Nama algoritma pada path permintaan tidak dikenal.

DAT_REQ_NOT_FOUNDTanpa dampakPermanenshieldMencurigakan404·405

Rute tersebut tidak ada atau metodenya berbeda.

DAT_REQ_TOO_LARGETanpa dampakPermanenshieldMencurigakan413

Ukuran body permintaan terlampaui.

DAT_REQ_UNKNOWNTanpa dampakPermanen400

Error permintaan yang tidak masuk ke kategori mana pun di atas.

DAT_STORE_UNAVAILABLESebagianSementara503

Koneksi DB terputus, connection pool habis, kontensi lock, timeout. Satu-satunya kode yang memakai 503, yaitu sinyal agar klien tahu "yang ini cukup ditunggu".

arrow_forwardCoba lagi setelah backoff

DAT_STORE_UNKNOWNKritisPermanen500

Kegagalan baca atau tulis, tabel tidak ada, skema tidak cocok, baris sertifikat tersimpan rusak.

arrow_forwardPeriksa kondisi DB

Amplop respons:

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

Error yang muncul saat membuat dan menangani sertifikat juga dikeluarkan server memakai kode bersama di atas (DAT_CERT_*, DAT_KEY_*, DAT_CONFIG_*).

Saat menerima kode server

Klien membungkus kode server dengan kode CMS miliknya sendiri, dan menyimpan aslinya di cause.

Yang diterimaHTTPKode yang dikeluarkan klien
DAT_AUTH_UNAUTHORIZED401DAT_CMS_UNAUTHORIZED
DAT_AUTH_FORBIDDEN403DAT_CMS_FORBIDDEN
DAT_REQ_NOT_FOUND404DAT_CMS_ENDPOINT_NOT_FOUND
DAT_REQ_* (lainnya)400·405·413DAT_CMS_HTTP_STATUS
DAT_STORE_UNAVAILABLE503DAT_CMS_SERVER_ERROR
DAT_STORE_UNKNOWN500DAT_CMS_SERVER_ERROR
(penurunan versi)200DAT_CMS_VERSION_RESET

Cari berdasarkan gejala

GejalaKode
Berhasil tepat setelah login, lalu ditolak tak lama kemudianDAT_TOKEN_EXPIRED — masa hidup token habis. Cukup diterbitkan ulang
Verifikasi gagal hanya pada server tertentuDAT_CERT_NOT_SYNCED — server itu belum menerima CID yang baru
Token yang sama ditolak di semua serverDAT_CERT_NOT_FOUND — ini CID yang tidak pernah kita terbitkan
Server penerbitan tidak bisa membuat tokenDAT_MANAGER_NO_ISSUABLE_CERTIFICATE + DAT_CERT_VERIFY_ONLYyang ter-deploy adalah verify-only
Penerbitan gagal hanya sesaat setelah startupDAT_MANAGER_NO_CERTIFICATE — ini sebelum sinkronisasi pertama. Sebentar lagi teratasi
Sinkronisasi CMS terus gagalDAT_CMS_UNAUTHORIZED — token salah. Mencoba lagi tidak menyelesaikannya
Tidak ada satu pun sertifikat yang datangDAT_CMS_ENDPOINT_NOT_FOUND — salah ketik URL
Gagal hanya pada platform tertentuDAT_INTERNAL_UNAVAILABLE — backend kriptografi tidak ada
Kegagalan verifikasi tiba-tiba melonjakDAT_SIG_MISMATCH — satu kejadian tidak berbahaya, tetapi jika menumpuk berarti percobaan pemalsuan
Dekripsi secure tiba-tiba gagalDAT_CRYPTO_TAG_MISMATCH — sertifikat tidak selaras atau percobaan manipulasi
Ada peringatan di log startup CMSDAT_AUTH_DISABLEDautentikasi mati. API penerbitan terbuka

Lampiran

Sintaks Kode

DAT_<area>_<penyebab>
  • Jika penyebab yang sama muncul di area berbeda, nama penyebabnya sama. DAT_TOKEN_MALFORMED dan DAT_CERT_MALFORMED hanya berbeda objeknya, maknanya sama.
  • _UNKNOWN adalah khusus fallback untuk tiap area. Ia tidak dipakai dalam arti "algoritma tidak dikenal" (untuk itu ada _UNSUPPORTED).
  • String kode adalah kontrak publik. Pesan boleh diubah bebas, tetapi kode tidak.
KategoriPrefiks kode
TokenDAT_TOKEN_
SertifikatDAT_CERT_
Tanda TanganDAT_SIG_
EnkripsiDAT_CRYPTO_
KunciDAT_KEY_
ManajerDAT_MANAGER_
KonfigurasiDAT_CONFIG_
InternalDAT_INTERNAL_
Sinkronisasi CMSDAT_CMS_
ServerDAT_AUTH_ · DAT_REQ_ · DAT_STORE_

Akses per Klien

KlienTipe errorKodeKlasifikasi coba lagiPeristiwa keamanan
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)
Server CMSAmplop JSONkolom code

Peristiwa keamanan hanya mengembalikan true untuk dua kode di mana pemalsuan atau manipulasi sudah pasti (DAT_SIG_MISMATCH, DAT_CRYPTO_TAG_MISMATCH). Label curiga pada dokumen ini mencakup lingkup yang lebih luas (termasuk token, kunci, dan permintaan yang dimanipulasi), dan untuk saat ini hanya klasifikasi dokumen, tidak diekspos sebagai API klien.

Tingkat dampak juga merupakan klasifikasi dokumen. Kode yang sama bisa berbeda pukulannya tergantung di mana ia muncul — misalnya DAT_KEY_INVALID tidak berdampak apa-apa saat menyaring token yang masuk, tetapi jika muncul saat membaca sertifikat di tengah sinkronisasi CMS, seluruh sinkronisasi gagal.

Penyebab dasar tidak dibuang. DAT_MANAGER_NO_ISSUABLE_CERTIFICATE dan DAT_CMS_IMPORT_FAILED meneruskan penyebabnya melalui rantai exception masing-masing bahasa (cause / __cause__ / InnerException / Unwrap()).

C/C++ tetap mempertahankan nilai numerik

Nilai numerik dat_error_t yang lama dipertahankan demi kompatibilitas ABI, tetapi kode stringlah yang menjadi acuan. Pustaka tidak lagi mengembalikan nilai lama, sehingga perbandingan seperti err == DAT_ERROR_INVALID_DAT tidak akan cocok. Bandingkan melalui dat_error_code(e).

C tidak memiliki rantai exception, jadi penyebabnya dikueri terpisah lewat dat_manager_issuable_cause().