त्रुटि कोड
DAT द्वारा आधिकारिक रूप से समर्थित क्लाइंट लाइब्रेरियों के साझा त्रुटि कोड।
प्रत्येक कोड के साथ प्रभाव और पुनः प्रयास दो मान जुड़े होते हैं, और कुछ पर अतिरिक्त रूप से संदेह का लेबल लगता है।
प्रभाव — सेवा को कितनी क्षति
यह अलर्ट लगाने की कसौटी है। केवल एक बात देखी जाती है: "क्या सेवा अभी रुकी हुई है"।
| प्रभाव | अर्थ | उदाहरण |
|---|---|---|
| गंभीर | सेवा या कोई विशिष्ट फ़ंक्शन रुक जाता है। जारी करना असंभव, सिंक स्थायी रूप से विफल, आरंभीकरण विफल | जारी करने वाले सर्वर पर एक भी उपयोग योग्य प्रमाणपत्र नहीं |
| आंशिक | कुछ अनुरोध या चक्र विफल होते हैं, पर सेवा चलती रहती है। आमतौर पर स्वयं ठीक हो जाती है | CMS का एक चक्र विफल। मौजूदा प्रमाणपत्रों से काम जारी |
| प्रभाव नहीं | एक अनुरोध अस्वीकार हुआ, बस इतना ही | छेड़छाड़ किया गया टोकन आया। छानकर हटा दिया |
प्रभाव नहीं अलर्ट का विषय नहीं है। यदि एक बार आए गलत इनपुट की जाँच पूरी टीम को करनी पड़े, तो अलर्ट का अर्थ ही समाप्त हो जाता है।
संदेह — लगातार हो तो जाँच करें
संदेह लेबल वाले कोड एक बार होने पर सामान्य संचालन का ही हिस्सा हैं। क्लाइंट कभी भी गलत मान भेज सकता है, और उसे छानना लाइब्रेरी का अपना काम है।
लेकिन यदि ऐसी त्रुटियाँ लगातार, या किसी विशेष स्रोत से एक साथ बड़ी संख्या में आएँ, तो कारण दो में से एक है।
- कॉन्फ़िगरेशन की गड़बड़ी — डिप्लॉयमेंट गलत है, पुराने संस्करण का क्लाइंट बचा हुआ है, या प्रमाणपत्र आपस में मेल नहीं खा रहे।
- हैकिंग का प्रयास — सत्यापन पास कराने के लिए टोकन या कुंजी से छेड़छाड़, अथवा वैध मान खोजने के लिए टोह लेना।
इसीलिए इन कोडों को संख्या के आधार पर मेट्रिक बनाकर रखना उचित है। सीमा पार होने पर ही सूचित करना पर्याप्त है।
पुनः प्रयास
| पुनः प्रयास | अर्थ |
|---|---|
| अस्थायी | बैकऑफ़ के बाद पुनः प्रयास करने पर हल हो जाता है |
| स्थायी | पुनः प्रयास वर्जित। कॉन्फ़िगरेशन या इनपुट ठीक करना होगा |
| स्थिति | यह त्रुटि नहीं, एक संकेत है |
टोकन
प्राप्त टोकन स्ट्रिंग की स्वयं की समस्याएँ।
DAT_TOKEN_MALFORMED बिंदु से अलग किए गए भाग पाँच नहीं हैं; या expire शुद्ध दशमलव नहीं है; या cid शुद्ध षोडश आधारी नहीं है; या plain·secure base64url नहीं है; या संख्यात्मक फ़ील्ड पूर्णांक प्रतिनिधित्व की सीमा पार कर गया।
arrow_forwardअनुरोध अस्वीकार करें
DAT_TOKEN_EXPIREDexpire <= now. ठीक उसी क्षण भी समाप्त — expire == now होने पर टोकन को समाप्त ही माना जाता है।
arrow_forwardटोकन पुनः जारी कराएँ
DAT_TOKEN_UNKNOWNऊपर की किसी भी श्रेणी में न आने वाली टोकन त्रुटि।
arrow_forwardलॉग जाँचें
समाप्ति और प्रारूप त्रुटि अनिवार्य रूप से अलग हैं
प्रतिक्रिया बिल्कुल विपरीत है — समाप्ति जीवनकाल का सामान्य अंत है, इसलिए टोकन नवीनीकृत करा देना पर्याप्त है; जबकि प्रारूप त्रुटि का अर्थ है कि टोकन मूलतः जारी ही नहीं किया गया, इसलिए उसे अस्वीकार करना चाहिए।
पार्सिंग पहले संरचना तय करती है, उसके बाद ही मान देखती है। "1.2.3" जैसी कम भागों वाली स्ट्रिंग समाप्त हुआ टोकन नहीं बल्कि टोकन है ही नहीं, इसलिए DAT_TOKEN_MALFORMED है।
expire फ़ील्ड में +100 जैसा चिह्न लगा होना भी समाप्ति नहीं बल्कि प्रारूप त्रुटि है। केवल शुद्ध ASCII अंक ही मान्य हैं।
प्रमाणपत्र
प्रमाणपत्र स्ट्रिंग के प्रारूप की, और यह कि वह प्रमाणपत्र अभी उपयोग किया जा सकता है या नहीं, इसकी समस्याएँ।
DAT_CERT_MALFORMED बिंदु से अलग किए गए भाग आठ नहीं हैं; या cid·start·duration·ttl की पार्सिंग विफल रही; या कुंजी फ़ील्ड base64url नहीं है; या start + duration + ttl u64 से आगे निकल गया।
arrow_forwardप्रमाणपत्र पुनः डिप्लॉय करें
DAT_CERT_EXPIREDstart + duration + ttl < now. पूर्ण रूप से समाप्त स्थिति: न जारी करना संभव है, न सत्यापन।
arrow_forwardप्रमाणपत्र नवीनीकृत करें
DAT_CERT_NOT_YET_ISSUABLEnow < start. जारी करने की विंडो अभी खुली नहीं है।
arrow_forwardप्रतीक्षा करें
DAT_CERT_ISSUANCE_ENDEDnow > start + duration है पर ttl अभी बचा है। जारी करना संभव नहीं, केवल सत्यापन हो सकता है।
arrow_forwardनया प्रमाणपत्र डिप्लॉय करें
DAT_CERT_VERIFY_ONLYहस्ताक्षर की निजी कुंजी के बिना केवल सार्वजनिक कुंजी वाला प्रमाणपत्र है। सत्यापन होता है, जारी करना असंभव है।
arrow_forwardडिप्लॉय सेटिंग जाँचें
DAT_CERT_NOT_FOUND टोकन के cid से मेल खाने वाला प्रमाणपत्र मौजूद नहीं है। यह जाली टोकन है या गलत डिप्लॉयमेंट।
arrow_forwardअनुरोध अस्वीकार करें
DAT_CERT_NOT_SYNCED वह cid अभी तक CMS से प्राप्त नहीं हुआ। नया प्रमाणपत्र डिप्लॉय करने के तुरंत बाद थोड़े समय के लिए होता है।
arrow_forwardसिंक के बाद पुनः प्रयास करें
DAT_CERT_DUPLICATE_CID आयात की जा रही सूची में एक ही cid दो या अधिक बार है।
arrow_forwardसर्वर प्रतिक्रिया जाँचें
DAT_CERT_UNKNOWNऊपर की किसी भी श्रेणी में न आने वाली प्रमाणपत्र त्रुटि।
arrow_forwardलॉग जाँचें
DAT_CERT_NOT_FOUND और DAT_CERT_NOT_SYNCED के लक्षण देखने में एक जैसे हैं, पर प्रतिक्रिया अलग है। पहला ऐसा cid है जो कभी जारी ही नहीं हुआ, इसलिए प्रतीक्षा से नहीं बनेगा; दूसरा सिंक होते ही हल हो जाता है।
DAT_CERT_NOT_FOUND एक बार आए तो बस छान देना पर्याप्त है, पर अचानक बढ़ जाए तो इसका अर्थ है कि डिप्लॉयमेंट बेमेल है या जाली टोकन घूम रहे हैं।
हस्ताक्षर
DAT_SIG_MISMATCHहस्ताक्षर सत्यापन बेमेल के साथ समाप्त हुआ। HMAC मान भिन्न है या ECDSA verify ने false लौटाया।
arrow_forwardसत्र अवरुद्ध करें, सुरक्षा लॉग
DAT_SIG_MALFORMED हस्ताक्षर वाला भाग खाली है; या base64url नहीं है; या ECDSA r‖s की लंबाई वक्र से मेल नहीं खाती; या DER रूपांतरण विफल रहा।
arrow_forwardअनुरोध अस्वीकार करें
DAT_SIG_KEY_MISSINGverify-only कुंजी से हस्ताक्षर करने का प्रयास किया गया। रनटाइम में निजी कुंजी उपलब्ध नहीं है।
arrow_forwardजारीकर्ता सर्वर सेटिंग जाँचें
DAT_SIG_BACKENDहस्ताक्षर या सत्यापन की संक्रिया स्वयं चल ही नहीं सकी। गलत कुंजी प्रकार, मुक्त किया जा चुका हैंडल, या क्रिप्टो लाइब्रेरी की आंतरिक त्रुटि।
arrow_forwardकुंजी प्रकार और लाइब्रेरी जाँचें
DAT_SIG_UNKNOWNऊपर की किसी भी श्रेणी में न आने वाली हस्ताक्षर त्रुटि।
arrow_forwardलॉग जाँचें
बेमेल और बैकएंड विफलता को न मिलाएँ
इन दोनों कोडों की धुरी बिल्कुल विपरीत है।
DAT_SIG_MISMATCH— आया हुआ हस्ताक्षर बस मेल नहीं खाया, इसलिए सेवा पर कोई प्रभाव नहीं, पर लगातार होने पर यह संदेह का विषय है।DAT_SIG_BACKEND— सत्यापन की संक्रिया स्वयं नहीं चल सकी, अर्थात यह लाइब्रेरी की ओर की समस्या है, संदेह का विषय नहीं।
गलत कुंजी प्रकार या लाइब्रेरी बग को "हस्ताक्षर बेमेल" के रूप में रिपोर्ट करें, तो वास्तव में कोड टूटा होने की स्थिति हमले के मेट्रिक में जा मिलेगी। इसके उलट, असली जालसाज़ी को बैकएंड त्रुटि में वर्गीकृत करें, तो वह संदेह के मेट्रिक से पूरी तरह बाहर हो जाएगी।
एन्क्रिप्शन
secure पेलोड के एन्क्रिप्शन और डिक्रिप्शन की समस्याएँ।
DAT_CRYPTO_TAG_MISMATCHAES-GCM प्रमाणीकरण टैग मेल नहीं खाता। या तो secure से छेड़छाड़ हुई है, या प्रमाणपत्र की कुंजी अलग है।
arrow_forwardसत्र अवरुद्ध करें, सुरक्षा लॉग
DAT_CRYPTO_DATA_INVALID सिफरटेक्स्ट खाली नहीं है पर IV (12 बाइट) से कम या बराबर है; या इनपुट कार्यान्वयन की सीमा (INT_MAX आदि) पार कर गया।
arrow_forwardअनुरोध अस्वीकार करें
DAT_CRYPTO_BACKENDएन्क्रिप्शन या डिक्रिप्शन की संक्रिया चल नहीं सकी। GCM समर्थन रहित प्लेटफ़ॉर्म, या कॉन्टेक्स्ट आरंभीकरण विफल।
arrow_forwardप्लेटफ़ॉर्म समर्थन जाँचें
DAT_CRYPTO_UNKNOWNऊपर की किसी भी श्रेणी में न आने वाली एन्क्रिप्शन-डिक्रिप्शन त्रुटि।
arrow_forwardलॉग जाँचें
खाली secure पेलोड त्रुटि नहीं है। खाली इनपुट से खाली आउटपुट बनता है और कोई कोड उत्पन्न नहीं होता।
जिस मार्ग में हस्ताक्षर सत्यापन छोड़ दिया जाता है, वहाँ GCM टैग ही एकमात्र अखंडता जाँच है। इसीलिए DAT_CRYPTO_TAG_MISMATCH को अन्य डिक्रिप्शन विफलताओं के साथ एक ही कोड में नहीं बाँधा जाता।
कुंजी
DAT_KEY_INVALID घोषित एल्गोरिदम और कुंजी की लंबाई बेमेल है (HMAC 32/48/64, AES 16/32); या बिंदु वक्र पर नहीं है; या d ∉ [1,n-1]; या प्रारूप असंपीड़ित (0x04) नहीं है; या निजी और सार्वजनिक कुंजी आपस में जोड़ा नहीं हैं।
arrow_forwardकुंजी बदलें
DAT_KEY_VERIFY_ONLY_UNSUPPORTEDHMAC श्रेणी के लिए verify-only निर्यात का अनुरोध किया गया।
arrow_forwardएल्गोरिदम बदलें
DAT_KEY_UNKNOWNऊपर की किसी भी श्रेणी में न आने वाली कुंजी त्रुटि।
arrow_forwardलॉग जाँचें
दिखने में समान पर भिन्न तीन बातें:
| कोड | अर्थ |
|---|---|
DAT_KEY_VERIFY_ONLY_UNSUPPORTED | एल्गोरिदम की संरचनात्मक सीमा। HMAC सममित है, इसलिए उसमें सार्वजनिक कुंजी की अवधारणा ही नहीं है |
DAT_SIG_KEY_MISSING | रनटाइम की स्थिति। इस कुंजी में अभी निजी भाग मौजूद नहीं है |
DAT_CERT_VERIFY_ONLY | डिप्लॉयमेंट का स्वरूप। यह प्रमाणपत्र केवल सत्यापन के लिए डिप्लॉय किया गया है |
मैनेजर
प्रमाणपत्र रखने और उन्हें जारी करने तथा सत्यापन में उपयोग करने वाले ऑब्जेक्ट की स्थिति।
DAT_MANAGER_NO_CERTIFICATEएक भी प्रमाणपत्र मौजूद नहीं है। या तो आयात से पहले की स्थिति है, या CMS के साथ पहली सिंक विफल रही।
arrow_forwardCMS कनेक्शन जाँचें
DAT_MANAGER_NO_ISSUABLE_CERTIFICATEप्रमाणपत्र तो हैं, पर अभी जारी करने योग्य एक भी नहीं है। कारण साथ में भेजा जाता है।
arrow_forwardकारण (cause) देखकर निर्णय लें — नीचे तालिका
DAT_MANAGER_DISPOSEDपहले ही मुक्त किए जा चुके मैनेजर या प्रमाणपत्र का उपयोग किया गया।
arrow_forwardकॉलिंग कोड सुधारें
DAT_MANAGER_UNKNOWNऊपर की किसी भी श्रेणी में न आने वाली मैनेजर त्रुटि।
arrow_forwardलॉग जाँचें
DAT_MANAGER_NO_ISSUABLE_CERTIFICATE का कारण (cause) चार में से एक होता है। हर कारण के लिए करने योग्य काम बिल्कुल अलग है।
| कारण | अर्थ | पुनः प्रयास | कार्रवाई |
|---|---|---|---|
DAT_CERT_NOT_YET_ISSUABLE | जारी करने की विंडो शुरू होने से पहले | अस्थायी | प्रतीक्षा करने पर स्वयं हल हो जाता है |
DAT_CERT_ISSUANCE_ENDED | जारी करने की विंडो समाप्त, केवल सत्यापन संभव | स्थायी | नया प्रमाणपत्र डिप्लॉय करना होगा |
DAT_CERT_EXPIRED | उपलब्ध सभी समाप्त हो चुके | स्थायी | प्रमाणपत्र नवीनीकरण आवश्यक है |
DAT_CERT_VERIFY_ONLY | उपलब्ध सभी केवल सत्यापन के लिए हैं | स्थायी | डिप्लॉय सेटिंग की गलती है |
यदि जारी करने वाला सर्वर केवल सत्यापन प्रमाणपत्र लेने के लिए कॉन्फ़िगर हो, तो DAT_CERT_VERIFY_ONLY आता है। प्रतीक्षा से यह कभी हल नहीं होगा, इसलिए पुनः प्रयास का विषय नहीं है।
कॉन्फ़िगरेशन
कॉल करने वाले द्वारा दिए गए मानों की समस्याएँ। CONFIG श्रेणी के सभी कोड कोड सुधारने योग्य त्रुटियाँ हैं; यदि ये संचालन के दौरान आएँ तो डिप्लॉयमेंट गलत है।
DAT_CONFIG_ALG_UNSUPPORTED अज्ञात एल्गोरिदम नाम। प्रोटोकॉल में लिखे रूप (ECDSA-P256, IV-AES256-GCM) से ठीक-ठीक मेल खाना चाहिए।
arrow_forwardएल्गोरिदम का नाम जाँचें
DAT_CONFIG_ARGUMENT_INVALID आवश्यक आर्ग्युमेंट null है; या अनुमत सीमा से बाहर है (ऋणात्मक समय मान, interval <= 0); या असमर्थित प्रकार है (डायनामिक टाइप भाषाओं में payload में संख्या या बूलियन दिया गया); या हस्ताक्षर किया जाने वाला body खाली है।
arrow_forwardकॉलिंग कोड सुधारें
DAT_CONFIG_URI_INVALIDCMS सर्वर का URI विनिर्देश से बाहर है: पार्स नहीं हो रहा, स्कीम http/https नहीं है, या उसमें पथ या क्वेरी जुड़ी है।
arrow_forwardURI सुधारें
DAT_CONFIG_UNKNOWNऊपर की किसी भी श्रेणी में न आने वाली कॉन्फ़िगरेशन त्रुटि।
arrow_forwardलॉग जाँचें
आंतरिक
निष्पादन परिवेश और रनटाइम की समस्याएँ।
DAT_INTERNAL_UNAVAILABLE क्रिप्टो बैकएंड या रनटाइम API बिल्कुल ही उपलब्ध नहीं है। crypto.subtle अनुपस्थित, AES-GCM समर्थन रहित प्लेटफ़ॉर्म, या रनटाइम संस्करण आवश्यकता से कम।
arrow_forwardडिप्लॉयमेंट और प्लेटफ़ॉर्म जाँचें
DAT_INTERNAL_UNKNOWNमेमोरी आवंटन विफल, यादृच्छिक संख्या निर्माण विफल, लॉक प्राप्ति विफल, या अगम्य मानी गई शाखा तक पहुँच गया।
arrow_forwardलॉग जाँचें
DAT_INTERNAL_UNAVAILABLE डिप्लॉयमेंट परिवेश सुधारने से हल हो जाता है, जबकि DAT_INTERNAL_UNKNOWN प्रायः रनटाइम की खराबी या लाइब्रेरी का बग होता है।
CMS सिंक
यदि CMS सिंक का उपयोग न किया जाए तो ये कोड नहीं आते।
DAT_CMS_UNREACHABLEDNS विफलता, कनेक्शन अस्वीकृत, TLS विफलता, टाइमआउट। टाइमआउट का अलग कोड नहीं है और वह यहीं शामिल है — क्योंकि प्रतिक्रिया एक जैसी है।
arrow_forwardबैकऑफ़ के बाद पुनः प्रयास
DAT_CMS_UNAUTHORIZEDसर्वर ने 401 दिया। टोकन नहीं है या गलत है।
arrow_forwardटोकन सेटिंग जाँचें
DAT_CMS_FORBIDDENसर्वर ने 403 दिया। टोकन वैध है पर इस एंडपॉइंट का अधिकार नहीं है।
arrow_forwardटोकन स्तर जाँचें
DAT_CMS_ENDPOINT_NOT_FOUNDसर्वर ने 404 दिया। URL गलत है।
arrow_forwardURL सेटिंग जाँचें
DAT_CMS_SERVER_ERRORसर्वर ने 5xx दिया।
arrow_forwardबैकऑफ़ के बाद पुनः प्रयास
DAT_CMS_HTTP_STATUSऊपर के किसी भी मामले में न आने वाली गैर-2xx प्रतिक्रिया।
arrow_forwardस्टेटस कोड जाँचें
DAT_CMS_MALFORMEDप्रतिक्रिया में संस्करण पंक्ति नहीं है; या संस्करण पंक्ति शुद्ध दशमलव नहीं है; या सीमा पार कर गई।
arrow_forwardसर्वर संस्करण जाँचें
DAT_CMS_IMPORT_FAILED प्रतिक्रिया तो मिली पर प्रमाणपत्र लागू नहीं हो सके। कारण cause में समाहित है।
arrow_forwardcause में CERT_* / KEY_* जाँचें
DAT_CMS_VERSION_RESETसर्वर ने क्लाइंट से पुराना संस्करण लौटाया। यह पूर्ण पुनः सिंक का निर्देश है।
arrow_forwardस्वतः संभाला जाता है
DAT_CMS_NOT_SYNCEDवह स्थिति जिसमें सिंक एक बार भी सफल नहीं हुई है।
arrow_forwardपहली सिंक की प्रतीक्षा करें
DAT_CMS_SYNC_IN_PROGRESSपिछली सिंक अभी चल ही रही है, इसलिए इस बार का चक्र छोड़ दिया गया। यह त्रुटि नहीं है।
DAT_CMS_NOT_SUPPORTEDCMS कार्यक्षमता बिल्ड में शामिल नहीं है। feature सक्रिय नहीं है या CURL नहीं जुड़ा है।
arrow_forwardबिल्ड विकल्प जाँचें
DAT_CMS_UNKNOWNऊपर की किसी भी श्रेणी में न आने वाली CMS त्रुटि।
arrow_forwardलॉग जाँचें
जिन कोडों में सिंक स्थायी रूप से विफल मानी जाती है (UNAUTHORIZED·FORBIDDEN·ENDPOINT_NOT_FOUND·MALFORMED·IMPORT_FAILED), वे सभी गंभीर हैं। पुनः प्रयास से हल नहीं होते जबकि प्रमाणपत्र लगातार समाप्त होते रहते हैं, इसलिए उपेक्षा करने पर सेवा अवश्य रुक जाएगी।
इसके विपरीत UNREACHABLE·SERVER_ERROR आंशिक हैं। मौजूदा प्रमाणपत्रों से काम चलता रहता है और अगले चक्र में स्वयं ठीक हो जाता है — पर लगातार विफल होते रहने पर अंततः गंभीर में बदल जाता है। लगातार विफलताओं की संख्या के आधार पर अलर्ट लगाएँ।
सिंक विफलता अपवाद के रूप में नहीं फेंकी जाती
पहली सिंक विफल होने पर भी मैनेजर सामान्य रूप से लौटाया जाता है — क्योंकि देर से ही सही, सिंक हो जाना बेहतर है। इसके बदले विफलता जाँची जा सकने वाली स्थिति के रूप में बनी रहती है।
| क्लाइंट | प्राप्त करने का तरीका |
|---|---|
| Rust | manager.last_error().await |
| Go | manager.LastError() |
| JavaScript | manager.lastError() |
| Python | manager.last_error() |
| Ruby | manager.last_error |
| Java/Kotlin | manager.lastError |
| C# | manager.LastError |
| C/C++ | dat_cms_manager_last_error(m) |
एक बार भी सफल न हुई हो तो DAT_CMS_NOT_SYNCED, सामान्य होने पर खाली।
सर्वर
CMS सर्वर द्वारा दिए जाने वाले कोड। क्लाइंट इन कोडों को बनाता नहीं, केवल प्राप्त करता है।
DAT_AUTH_UNAUTHORIZEDAuthorization हेडर नहीं है, या टोकन किसी भी स्तर पर पंजीकृत नहीं है।
DAT_AUTH_FORBIDDENटोकन पंजीकृत तो है पर वह इस एंडपॉइंट के लिए अपेक्षित स्तर का नहीं है।
DAT_AUTH_DISABLEDएक भी टोकन कॉन्फ़िगर न होने के कारण प्रमाणीकरण पूरी तरह निष्क्रिय है। प्रमाणपत्र जारी करने वाला API तक बिना प्रमाणीकरण के खुला रहता है। यह प्रतिक्रिया में नहीं जाता, केवल स्टार्टअप लॉग में दर्ज होता है।
arrow_forwardतुरंत टोकन सेट करें
DAT_REQ_MALFORMEDपथ या क्वेरी पैरामीटर पार्स नहीं हो पा रहे, या आर्ग्युमेंट अनुमत सीमा से बाहर है (ऋणात्मक delay, 10 वर्ष से अधिक आदि)।
DAT_REQ_ALG_UNSUPPORTEDअनुरोध पथ में दिया गया एल्गोरिदम नाम अज्ञात है।
DAT_REQ_NOT_FOUNDऐसा कोई रूट नहीं है या मेथड भिन्न है।
DAT_REQ_TOO_LARGEअनुरोध body का आकार सीमा से अधिक है।
DAT_REQ_UNKNOWNऊपर की किसी भी श्रेणी में न आने वाली अनुरोध त्रुटि।
DAT_STORE_UNAVAILABLEDB कनेक्शन टूटना, कनेक्शन पूल समाप्त होना, लॉक प्रतिस्पर्धा, टाइमआउट। 503 का उपयोग करने वाला एकमात्र कोड, जिससे क्लाइंट जान पाता है कि "यह प्रतीक्षा करने से ठीक हो जाएगा"।
arrow_forwardबैकऑफ़ के बाद पुनः प्रयास
DAT_STORE_UNKNOWNपढ़ने या लिखने में विफलता, तालिका न होना, स्कीमा बेमेल, संग्रहीत प्रमाणपत्र पंक्ति का क्षतिग्रस्त होना।
arrow_forwardDB स्थिति जाँचें
प्रतिक्रिया आवरण:
{
"code": "DAT_REQ_ALG_UNSUPPORTED",
"details": { "algorithm": "BOGUS-ALG" }
}प्रमाणपत्र बनाते और संभालते समय आने वाली त्रुटियाँ सर्वर भी ऊपर दिए साझा कोडों (DAT_CERT_*, DAT_KEY_*, DAT_CONFIG_*) से ही देता है।
सर्वर कोड मिलने पर
क्लाइंट सर्वर के कोड को अपने CMS कोड में लपेटता है, और मूल कोड cause में सुरक्षित रखता है।
| जो प्राप्त हुआ | HTTP | क्लाइंट जो कोड देता है |
|---|---|---|
DAT_AUTH_UNAUTHORIZED | 401 | DAT_CMS_UNAUTHORIZED |
DAT_AUTH_FORBIDDEN | 403 | DAT_CMS_FORBIDDEN |
DAT_REQ_NOT_FOUND | 404 | DAT_CMS_ENDPOINT_NOT_FOUND |
DAT_REQ_* (अन्य) | 400·405·413 | DAT_CMS_HTTP_STATUS |
DAT_STORE_UNAVAILABLE | 503 | DAT_CMS_SERVER_ERROR |
DAT_STORE_UNKNOWN | 500 | DAT_CMS_SERVER_ERROR |
| (संस्करण घटाना) | 200 | DAT_CMS_VERSION_RESET |
लक्षण से खोजें
| लक्षण | कोड |
|---|---|
| लॉगिन के तुरंत बाद तो चलता है, पर थोड़ी देर बाद अस्वीकार हो जाता है | DAT_TOKEN_EXPIRED — टोकन का जीवनकाल समाप्त हो गया। पुनः जारी करने से हल हो जाता है |
| सत्यापन केवल कुछ सर्वरों पर विफल होता है | DAT_CERT_NOT_SYNCED — उस सर्वर को अभी नया CID नहीं मिला है |
| वही टोकन सभी सर्वरों पर अस्वीकार होता है | DAT_CERT_NOT_FOUND — यह ऐसा CID है जो कभी जारी ही नहीं हुआ |
| जारी करने वाला सर्वर टोकन नहीं बना पाता | DAT_MANAGER_NO_ISSUABLE_CERTIFICATE + DAT_CERT_VERIFY_ONLY — verify-only रूप में डिप्लॉय हुआ है |
| जारी करना केवल स्टार्टअप के तुरंत बाद विफल होता है | DAT_MANAGER_NO_CERTIFICATE — यह पहली सिंक से पहले की स्थिति है। थोड़ी देर में हल हो जाएगी |
| CMS सिंक लगातार विफल हो रही है | DAT_CMS_UNAUTHORIZED — टोकन गलत है। पुनः प्रयास से हल नहीं होगा |
| एक भी प्रमाणपत्र नहीं आ रहा | DAT_CMS_ENDPOINT_NOT_FOUND — URL में टाइपो है |
| विफलता केवल किसी विशेष प्लेटफ़ॉर्म पर होती है | DAT_INTERNAL_UNAVAILABLE — क्रिप्टो बैकएंड उपलब्ध नहीं है |
| सत्यापन विफलताएँ अचानक बढ़ गईं | DAT_SIG_MISMATCH — एक बार होना हानिरहित है, पर एक साथ बहुत आना जालसाज़ी का प्रयास है |
| secure का डिक्रिप्शन अचानक विफल होने लगा | DAT_CRYPTO_TAG_MISMATCH — प्रमाणपत्र बेमेल हैं या छेड़छाड़ का प्रयास है |
| CMS स्टार्टअप लॉग में चेतावनी | DAT_AUTH_DISABLED — प्रमाणीकरण बंद है। जारी करने वाला API खुला हुआ है |
परिशिष्ट
कोड सिंटैक्स
DAT_<क्षेत्र>_<कारण>- एक ही कारण अलग-अलग क्षेत्रों में आए तो कारण का नाम समान रहता है।
DAT_TOKEN_MALFORMEDऔरDAT_CERT_MALFORMEDमें केवल विषय भिन्न है, अर्थ एक ही है। _UNKNOWNप्रत्येक क्षेत्र के लिए केवल फ़ॉलबैक है। इसे "अज्ञात एल्गोरिदम" जैसे अर्थ में प्रयोग नहीं किया जाता (उसके लिए_UNSUPPORTEDहै)।- कोड स्ट्रिंग एक सार्वजनिक अनुबंध है। संदेश स्वतंत्र रूप से बदला जा सकता है, कोड नहीं।
| श्रेणी | कोड उपसर्ग |
|---|---|
| टोकन | DAT_TOKEN_ |
| प्रमाणपत्र | DAT_CERT_ |
| हस्ताक्षर | DAT_SIG_ |
| एन्क्रिप्शन | DAT_CRYPTO_ |
| कुंजी | DAT_KEY_ |
| मैनेजर | DAT_MANAGER_ |
| कॉन्फ़िगरेशन | DAT_CONFIG_ |
| आंतरिक | DAT_INTERNAL_ |
| CMS सिंक | DAT_CMS_ |
| सर्वर | DAT_AUTH_ · DAT_REQ_ · DAT_STORE_ |
क्लाइंट के अनुसार पहुँच
| क्लाइंट | त्रुटि प्रकार | कोड | पुनः प्रयास वर्गीकरण | सुरक्षा घटना |
|---|---|---|---|---|
| Rust | DatError enum | err.code() | err.retry() | err.security_event() |
| Go | *dat.Error | err.Code | dat.Retry(err) | dat.SecurityEvent(err) |
| JavaScript | DatError extends Error | e.code | e.retry | e.securityEvent |
| Python | DatError(ValueError, RuntimeError) | e.code | e.retry | e.security_event |
| Ruby | Saro::Dat::Error | e.code | e.retry | e.security_event? |
| Java/Kotlin | DatException | e.code | e.retry | e.securityEvent |
| C# | DatException | e.Code | e.Retry | e.SecurityEvent |
| C/C++ | dat_error_t | dat_error_code(e) | dat_error_retry(e) | dat_error_is_security_event(e) |
| CMS सर्वर | JSON आवरण | code फ़ील्ड | — | — |
सुरक्षा घटना केवल उन दो कोडों के लिए true लौटाता है जहाँ जालसाज़ी या छेड़छाड़ निश्चित है (DAT_SIG_MISMATCH, DAT_CRYPTO_TAG_MISMATCH)। इस दस्तावेज़ का संदेह लेबल उससे व्यापक दायरा (छेड़छाड़ किए गए टोकन, कुंजी और अनुरोध तक) समेटता है, और फ़िलहाल केवल दस्तावेज़ का वर्गीकरण है, क्लाइंट API के रूप में उपलब्ध नहीं है।
प्रभाव का स्तर भी इसी तरह दस्तावेज़ का वर्गीकरण है। एक ही कोड कहाँ उत्पन्न हुआ, इसके अनुसार चोट भिन्न होती है — उदाहरण के लिए DAT_KEY_INVALID आने वाले टोकन को छानते समय कोई प्रभाव नहीं डालता, पर CMS सिंक के दौरान प्रमाणपत्र पढ़ते समय आए तो पूरी सिंक विफल हो जाती है।
मूल कारण नष्ट नहीं होता। DAT_MANAGER_NO_ISSUABLE_CERTIFICATE और DAT_CMS_IMPORT_FAILED कारण को प्रत्येक भाषा की अपवाद शृंखला (cause / __cause__ / InnerException / Unwrap()) के माध्यम से आगे पहुँचाते हैं।
C/C++ में संख्यात्मक मान भी बनाए रखे गए हैं
dat_error_t के पुराने संख्यात्मक मान ABI संगतता के लिए यथावत रखे गए हैं, पर मानक स्ट्रिंग कोड ही है। लाइब्रेरी अब पुराने मान नहीं लौटाती, इसलिए err == DAT_ERROR_INVALID_DAT जैसी तुलना मेल नहीं खाएगी। dat_error_code(e) से मिलान करें।
C में अपवाद शृंखला नहीं होती, इसलिए कारण अलग से dat_manager_issuable_cause() द्वारा प्राप्त किया जाता है।