DAT ​

DAT adalah string ASCII dengan bidang yang dipisahkan oleh titik (.). Setiap bidang muncul satu kali dalam urutan tetap, dan tanda tangan memastikan bahwa bidang sebelumnya dikirim persis seperti aslinya.

expire
uint64 (desimal)
.
cid
uint64 (heksadesimal)
.
plain
Base64Url
.
secure
Base64Url
.
signature
Base64Url
Urutan bidang dan pemisah merupakan bagian dari spesifikasi.
text
expire.cid.plain.secure.signature

Bidang ​

BidangRepresentasiArti
expireDesimal dari bilangan bulat tak bertandaUnix time saat DAT kedaluwarsa
cidHeksadesimal huruf kecil dari bilangan bulat tak bertandaID sertifikat untuk verifikasi
plainBase64Url tanpa paddingByte yang tidak dienkripsi
secureBase64Url tanpa paddingByte yang dilindungi dengan algoritme enkripsi sertifikat
signatureBase64Url tanpa paddingTanda tangan atas byte ASCII asli expire.cid.plain.secure

plain termasuk dalam cakupan tanda tangan sehingga tidak dapat diubah, tetapi dapat didekode oleh siapa pun. Rahasia, data pribadi, dan nilai yang digunakan langsung untuk keputusan otorisasi harus disimpan dalam secure. secure kosong juga valid.

Bentuk kanonis ​

  • Seluruh DAT harus berupa ASCII.
  • Angka ditulis tanpa tanda, spasi, prefiks, atau nol di depan yang tidak diperlukan. Hanya nilai 0 yang ditulis sebagai 0.
  • Base64Url menggunakan alfabet URL-safe serta tidak mengizinkan padding = atau spasi.
  • Representasi Base64Url nonkanonis yang menyatakan byte yang sama dengan string berbeda akan ditolak.
  • Jika jumlah atau urutan bidang berbeda, string tersebut bukan DAT.

Aturan ini mencegah implementasi berbeda menerima string berbeda sebagai DAT yang sama.

Penerbitan ​

  1. Pilih sertifikat yang saat ini dapat menerbitkan.
  2. Tambahkan TTL sertifikat ke waktu saat ini untuk membuat expire.
  3. Enkode plain sebagai Base64Url.
  4. Enkripsi secure dengan algoritme enkripsi sertifikat.
  5. Tandatangani byte ASCII dari bidang sebelumnya yang digabungkan dengan titik.

Penerbitan hanya dapat dilakukan dalam rentang penerbitan sertifikat: start <= now <= start + duration.

Verifikasi ​

  1. Parse DAT sesuai aturan kanonis.
  2. Pastikan expire > now. Jika expire == now, DAT telah kedaluwarsa.
  3. Temukan sertifikat untuk cid dan pastikan sertifikat tersebut dapat digunakan untuk verifikasi.
  4. Verifikasi tanda tangan byte asli expire.cid.plain.secure.
  5. Autentikasi dan dekripsi secure, lalu kembalikan bersama plain.

API parsing yang tidak memverifikasi tanda tangan hanya digunakan untuk pengamatan atau diagnosis. Hasilnya tidak boleh digunakan untuk autentikasi atau memberikan hak akses.

Tanggung jawab di luar spesifikasi ​

DAT tidak menetapkan penyimpanan pengguna, metode login, model otorisasi, header pengiriman token, atau daftar pencabutan. Aplikasi menentukan permintaan mana yang diizinkan berdasarkan payload yang sudah diverifikasi.