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 ऑब्जेक्ट को शुरू करना ज़रूरी होता है. इसमें, आने वाले समय में होने वाले सर्टिफ़िकेट की पुष्टि को मैनेज करने के लिए, ज़रूरी संसाधन उपलब्ध होते हैं. इस समय लागू करने के लिए, भरोसेमंद रूट या CA सर्टिफ़िकेट को सर्टिफ़िकेट सेट में लोड किया जा सकता है या OnPeerCertsLoaded() को कॉल किए जाने तक इंतज़ार किया जा सकता है.

सर्टिफ़िकेट सेट में लोड किए गए हर सर्टिफ़िकेट को, लोड फ़ंक्शन के ज़रिए एक डिफ़ॉल्ट सर्टिफ़िकेट टाइप असाइन किया जाएगा. पुष्टि के दौरान सर्टिफ़िकेट का सही इस्तेमाल हो, यह पक्का करने के लिए लागू किए जाने वाले तरीकों में ज़रूरत के मुताबिक बदलाव किए जाने चाहिए. साथ ही, CASE इंटरैक्शन के लिए WeaveAuthMode को सही तरीके से असाइन किया जाना चाहिए.

दिए गए पुष्टि के कॉन्टेक्स्ट को, पुष्टि करने की डिफ़ॉल्ट शर्तों के एक सेट के साथ शुरू किया जाएगा. इसे लागू करने के तरीके में ज़रूरत के मुताबिक बदलाव किया जा सकता है. लागू करने के तरीके को या तो EffectTime फ़ील्ड सेट करना चाहिए या सर्टिफ़िकेट के लाइफ़टाइम की पुष्टि को दबाने के लिए सही पुष्टि करने वाले फ़्लैग सेट करने चाहिए.

अगर विस्तृत पुष्टि के नतीजे चाहिए, तो लागू करने की प्रक्रिया से CertValidresults और CertValidLen फ़ील्ड शुरू की जा सकती हैं.

BeginValidation() के दौरान असाइन किए गए किसी भी रिसॉर्स को तब तक बनाए रखने के लिए, उसे लागू करना ज़रूरी होता है, जब तक कि उससे जुड़ा EndValidation() कॉल न हो जाए. लागू होने की गारंटी है कि हर बार EndValidation() को कॉल किया जाएगा. यह BeginValidation() होगी.

EncodeNodeCertInfo

virtual WEAVE_ERROR EncodeNodeCertInfo(
  const BeginSessionContext & msgCtx,
  TLVWriter & writer
)=0

लोकल नोड के लिए CASE सर्टिफ़िकेट की जानकारी को कोड में बदलें.

लागू करने के तरीके इस कॉल का इस्तेमाल, स्थानीय नोड के लिए CASE CertificateDetails स्ट्रक्चर की डिफ़ॉल्ट एन्कोडिंग को बदलने के लिए कर सकते हैं. कॉल किए जाने पर, इंप्लीमेंटेशन को एक Certificate Information स्ट्रक्चर लिखना चाहिए, जिसमें कम से कम लोकल नोड का इकाई सर्टिफ़िकेट शामिल हो. लागू करने के तरीके में, मिलते-जुलते सर्टिफ़िकेट और/या ट्रस्ट ऐंकर शामिल हो सकते हैं.

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

सर्टिफ़िकेट की पुष्टि के आखिर में कॉल किया जाता है.

सर्टिफ़िकेशन की पुष्टि पूरी होने के बाद, लागू करने के लिए इस कॉल का इस्तेमाल क्लीनअप करने के लिए किया जा सकता है. लागू होने की गारंटी है कि हर बार EndValidation() को कॉल किया जाएगा. यह BeginValidation() होगी.

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

इसे सर्टिफ़िकेट की पुष्टि करने के बाद कॉल किया गया है.

लागू करने के लिए इस कॉल का इस्तेमाल, मिलते-जुलते ऐप्लिकेशन के सर्टिफ़िकेट की पुष्टि करने के बाद जांच करने और उसमें बदलाव करने के लिए किया जा सकता है. पुष्टि होने पर, मान्यRes को WEAVE_NO_ERROR पर सेट कर दिया जाएगा. इस मामले में, पुष्टि करने के कॉन्टेक्स्ट में नतीजे की जानकारी शामिल होगी. खास तौर पर, Trustanchor फ़ील्ड को ट्रस्ट ऐंकर सर्टिफ़िकेट पर सेट किया जाएगा.

