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().
سيتم منح كل شهادة يتم تحميلها إلى مجموعة الشهادات نوع شهادة تلقائيًا من خلال دالة التحميل. يجب تعديل هذه الأنواع حسب الحاجة لضمان التعامل الصحيح مع الشهادة أثناء عملية التحقّق، وتحديد WeaveAuthMode بشكل صحيح لتفاعلات CASE.
سيتمّ إعداد سياق التحقّق المقدَّم باستخدام مجموعة من معايير التحقّق التلقائية التي قد يغيّرها التنفيذ حسب الحاجة. يجب أن يضبط التنفيذ حقل EffectiveTime أو يضبط علامات التحقّق المناسبة لإيقاف التحقّق من مدة صلاحية الشهادة.
إذا أردت الحصول على نتائج تحقُّق تفصيلية، قد تؤدي عملية التنفيذ إلى إعداد حقلَي CertValidationResults وCertValidationLen.
يجب أن تحافظ عمليات التنفيذ على أي موارد تم تخصيصها أثناء BeginValidation() إلى أن يتم استدعاء EndValidation() المقابل. تضمن عمليات التنفيذ أن يتم استدعاء الدالة EndValidation() مرة واحدة بالضبط لكل استدعاء ناجح إلى BeginValidation().
EncodeNodeCertInfo
virtual WEAVE_ERROR EncodeNodeCertInfo( const BeginSessionContext & msgCtx, TLVWriter & writer )=0
رمز معلومات شهادة CASE للعقدة المحلية.
يمكن للعمليات استخدام هذا الطلب لإلغاء التشفير التلقائي لبنية CertificateInformation في CASE للعقدة المحلية. عند الاستدعاء، يجب أن يكتب التنفيذ بنية 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
يتمّ استدعاؤه في نهاية عملية التحقّق من الشهادة.
قد تستخدم عمليات التنفيذ هذا الطلب لإجراء عملية تنظيف بعد اكتمال عملية التحقّق من الشهادة. تضمن عمليات التنفيذ أن يتم استدعاء EndValidation() مرة واحدة بالضبط لكل استدعاء ناجح إلى BeginValidation().
GenerateNodeSignature
virtual WEAVE_ERROR GenerateNodeSignature( const BeginSessionContext & msgCtx, const uint8_t *msgHash, uint8_t msgHashLen, TLVWriter & writer, uint64_t tag )=0
أنشئ توقيعًا باستخدام المفتاح الخاص للعقدة المحلية.
عند الاستدعاء، يجب أن تحسب عمليات التنفيذ توقيعًا على قيمة التجزئة المحدّدة باستخدام المفتاح الخاص للعقدة. يجب بعد ذلك كتابة التوقيع الذي تم إنشاؤه في شكل بنية توقيع ECDSA CASE لكتاب TLV المقدَّم باستخدام العلامة المحدّدة.
في الحالات التي يتم فيها الاحتفاظ بالمفتاح الخاص للعقدة في مخزن مؤقت محلي، يمكن أن تكون دالة المرافق GenerateAndEncodeWeaveECDSASignature() مفيدة لتنفيذ هذه الطريقة.
HandleValidationResult
virtual WEAVE_ERROR HandleValidationResult( const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet, WEAVE_ERROR & validRes )=0
يتمّ استدعاؤه مع نتيجة التحقّق من الشهادة.
قد تستخدم عمليات التنفيذ هذه الاستدعاء للتحقق من صحة شهادة التطبيقات المشابهة، وربما تغييرها. إذا نجح التحقق، سيتم ضبط validRes على WEAVE_NO_ERROR. في هذه الحالة، سيحتوي سياق التحقق من الصحة على تفاصيل تتعلق بالنتيجة. على وجه التحديد، سيتم ضبط حقل TrustAnchor على شهادة عنصر ثقة.
إذا بدأ التنفيذ حقلَي CertValidationResults وCertValidationLen ضمن بنية ValidationContext أثناء استدعاء BeginValidation()، ستحتوي هذه الحقول على نتائج التحقّق التفصيلية لكل شهادة في مجموعة الشهادات.
قد تلغي عمليات التنفيذ ذلك من خلال ضبط validRes على قيمة خطأ، ما يؤدي إلى تعذُّر عملية التحقّق.
إذا تعذّرت عملية التحقّق، سيوضّح validRes سبب تعذّرها. قد تلغي عمليات التنفيذ النتيجة لتصبح قيمة خطأ مختلفة، ولكن يجب ألّا يتم ضبط النتيجة على WEAVE_NO_ERROR.
OnPeerCertsLoaded
virtual WEAVE_ERROR OnPeerCertsLoaded( const BeginSessionContext & msgCtx, WeaveDN & subjectDN, CertificateKeyId & subjectKeyId, ValidationContext & validCtx, WeaveCertificateSet & certSet )
يتمّ استدعاؤه بعد تحميل شهادات المثيّر.
قد تستخدم عمليات التنفيذ هذه الدعوة لإنهاء شهادات الإدخال ومعايير التحقّق التي سيتم استخدامها لإجراء التحقّق من شهادة الخادم الشقيق. في وقت الاتصال، سيتم تحميل الشهادات التي يقدّمها الخادم الوكيل إلى مجموعة الشهادات (بما في ذلك شهادته الخاصة، إن توفّرت). بالإضافة إلى ذلك، سيتمّ إعداد وسيطات subjectDN وsubjectKeyId بالقيم التي سيتمّ استخدامها لتحديد شهادة الخادم من مجموعة الشهادات. إذا قدّم الخادم الشقيق شهادته الخاصة (بدلاً من مرجع شهادة)، سيحتوي حقل EntityCert ضمن الوسيطة validCtx على مؤشر إلى تلك الشهادة.
وخلال هذه الفترة، قد تؤدي عمليات التنفيذ إلى تعديل محتوى مجموعة الشهادات، بما في ذلك إضافة شهادات جديدة. ويمكنهم أيضًا تغيير الوسيطات subjectDN أو subjectKeyId أو validCtx حسب الحاجة. الأهم من ذلك، يجب أن تعدّل عمليات التنفيذ حقول نوع الشهادة باستخدام مجموعة الشهادات قبل الإرجاع لضمان التعامل الصحيح مع الشهادات أثناء التحقّق من الصحة وعمليات التحقّق اللاحقة من التحكّم في الوصول.
ملاحظة: في حال قدّم الخادم الشقيق مرجع شهادة له بدلاً من شهادة كاملة، سيحتوي الحقل EntityCert في سياق التحقّق على قيمة NULL. إذا أراد أحد عمليات التنفيذ إتاحة مراجع الشهادة، يجب أن تضيف شهادة تتطابق مع معرّف مفتاح التشفير ورقم تعريف موضوع الشهادة في مجموعة الشهادات قبل عرضها.
إنّ استخدام هذه الطريقة اختياري. لا يؤدي التنفيذ التلقائي إلى أي إجراء.