nl:: বুনা:: প্রোফাইল:: নিরাপত্তা:: কেস:: 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 পিয়ার সার্টিফিকেট লোড করা হয়েছে পরে কল. |
পাবলিক ফাংশন
বৈধকরণ শুরু করুন
virtual WEAVE_ERROR BeginValidation( const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet )=0
শংসাপত্র যাচাইকরণের শুরুতে কল করা হয়।
আসন্ন শংসাপত্রের বৈধতা পরিচালনা করার জন্য পর্যাপ্ত সংস্থান সহ বাস্তবায়নগুলিকে সরবরাহ করা WeaveCertificateSet অবজেক্টকে আরম্ভ করতে হবে। এই সময়ে প্রয়োগগুলি সার্টিফিকেট সেটে বিশ্বস্ত রুট বা CA শংসাপত্র লোড করতে পারে, অথবা OnPeerCertsLoaded() কল না হওয়া পর্যন্ত অপেক্ষা করতে পারে৷
শংসাপত্র সেটে লোড করা প্রতিটি শংসাপত্র লোড ফাংশন দ্বারা একটি ডিফল্ট শংসাপত্রের ধরন বরাদ্দ করা হবে। বৈধকরণের সময় শংসাপত্রের সঠিক চিকিত্সা নিশ্চিত করতে এবং CASE ইন্টারঅ্যাকশনের জন্য WeaveAuthMode-এর সঠিক অ্যাসাইনমেন্ট নিশ্চিত করার জন্য বাস্তবায়নের এই প্রকারগুলিকে প্রয়োজন অনুসারে সামঞ্জস্য করা উচিত।
সরবরাহকৃত বৈধতা প্রসঙ্গটি ডিফল্ট বৈধতা মানদণ্ডের একটি সেটের সাথে শুরু করা হবে, যা বাস্তবায়ন প্রয়োজন অনুসারে পরিবর্তন করতে পারে। বাস্তবায়নকে অবশ্যই EffectiveTime ফিল্ড সেট করতে হবে, অথবা সার্টিফিকেটের আজীবন বৈধতা দমন করার জন্য উপযুক্ত বৈধতা ফ্ল্যাগ সেট করতে হবে।
যদি বিস্তারিত যাচাইকরণের ফলাফল পছন্দ হয়, তাহলে প্রয়োগটি CertValidationResults এবং CertValidationLen ক্ষেত্রগুলি শুরু করতে পারে।
যতক্ষণ না সংশ্লিষ্ট EndValidation() বলা না হয় ততক্ষণ পর্যন্ত BeginValidation() এর সময় বরাদ্দ করা যেকোন সংস্থান বজায় রাখার জন্য বাস্তবায়নের প্রয়োজন। বাস্তবায়ন নিশ্চিত করা হয় যে BeginValidation() এ প্রতিটি সফল কলের জন্য EndValidation () কে ঠিক একবার কল করা হবে।
EncodeNodeCertInfo
virtual WEAVE_ERROR EncodeNodeCertInfo( const BeginSessionContext & msgCtx, TLVWriter & writer )=0
স্থানীয় নোডের জন্য CASE শংসাপত্রের তথ্য এনকোড করুন।
স্থানীয় নোডের জন্য CASE CertificateInformation কাঠামোর ডিফল্ট এনকোডিং ওভাররাইড করতে বাস্তবায়ন এই কলটি ব্যবহার করতে পারে। যখন কল করা হয়, তখন বাস্তবায়নের একটি সার্টিফিকেট ইনফরমেশন কাঠামো লিখতে হবে, যাতে ন্যূনতম স্থানীয় নোডের সত্তা শংসাপত্র থাকে। বাস্তবায়নে ঐচ্ছিকভাবে সম্পর্কিত শংসাপত্র এবং/অথবা ট্রাস্ট অ্যাঙ্করগুলির একটি সেট অন্তর্ভুক্ত থাকতে পারে।
EncodeNodePayload
virtual WEAVE_ERROR EncodeNodePayload( const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen )
সহকর্মীকে CASE বার্তায় অন্তর্ভুক্ত করার জন্য একটি অ্যাপ্লিকেশন-নির্দিষ্ট পেলোড এনকোড করুন৷
এই পদ্ধতিটি প্রয়োগ করা ঐচ্ছিক। ডিফল্ট বাস্তবায়ন একটি শূন্য-দৈর্ঘ্য পেলোড প্রদান করে।
সমাপ্তি যাচাইকরণ
virtual void EndValidation( const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet )=0
সার্টিফিকেট যাচাই শেষে কল করা হয়।
শংসাপত্রের বৈধতা সম্পূর্ণ হওয়ার পরে বাস্তবায়নগুলি এই কলটি পরিষ্কার করার জন্য ব্যবহার করতে পারে। বাস্তবায়ন নিশ্চিত করা হয় যে BeginValidation() এ প্রতিটি সফল কলের জন্য EndValidation () কে ঠিক একবার কল করা হবে।
নোডসিগনেচার তৈরি করুন
virtual WEAVE_ERROR GenerateNodeSignature( const BeginSessionContext & msgCtx, const uint8_t *msgHash, uint8_t msgHashLen, TLVWriter & writer, uint64_t tag )=0
স্থানীয় নোডের ব্যক্তিগত কী ব্যবহার করে একটি স্বাক্ষর তৈরি করুন।
যখন আহ্বান করা হয়, তখন বাস্তবায়নকে অবশ্যই নোডের ব্যক্তিগত কী ব্যবহার করে প্রদত্ত হ্যাশ মানের একটি স্বাক্ষর গণনা করতে হবে। উত্পন্ন স্বাক্ষর তারপর নির্দিষ্ট ট্যাগ ব্যবহার করে সরবরাহকৃত TLV লেখাতে একটি CASE ECDSAS স্বাক্ষর কাঠামোর আকারে লিখতে হবে।
যে ক্ষেত্রে নোডের প্রাইভেট কী স্থানীয় বাফারে রাখা হয়, সেখানে GenerateAndEncodeWeaveECDSASignature() ইউটিলিটি ফাংশন এই পদ্ধতি বাস্তবায়নের জন্য উপযোগী হতে পারে।
হ্যান্ডেল ভ্যালিডেশন রেজাল্ট
virtual WEAVE_ERROR HandleValidationResult( const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet, WEAVE_ERROR & validRes )=0
সার্টিফিকেট যাচাইয়ের ফলাফল সহ কল করা হয়েছে।
ইমপ্লিমেন্টেশনগুলি এই কলটি পরিদর্শন করতে ব্যবহার করতে পারে, এবং সম্ভবত, পিয়ারের শংসাপত্রের বৈধতার ফলাফল পরিবর্তন করতে পারে৷ বৈধতা সফল হলে, বৈধ রেস 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 আর্গুমেন্টগুলি এমন মানগুলিতে শুরু করা হবে যা শংসাপত্র সেট থেকে পিয়ারের শংসাপত্রের সমাধান করতে ব্যবহৃত হবে৷ যদি পিয়ার তার নিজস্ব শংসাপত্র সরবরাহ করে (একটি শংসাপত্রের রেফারেন্সের পরিবর্তে) তাহলে validCtx আর্গুমেন্টের মধ্যে EntityCert ক্ষেত্রে সেই শংসাপত্রের একটি পয়েন্টার থাকবে।
এই কল চলাকালীন, বাস্তবায়ন নতুন শংসাপত্র যোগ সহ শংসাপত্র সেটের বিষয়বস্তু পরিবর্তন করতে পারে। প্রয়োজনে তারা subjectDN, subjectKeyId বা validCtx আর্গুমেন্টও পরিবর্তন করতে পারে। সবচেয়ে গুরুত্বপূর্ণভাবে, বাস্তবায়নের জন্য শংসাপত্রের ধরন ক্ষেত্রগুলিকে শংসাপত্রের ধরণ ক্ষেত্রগুলিকে সামঞ্জস্য করা উচিত যাতে ফিরে আসার আগে শংসাপত্রের সঠিক চিকিত্সা নিশ্চিত করা যায় এবং পরবর্তী অ্যাক্সেস কন্ট্রোল চেকের সময়।
দ্রষ্টব্য: যদি পিয়ার সম্পূর্ণ শংসাপত্রের পরিবর্তে নিজের জন্য একটি শংসাপত্রের রেফারেন্স সরবরাহ করে, তাহলে বৈধতা প্রসঙ্গে EntityCert ক্ষেত্রে একটি NULL থাকবে। যদি একটি বাস্তবায়ন শংসাপত্রের রেফারেন্স সমর্থন করতে চায়, তাহলে এটিকে অবশ্যই ফিরে আসার আগে সেট করা শংসাপত্রে পিয়ারের বিষয় DN এবং কী আইডির সাথে মিলে যাওয়া একটি শংসাপত্র যোগ করতে হবে।
এই পদ্ধতিটি প্রয়োগ করা ঐচ্ছিক। ডিফল্ট বাস্তবায়ন কিছুই করে না।