इससे पहले, मैंने पहले ही इस संसाधन पर अपने लेख
ASN.1 को सरल शब्दों में प्रस्तुत किया है। अब मैं अपना नया काम प्रकाशित कर रहा हूं, ASN.1: 2008 मानक के साथ संगतता की जांच के लिए परीक्षण का एक स्वतंत्र रूप से वितरित सेट। अधिक सटीक रूप से, मेरे दो काम भी - प्रस्तावित टेस्ट सूट के अतिरिक्त, मैं अपना खुद का ASN.1 BER एनकोडर / डिकोडर (स्रोत कोड में) प्रदान करता हूं, जो 100% मेरे टेस्ट सूट की आवश्यकताओं को पूरा करता है। नीचे पूरे परिसर का अधिक विस्तृत वर्णन है।
ASN.1 के साथ लंबे समय तक काम करने में लगे रहने के कारण, आपको लगातार एन्कोडिंग / डिकोडिंग प्रोग्राम (ASN.1 के साथ काम करने के लिए एक विशेष कार्यक्रम) का उपयोग करने की आवश्यकता होती है। हालांकि, ASN.1 मानक की सामान्य उपलब्धता के बावजूद, ASN.1 के साथ काम करने के लिए कई कार्यक्रम कभी-कभी अलग परिणाम देते हैं। अक्सर, यहां तक कि अच्छी तरह से जाना जाता है (और भुगतान किया जाता है) प्रोग्राम ASN.1 के मानक प्रकारों के साथ काम करते समय गलतियां करते हैं, जो प्रोग्राम के परीक्षण में चूक या ASN.1 मानक के सभी पहलुओं की अधूरी समझ का परिणाम है।
इस समस्या को हल करने के लिए, ऐसा प्रतीत होगा कि ASN.1 प्रकारों में से प्रत्येक के लिए परीक्षणों का एक केंद्र विकसित सेट पर्याप्त है। हालांकि, इस मुद्दे से निपटने पर, मैंने पाया कि सार्वजनिक डोमेन में इस तरह के परीक्षण नहीं हैं। आम तौर पर। मेरी जानकारी के अनुसार, हालांकि, ऐसे परीक्षण मौजूद हैं, लेकिन वे या तो बंद हैं या भुगतान किए गए हैं, और ऐसे परीक्षणों पर परीक्षण केवल प्रमाणित संगठनों में विशेष साइटों पर किया जाता है। लेकिन एक सामान्य डेवलपर को क्या करना चाहिए, उदाहरण के लिए, एक नया, स्वतंत्र रूप से वितरित ASN.1 संकलक? ASN.1 मानक में डेटा के साथ काम करने के लिए कुछ नया बनाना चाहते हैं, साथ ही साथ हर कोई जो इस मानक का अध्ययन करना चाहता है, उसकी मदद करने के लिए, मैंने ASN.1 डेटा प्रकारों के लिए एन्कोडिंग मुद्दों को पूरी तरह से कवर करने वाले परीक्षणों का एक समूह बनाया।
परीक्षण सूट निम्नलिखित कार्यों को हल करता है:
- सबसे आम कोडिंग प्रारूप ASN.1 - BER के लिए परीक्षण देता है;
- प्रत्येक प्रकार के साथ-साथ प्रत्येक प्रकार के सबयूनिट्स के लिए कोडिंग आवश्यकताओं की पूर्ति;
- प्रत्येक प्रकार के कोडिंग करते समय गैर-मानक स्थितियों का एक पूरा सेट देता है;
- प्रत्येक प्रकार के लिए गलत कोडिंग का एक पूरा सेट देता है;
- प्रस्तावित परीक्षणों में से प्रत्येक के लिए ASN.1 प्रसंस्करण कार्यक्रम के व्यवहार का एक सलाहकार विवरण प्रदान करता है;
- यह किसी भी इच्छुक व्यक्ति के लिए नए परीक्षण मामलों को जोड़ने में भाग लेने के लिए संभव बनाता है, और अपने खुद के टेस्ट सूट बनाने के लिए एक प्रारंभिक बिंदु भी प्रदान करता है;
दरअसल, ASN.1 BER प्रारूप में एन्कोडेड डेटा के साथ परीक्षण स्वयं बाइनरी फाइलें हैं। प्रस्तावित परीक्षण सूट के साथ काम को सुविधाजनक बनाने के लिए, हम प्रत्येक परीक्षण मामले का एक संक्षिप्त पाठ संक्षिप्त विवरण भी प्रदान करते हैं, साथ में डेटा प्रकार का परीक्षण किया जाता है, साथ ही ASN.1 डेटा प्रोसेसिंग प्रोग्राम के प्रस्तावित कार्यों का एक संक्षिप्त विवरण। सभी परीक्षण वैध कोडिंग विकल्प हैं, अर्थात, सभी, एक ही रास्ता या किसी अन्य, ASN.1 डेटा प्रोसेसिंग प्रोग्राम के वास्तविक संचालन में जल्द या बाद में सामना किया जा सकता है। सभी परीक्षणों (tc * .ber फ़ाइलों), CompliXML प्रारूप फ़ाइलों (नीचे देखें) के साथ एक पूर्ण संग्रह, परीक्षणों के आधार पर प्राप्त किया (रूपांतरित * tc * .xml फ़ाइलें), पुनः-एन्कोडेड फ़ाइलें (एन्कोडेड_tc * .ber फ़ाइलें),। साथ ही सभी परीक्षणों के संक्षिप्त विवरण के साथ (फ़ाइल "free_asn1_testsuite.pdf") को
सीधे लिंक द्वारा प्राप्त
किया जा सकता है।
प्रारंभ में, उपरोक्त परीक्षणों का संकलन करते समय, मैंने केवल अपने व्यक्तिगत अनुभव और ASN.1 कोडिंग मानक का ही उपयोग किया। हालांकि, जैसा कि परीक्षण मामलों की पूरी सूची संकलित की गई थी, सवाल अधिक से अधिक बार उठता है - कैसे ASN.1 प्रसंस्करण कार्यक्रम को प्रत्येक विशिष्ट मामले में सही ढंग से प्रतिक्रिया करनी चाहिए और क्या यह आमतौर पर प्रत्येक असाधारण स्थिति को सामान्य रूप से संभालना संभव है? इन सवालों के जवाब खोजने के लिए, मुझे अपना खुद का कार्यक्रम बनाना था, जो ASN.1 BER को डीकोड करने और समान ASN.1 BER डेटा को एनकोड करने की अनुमति देता है। मैं इस कार्यक्रम के सभी स्रोत कोड मुफ्त में वितरित करता हूं और हर कोई इन कोड का उपयोग करने के लिए स्वतंत्र है क्योंकि वह पसंद करता है (लगभग - कार्यक्रम बीएसडी लाइसेंस के तहत जारी किया गया है)। कार्यक्रम पूरी तरह से परीक्षण और शैक्षिक उद्देश्यों के लिए कार्य करता है। नीचे मेरे सॉफ़्टवेयर उत्पाद का अधिक विस्तृत वर्णन है।
कार्यक्रम को COMPLI (पूरी तरह से आज्ञाकारी ASN.1 BER डिकोडर / एनकोडर) कहा जाता है।
सबसे पहले, कार्यक्रम की सीमाओं के बारे में:
- कार्यक्रम विंडोज के तहत लिखा गया है;
- प्रोग्राम को स्थापित MSXML 6 की आवश्यकता है;
- इस कार्यक्रम का उद्देश्य केवल ASN.1 डेटा प्रकार एन्कोडिंग / डिकोडिंग के सिद्धांतों के साथ स्वयं को परिचित करना है, साथ ही एन्कोडिंग / डिकोडिंग के दौरान उत्पन्न होने वाली गैर-मानक स्थितियों पर प्रतिक्रिया का एक नमूना प्रदान करना है;
- कार्यक्रम में स्रोत कोड के अनुकूलन का अभाव है, जिससे कार्यक्रम की आंतरिक गतिविधि की प्रक्रियाओं को समझना आसान हो जाता है;
अब कार्यक्रम की विशेषताओं के बारे में अधिक विस्तार से:
- यह सबसे आम एन्कोडिंग प्रारूप ASN.1 के लिए एक एनकोडर / डिकोडर है - बीईआर (यानी, डीईआर और सीईआर कार्यक्रम प्रक्रियाओं को भी प्रारूपित करता है);
- इसके अलावा, सॉफ़्टवेयर उत्पाद बाइनरी डेटा के साथ BASE64 प्रारूप में एन्कोडेड के साथ-साथ ASN.1 प्रकारों का वर्णन करने के लिए आंतरिक XML प्रारूप के साथ काम करने की अनुमति देता है (नीचे देखें);
- एन्कोडिंग और डिकोडिंग को नवीनतम ASN.1: 2008 मानक से सभी प्रकारों के लिए लागू किया गया है;
- प्रत्येक प्रकार के लिए एन्कोडिंग और डिकोडिंग 100% ASN.1 मानक के साथ संगतता परीक्षण के लिए पहले प्रस्तावित परीक्षण मामलों को संतुष्ट करता है;
- कार्यक्रम को एक लाइसेंस के तहत स्रोत कोड में वितरित किया जाता है, जिससे आप उन्हें व्यावसायिक विकास में भी उपयोग कर सकते हैं;
- प्रोग्राम कोड C ++ में ऑब्जेक्ट प्रोग्रामिंग मॉडल का उपयोग करके लिखा गया है;
- कोड त्रुटियों और मेमोरी लीक के लिए जाँच की है;
- कोड मनमाने ढंग से एक्स्टेंसिबल है, जिससे आप नए ASN.1 एन्कोडिंग प्रारूपों के साथ काम जोड़ सकते हैं;
- कार्यक्रम में फ़ाइलों के साथ काम करने का एक बैच मोड है, जिससे आप एक समय में कई इनपुट फ़ाइलों को संसाधित कर सकते हैं, और एक प्रसंस्करण पैकेट में एक निश्चित प्रकार और एन्कोडिंग संचालन के लिए दोनों डिकोडिंग ऑपरेशन हो सकते हैं। कॉन्फ़िगरेशन फ़ाइल को XML में दर्शाया गया है, कॉन्फ़िगरेशन फ़ाइल प्रारूप को एक्सएसडी योजना ( एक्सएसडी फ़ाइल के लिए लिंक ) के रूप में वर्णित किया गया है ;
- मानक आउटपुट प्रारूप (CompliXML) डीकोड किए गए प्रकारों को एक्सएमएल के रूप में वर्णित करता है, जो डिकोडिंग के परिणामों को समझना आसान बनाता है, और डिकोड किए गए डेटा के आधार पर माध्यमिक रिपोर्ट बनाना भी संभव बनाता है;
- मानक आउटपुट प्रारूप को एक्सएसडी योजना ( एक एक्सएसडी फ़ाइल से लिंक ) के रूप में विस्तार से वर्णित किया गया है;
- मानक आउटपुट प्रारूप प्रत्येक डिकोड किए गए प्रकार के भीतर प्रत्येक व्यक्ति उप-ब्लॉक का वर्णन करता है। उदाहरण के लिए, OBJECT IDENTIFIER को डिकोड करते समय, आउटपुट फ़ाइल में प्रत्येक "उप-पहचानकर्ता" के लिए जानकारी का एक अलग ब्लॉक बनाया जाता है, और REAL की तरह डिकोडिंग करते समय, मंटिसा, घातांक, और सूचना सबयूनिट के सब यूनिटों के लिए जानकारी के अलग-अलग ब्लॉक बनाए जाते हैं;
- वास्तव में डिकोड किए गए डेटा के अलावा, मानक आउटपुट प्रारूप डिकोडिंग के दौरान होने वाली चेतावनियों और त्रुटियों का वर्णन करने की अनुमति देता है। इसके अलावा, चेतावनियां और त्रुटियां दोनों पूरी डिकोड की गई फ़ाइल पर और प्रत्येक ASN.1 प्रकार के भीतर डिकोड किए गए सबयूनिट्स पर लागू हो सकती हैं;
- एन्कोडिंग क्षमताओं को सरल बनाने के लिए, कार्यक्रम के आउटपुट और इनपुट प्रारूप पूरी तरह से समान हैं। यही है, एक जटिल फ़ाइल को डिकोड करना (उदाहरण के लिए, एक X.509 प्रमाणपत्र) और एक XML आउटपुट फाइल को कंप्लीटएक्सएमएल प्रारूप में प्राप्त किया, आप उसी फ़ाइल को प्रोग्राम इनपुट में स्थानांतरित कर सकते हैं और एक एन्कोडेड बाइनरी फ़ाइल प्राप्त कर सकते हैं जो मूल डिकोडेड फ़ाइल के समान है;
- कार्यक्रम का ऐसा लचीलापन आपको एक बाइनरी फ़ाइल को डीकोड करने की अनुमति देता है, इसमें ASN.1 डेटा के प्रकार को बदलें (उदाहरण के लिए, BMP STRING से PRINTABLE STRING तक), और फिर नई, परिवर्तित डेटा प्रकारों के साथ एक नई बाइनरी फ़ाइल को एनकोड करें;
परिणामस्वरूप, COMPLI प्रोग्राम बनाने के बाद, मैं निम्नलिखित कार्यों को लागू करने में सक्षम था:
- एक मान्य फ्रीवेयर ASN.1 BER एनकोडर / डिकोडर प्राप्त करें;
- सभी प्रकार के ASN.1 के कोडिंग के प्रस्तावित परीक्षण मामलों के परीक्षण के लिए एक स्टैंड प्राप्त करें;
- ASN.1 प्रकारों में से प्रत्येक के लिए सबसे विस्तृत और सरल विवरण प्रारूप प्राप्त करें;
- सभी प्रकार के ASN.1, और BER प्रारूप में XML फ़ाइलों का उपयोग करके आसानी से एनकोड करने की क्षमता प्राप्त करें। यही है, COMPLI आपको पूरी तरह से प्रोग्रामिंग से छुटकारा पाने की अनुमति देता है जब मनमाने ढंग से बाइनरी ASN.1 BER फ़ाइलों का निर्माण होता है, जो केवल XML डेटा में पाठ डेटा के साथ काम करने की क्षमता प्रदान करता है;
- ASN.1 प्रकार कोडिंग I की पेशकश के सभी परीक्षण मामलों में संभावित प्रतिक्रियाएं दिखाएं;
कार्यक्रम बढ़ता और विस्तारित होता रहेगा। वर्तमान में, यह निम्नलिखित प्रारूपों के लिए एन्कोडिंग / से अनुमति देता है:
- बीईआर (डीईआर, सीईआर);
- BER64 में BER अतिरिक्त रूप से एन्कोड किया गया (उदाहरण के लिए, OpenSSL प्रमाणपत्र);
- CompliXML;
- जल्द ही XER प्रारूप को इस सूची में जोड़ दिया जाएगा।
वास्तव में परीक्षण सूट हीCOMPLI स्रोतCOMPLI निष्पादन योग्य + XSD स्कीमा + कॉन्फ़िगरेशन फ़ाइल टेस्ट सूट के लिएएक पीडीएफ के रूप में एक ही लेख