nl:: Weave:: Profiles:: Security:: CASE:: WeaveCASEAuthDelegate
यह एक ऐब्सट्रैक्ट क्लास है.
#include <src/lib/profiles/security/WeaveCASE.h>
ऐसा एब्स्ट्रैक्ट इंटरफ़ेस जिसे CASE सेशन सेट अप करने के दौरान, पुष्टि करने की कार्रवाइयां सौंपी जाती हैं.
खास जानकारी
इनहेरिटेंस
पहचाने गए सबक्लास को डायरेक्ट करें: nl::Weave::DeviceManager::WeaveDeviceManager
सार्वजनिक फ़ंक्शन |
|
---|---|
BeginValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
|
virtual WEAVE_ERROR
सर्टिफ़िकेट की पुष्टि शुरू होने पर कॉल किया जाता है.
|
EncodeNodeCertInfo(const BeginSessionContext & msgCtx, TLVWriter & writer)=0
|
virtual WEAVE_ERROR
स्थानीय नोड के लिए, CASE सर्टिफ़िकेट की जानकारी को कोड में बदलें.
|
EncodeNodePayload(const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen)
|
virtual WEAVE_ERROR
ऐप्लिकेशन के हिसाब से बनाए गए पेलोड को कोड में बदलें, ताकि उसे पीयर को भेजे जाने वाले CASE मैसेज में शामिल किया जा सके.
|
EndValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
|
virtual void
सर्टिफ़िकेट की पुष्टि होने के बाद कॉल किया जाता है.
|
GenerateNodeSignature(const BeginSessionContext & msgCtx, const uint8_t *msgHash, uint8_t msgHashLen, TLVWriter & writer, uint64_t tag)=0
|
virtual WEAVE_ERROR
लोकल नोड की निजी कुंजी का इस्तेमाल करके हस्ताक्षर जनरेट करें.
|
HandleValidationResult(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet, WEAVE_ERROR & validRes)=0
|
virtual WEAVE_ERROR
सर्टिफ़िकेट की पुष्टि के नतीजे के साथ कॉल किया जाता है.
|
OnPeerCertsLoaded(const BeginSessionContext & msgCtx, WeaveDN & subjectDN, CertificateKeyId & subjectKeyId, ValidationContext & validCtx, WeaveCertificateSet & certSet)
|
virtual WEAVE_ERROR
पियर के सर्टिफ़िकेट लोड होने के बाद कॉल किया जाता है.
|
सार्वजनिक फ़ंक्शन
BeginValidation
virtual WEAVE_ERROR BeginValidation( const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet )=0
सर्टिफ़िकेट की पुष्टि शुरू होने पर कॉल किया जाता है.
लागू करने के लिए, दिए गए WeaveCertificateSet ऑब्जेक्ट को ज़रूरी संसाधनों के साथ शुरू करना होगा, ताकि आने वाले समय में सर्टिफ़िकेट की पुष्टि की जा सके. इस समय, लागू करने वाले, सर्टिफ़िकेट सेट में भरोसेमंद रूट या सीए सर्टिफ़िकेट लोड कर सकते हैं या OnPeerCertsLoaded() को कॉल होने तक इंतज़ार कर सकते हैं.
सर्टिफ़िकेट सेट में लोड किए गए हर सर्टिफ़िकेट को, लोड फ़ंक्शन से सर्टिफ़िकेट का डिफ़ॉल्ट टाइप असाइन किया जाएगा. पुष्टि के दौरान सर्टिफ़िकेट का सही इस्तेमाल और CASE इंटरैक्शन के लिए WeaveAuthMode के सही असाइनमेंट को पक्का करने के लिए, लागू करने के तरीकों में ज़रूरत के मुताबिक बदलाव किया जाना चाहिए.
दिए गए पुष्टि करने के संदर्भ को, पुष्टि करने की डिफ़ॉल्ट शर्तों के एक सेट के साथ शुरू किया जाएगा, जिसे लागू करने की प्रोसेस में ज़रूरत के मुताबिक बदलाव किया जा सकता है. लागू करने के लिए, EffectiveTime फ़ील्ड को सेट करना ज़रूरी है. इसके अलावा, सर्टिफ़िकेट के लाइफ़टाइम की पुष्टि को रोकने के लिए, पुष्टि करने से जुड़े सही फ़्लैग भी सेट किए जा सकते हैं.
अगर पुष्टि के पूरे नतीजे चाहिए, तो इसके लागू होने से CertValidation Results और CertValidationLen फ़ील्ड शुरू किया जा सकता है.
BeginValidation() के दौरान, तय किए गए संसाधनों को तब तक बनाए रखना ज़रूरी है, जब तक कि उससे जुड़ा EndValidation() कॉल नहीं किया जाता. लागू करने पर यह पक्का किया जाता है कि BeginValidation() को हर बार कॉल करने पर, EndValidation() को ठीक एक बार कॉल किया जाएगा.
EncodeNodeCertInfo
virtual WEAVE_ERROR EncodeNodeCertInfo( const BeginSessionContext & msgCtx, TLVWriter & writer )=0
स्थानीय नोड के लिए, CASE सर्टिफ़िकेट की जानकारी को कोड में बदलें.
लागू करने के टूल इस कॉल का इस्तेमाल, लोकल नोड के लिए CASE Certificate Information स्ट्रक्चर की डिफ़ॉल्ट एन्कोडिंग को बदलने के लिए कर सकते हैं. लागू करने के लिए, CertificateInformation स्ट्रक्चर लिखा जाना चाहिए. इसमें कम से कम, स्थानीय नोड की इकाई का सर्टिफ़िकेट होना चाहिए. लागू करने के लिए, इससे जुड़े सर्टिफ़िकेट और/या ट्रस्ट ऐंकर का सेट शामिल किया जा सकता है.
EncodeNodePayload
virtual WEAVE_ERROR EncodeNodePayload( const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen )
ऐप्लिकेशन के हिसाब से बनाए गए पेलोड को कोड में बदलें, ताकि उसे पीयर को भेजे जाने वाले CASE मैसेज में शामिल किया जा सके.
इस तरीके को लागू करना ज़रूरी नहीं है. डिफ़ॉल्ट तौर पर लागू करने पर, शून्य लंबाई वाला पेलोड दिखता है.
EndValidation
virtual void EndValidation( const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet )=0
सर्टिफ़िकेट की पुष्टि खत्म होने पर कॉल किया जाता है.
लागू करने वाले, सर्टिफ़िकेट की पुष्टि पूरी होने के बाद, क्लीनअप करने के लिए इस कॉल का इस्तेमाल कर सकते हैं. लागू करने पर यह गारंटी होती है कि BeginValidation() को हर बार कॉल करने पर, EndValidation() को ठीक एक बार कॉल किया जाएगा.
GenerateNodeSignature
virtual WEAVE_ERROR GenerateNodeSignature( const BeginSessionContext & msgCtx, const uint8_t *msgHash, uint8_t msgHashLen, TLVWriter & writer, uint64_t tag )=0
लोकल नोड की निजी कुंजी का इस्तेमाल करके हस्ताक्षर जनरेट करें.
लागू किए जाने पर, लागू करने के लिए नोड की निजी कुंजी का इस्तेमाल करके दिए गए हैश मान पर हस्ताक्षर की गणना करनी चाहिए. इसके बाद, जनरेट किए गए हस्ताक्षर को दिए गए टैग का इस्तेमाल करके, दिए गए TLV स्ट्रक्चर में CASE ECDSASignature के तौर पर लिखा जाना चाहिए.
अगर नोड की निजी कुंजी किसी लोकल बफ़र में सेव की गई है, तो इस तरीके को लागू करने के लिए GenerateAndEncodeWeaveECDSASignature() यूटिलिटी फ़ंक्शन का इस्तेमाल किया जा सकता है.
HandleValidationResult
virtual WEAVE_ERROR HandleValidationResult( const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet, WEAVE_ERROR & validRes )=0
सर्टिफ़िकेट की पुष्टि के नतीजे के साथ कॉल किया जाता है.
लागू करने वाले इस कॉल का इस्तेमाल, पीयर के सर्टिफ़िकेट की पुष्टि के नतीजे की जांच करने और उसमें बदलाव करने के लिए कर सकते हैं. अगर पुष्टि हो जाती है, तो validRes को WEAVE_NO_ERROR पर सेट कर दिया जाएगा. इस मामले में, पुष्टि के कॉन्टेक्स्ट में नतीजे की जानकारी शामिल होगी. खास तौर पर, TrustAnchor फ़ील्ड को ट्रस्ट ऐंकर सर्टिफ़िकेट पर सेट किया जाएगा.
अगर लागू करने के दौरान, BeginValidation() को कॉल करने के दौरान, ValidationContext स्ट्रक्चर में CertValidationResults और CertValidationLen फ़ील्ड को शुरू किया गया है, तो इन फ़ील्ड में सर्टिफ़िकेट सेट में मौजूद हर सर्टिफ़िकेट की पुष्टि के बारे में ज़्यादा जानकारी होगी.
लागू करने की सुविधा के तहत,ValidRes को गड़बड़ी की वैल्यू पर सेट कर दिया जाता है. इससे, पुष्टि नहीं हो पाती है.
अगर पुष्टि नहीं हो पाती है, तो validRes में पुष्टि न हो पाने की वजह दिखेगी. लागू करने की प्रोसेस, नतीजे को गड़बड़ी की किसी दूसरी वैल्यू पर बदल सकती है. हालांकि, नतीजे को WEAVE_NO_ERROR पर सेट नहीं किया जाना चाहिए.
OnPeerCertsLoaded
virtual WEAVE_ERROR OnPeerCertsLoaded( const BeginSessionContext & msgCtx, WeaveDN & subjectDN, CertificateKeyId & subjectKeyId, ValidationContext & validCtx, WeaveCertificateSet & certSet )
पियर के सर्टिफ़िकेट लोड होने के बाद कॉल किया जाता है.
लागू करने के टूल, इनपुट सर्टिफ़िकेट और पुष्टि करने की शर्तों को पूरा करने के लिए इस कॉल का इस्तेमाल कर सकते हैं. इनका इस्तेमाल मिलते-जुलते ऐप्लिकेशन के सर्टिफ़िकेट की पुष्टि करने के लिए किया जाएगा. कॉल के समय, पीयर से मिले सर्टिफ़िकेट, सर्टिफ़िकेट सेट में लोड हो जाएंगे. इसमें पीयर का सर्टिफ़िकेट भी शामिल होगा. इसके अलावा, subjectDN और subjectKeyId आर्ग्युमेंट को उन वैल्यू के साथ शुरू किया जाएगा जिनका इस्तेमाल, सर्टिफ़िकेट सेट से पीयर के सर्टिफ़िकेट को हल करने के लिए किया जाएगा. अगर मिलते-जुलते ऐप्लिकेशन ने अपना सर्टिफ़िकेट दिया है (सर्टिफ़िकेट का रेफ़रंस देने के बजाय), तो मान्यCtx आर्ग्युमेंट में मौजूद EntityCert फ़ील्ड में, उस सर्टिफ़िकेट के लिए पॉइंटर मौजूद होगा.
इस कॉल के दौरान, लागू करने की प्रोसेस में सर्टिफ़िकेट सेट के कॉन्टेंट में बदलाव हो सकता है. इसमें नए सर्टिफ़िकेट जोड़ना भी शामिल है. ज़रूरत के मुताबिक, वेSubjectDN,SubjectKeyId या मान्यCtx आर्ग्युमेंट में बदलाव भी कर सकते हैं. सबसे अहम बात यह है कि लागू करने से पहले, सर्टिफ़िकेट टाइप फ़ील्ड को सर्टिफ़िकेट सेट के साथ अडजस्ट करना चाहिए. इससे, पुष्टि करने और उसके बाद ऐक्सेस कंट्रोल की जांच के दौरान, सर्टिफ़िकेट का सही तरीके से इस्तेमाल किया जा सकेगा.
ध्यान दें: अगर पीयर अपने लिए पूरे सर्टिफ़िकेट के बजाय सर्टिफ़िकेट का रेफ़रंस देता है, तो पुष्टि करने के संदर्भ में EntityCert फ़ील्ड में NULL होगा. अगर किसी लागू करने की प्रोसेस में सर्टिफ़िकेट रेफ़रंस का इस्तेमाल करना है, तो उसे सर्टिफ़िकेट सेट में, पीयर के विषय के डीएन और कुंजी आईडी से मैच होने वाला सर्टिफ़िकेट जोड़ना होगा.
इस तरीके को लागू करना ज़रूरी नहीं है. डिफ़ॉल्ट रूप से लागू होने पर कुछ नहीं होता है.