DAT
DAT نقطوں (.) سے الگ کی گئی ASCII string ہے۔ ہر field مقررہ ترتیب میں صرف ایک بار آتا ہے، اور signature تصدیق کرتا ہے کہ پچھلے fields اسی طرح منتقل ہوئے تھے۔
expire.cid.plain.secure.signatureFields
| Field | Representation | مطلب |
|---|---|---|
expire | Decimal unsigned integer | DAT کی میعاد ختم ہونے کا Unix وقت |
cid | Lowercase hexadecimal unsigned integer | verification میں استعمال ہونے والی certificate ID |
plain | Unpadded Base64Url | غیر encrypted bytes |
secure | Unpadded Base64Url | certificate کے encryption algorithm سے محفوظ bytes |
signature | Unpadded Base64Url | expire.cid.plain.secure کے اصل ASCII bytes کا signature |
چونکہ plain signature میں شامل ہے اس لیے اسے بدلا نہیں جا سکتا، لیکن کوئی بھی اسے decode کر سکتا ہے۔ secrets، personal data اور authorization decisions میں براہِ راست استعمال ہونے والی values کو secure میں رکھیں۔ خالی secure field درست ہے۔
Canonical representation
- پورا DAT ASCII ہونا چاہیے۔
- Numbers کو signs، spaces، prefixes یا غیر ضروری ابتدائی zero کے بغیر لکھا جاتا ہے۔ صرف zero کی value
0لکھی جاتی ہے۔ - Base64Url، URL-safe alphabet استعمال کرتا ہے اور
=padding یا whitespace قبول نہیں کرتا۔ - ایک ہی bytes کو کئی طریقوں سے ظاہر کرنے والی non-canonical Base64Url strings رد کی جاتی ہیں۔
- مختلف field count یا order والی string DAT نہیں ہے۔
یہ قواعد مختلف implementations کو مختلف strings ایک ہی DAT کے طور پر قبول کرنے سے روکتے ہیں۔
Issuance
- اس وقت issuable certificate منتخب کریں۔
- موجودہ وقت میں certificate کا TTL شامل کرکے
expireبنائیں۔ plainکو Base64Url میں encode کریں۔- certificate کے encryption algorithm سے
secureencrypt کریں۔ - پچھلے fields کو نقطوں سے ملائیں اور ان کے ASCII bytes sign کریں۔
Issuance صرف certificate کی issuance window میں جائز ہے: start <= now <= start + duration۔
Verification
- canonical rules کے مطابق DAT parse کریں۔
- چیک کریں کہ
expire > now۔expire == nowوالا DAT expired ہے۔ cidسے ملنے والا certificate تلاش کریں اور تصدیق کریں کہ وہ verification کے لیے valid ہے۔- اصل
expire.cid.plain.securebytes کا signature verify کریں۔ secureکو authenticate اور decrypt کرکےplainکے ساتھ واپس کریں۔
Signature verify نہ کرنے والا parsing API صرف observation یا diagnostics کے لیے ہے۔ اس کے output کو authentication یا authorization کے لیے کبھی استعمال نہ کریں۔
Specification سے باہر ذمہ داریاں
DAT user store، login method، authorization model، token transport header یا revocation list متعین نہیں کرتا۔ Application فیصلہ کرتی ہے کہ کون سی requests verified payload استعمال کر سکتی ہیں۔