अगर लागू करने की प्रक्रिया को BeginValidation() के दौरान, ValidationContext संरचना में Cert लोड की गई वैल्यू और Cert VerificationLen फ़ील्ड की शुरुआत की गई है, तो सर्टिफ़िकेट के सेट के हर सर्टिफ़िकेट की पुष्टि के लिए, इन फ़ील्ड में पूरी जानकारी वाले नतीजे शामिल होंगे.

लागू करने पर यह बदलाव, किसी गड़बड़ी वाली वैल्यू पर validRes सेट करके बदल सकता है. इस वजह से, पुष्टि करने में गड़बड़ी हो सकती है.

अगर पुष्टि नहीं हो पाती है, तो validRes जवाब न मिलने की वजह दिखाएगा. लागू करने से, नतीजे में गड़बड़ी वाली कोई दूसरी वैल्यू बदल सकती है. हालांकि, इसे WEAVE_NO_ERROR पर सेट नहीं किया जाना चाहिए.

OnPeerCertsLoaded

virtual WEAVE_ERROR OnPeerCertsLoaded(
  const BeginSessionContext & msgCtx,
  WeaveDN & subjectDN,
  CertificateKeyId & subjectKeyId,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet
)

मिलते-जुलते ऐप्लिकेशन के प्रमाणपत्र लोड होने के बाद कॉल किया जाता है.

लागू करने के तरीके इस कॉल का इस्तेमाल इनपुट सर्टिफ़िकेट और पुष्टि करने की शर्तों को पूरा करने के लिए कर सकते हैं. इनका इस्तेमाल मिलते-जुलते ऐप्लिकेशन के सर्टिफ़िकेट की पुष्टि करने के लिए किया जाएगा. कॉल के समय, साथी के दिए गए सर्टिफ़िकेट को सर्टिफ़िकेट के सेट में लोड किया जाएगा. इसमें, सर्टिफ़िकेट मौजूद होने पर उसका सर्टिफ़िकेट भी शामिल होगा. इसके अलावा, subjectDN और subjectKeyId आर्ग्युमेंट शुरू किए जाएंगे. इनका इस्तेमाल सर्टिफ़िकेट सेट से, साथी के सर्टिफ़िकेट की समस्या हल करने के लिए किया जाएगा. अगर पीयर ने अपना ही सर्टिफ़िकेट दिया है (न कि सर्टिफ़िकेट रेफ़रंस) तो, validCtx आर्ग्युमेंट में मौजूद EntityCert फ़ील्ड में उस सर्टिफ़िकेट का एक पॉइंटर शामिल होगा.

इस कॉल के दौरान, इंप्लीमेंटेशन, सर्टिफ़िकेट सेट के कॉन्टेंट में बदलाव कर सकता है. इसमें नए सर्टिफ़िकेट जोड़ना भी शामिल है. ज़रूरत के हिसाब से, वे subjectDN, subjectKeyId या validCtx आर्ग्युमेंट भी बदल सकते हैं. सबसे ज़्यादा ज़रूरी है कि इसे लागू करने के लिए, सर्टिफ़िकेट के टाइप वाले फ़ील्ड को, वापस किए जाने से पहले सेट किए गए सर्टिफ़िकेट के साथ अडजस्ट करना चाहिए. इससे, पुष्टि और ऐक्सेस कंट्रोल की बाद की जांच के दौरान सर्टिफ़िकेट को सही तरीके से लागू किया जा सकेगा.

ध्यान दें: अगर साथी पूरी तरह से सर्टिफ़िकेट के बजाय अपने लिए एक सर्टिफ़िकेट रेफ़रंस देता है, तो पुष्टि करने के संदर्भ में EntityCert फ़ील्ड में एक शून्य दिखेगा. अगर कोई इंप्लिमेंटेशन, सर्टिफ़िकेट के रेफ़रंस का इस्तेमाल करना चाहता है, तो उसे वापस लौटने से पहले सर्टिफ़िकेट सेट से एक सर्टिफ़िकेट जोड़ना होगा. यह सर्टिफ़िकेट, मिलते-जुलते ऐप्लिकेशन के सब्जेक्ट डीएन और कुंजी आईडी से मेल खाता है.

इस तरीके को लागू करना ज़रूरी नहीं है. डिफ़ॉल्ट तौर पर लागू करने से कुछ नहीं होता.