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().

تخصص كل شهادة تم تحميلها في مجموعة الشهادات نوع شهادة افتراضي بواسطة دالة التحميل. يجب أن يتم تعديل هذه الأنواع في عمليات التنفيذ حسب الضرورة لضمان التعامل مع الشهادة بشكل صحيح أثناء التحقق من الصحة، وتعيين WeaveAuthMode لتفاعلات CASE.

سيتم إعداد سياق التحقق المقدَّم باستخدام مجموعة من معايير التحقق التلقائية، والتي قد يغيّرها التنفيذ حسب الضرورة. ويجب أن يضبط التنفيذ إما الحقل EffectTime (الوقت الفعّال)، أو علامات التحقق المناسبة لإيقاف التحقق من صحة الشهادة منذ إنشائها.

إذا أردت الحصول على نتائج تحقُّق تفصيلية، قد تؤدي عملية التنفيذ إلى إعداد حقلَي CertValidationResults وCertValidationLen.

يجب أن يتم تنفيذ عمليات التنفيذ للاحتفاظ بأي موارد مخصصة خلال BeginValidation() حتى يتم استدعاء EndValidation() المطابِقة تضمن عمليات التنفيذ أن يتم استدعاء EndValidation() مرة واحدة بالضبط لكل استدعاء ناجح إلى BeginValidation().

EncodeNodeCertInfo

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

ترميز معلومات شهادة CASE للعقدة المحلية.

يمكن أن تستخدم عمليات التنفيذ هذا الاستدعاء لإلغاء الترميز التلقائي لبنية CASE CertificateInfo للعقدة المحلية. عند استدعائها، يجب أن يؤدي التنفيذ إلى كتابة هيكل 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

إنشاء توقيع باستخدام المفتاح الخاص للعقدة المحلية

عند استدعائها، يجب أن تحسب عمليات التنفيذ توقيعًا على قيمة التجزئة المحددة باستخدام المفتاح الخاص للعقدة. يجب بعد ذلك كتابة التوقيع الذي تم إنشاؤه في شكل بنية توقيع 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
)

يتم استدعاءه بعد تحميل شهادات التطبيقات المشابهة.

قد تستخدم عمليات التنفيذ هذا الطلب لإنهاء شهادات الإدخال ومعايير التحقّق التي سيتم استخدامها لإجراء التحقّق من شهادة التطبيقات المشابهة. في وقت الاتصال، سيتم تحميل الشهادات التي وفّرها التطبيق المشابه في مجموعة الشهادات (بما في ذلك شهادتها الخاصة، إن توفّرت). بالإضافة إلى ذلك، سيتم إعداد وسيطات اسم الموضوع ومعرّف الموضوع إلى القيم التي سيتم استخدامها لحل شهادة التطبيقات المشابهة من مجموعة الشهادات. إذا قدّم النظير شهادته الخاصة (بدلاً من مرجع شهادة)، سيحتوي حقل EntityCert ضمن وسيطة validCtx على مؤشر إلى تلك الشهادة.

وأثناء الاستدعاء، قد تؤدي عمليات التنفيذ إلى تعديل محتوى مجموعة الشهادات، بما في ذلك إضافة شهادات جديدة. ويجوز لها أيضًا تغيير وسيطات اسم الموضوع أو معرّف الموضوع أو رقم تعريف صالح Ctx حسب الضرورة. والأهم من ذلك، يجب أن تؤدي عمليات التنفيذ إلى تعديل حقول نوع الشهادة التي تتضمن مجموعة الشهادات قبل العودة لضمان التعامل مع الشهادات بشكل صحيح أثناء إجراء عمليات التحقق وعمليات التحقق اللاحقة من عناصر التحكم في الوصول.

ملاحظة: في حال توفير الزميل مرجع شهادة لنفسه، بدلاً من شهادة كاملة، فإن حقل EntityCert في سياق التحقق سيحتوي على قيمة فارغة (NULL). إذا أرادت عملية التنفيذ إتاحة مراجع الشهادات، يجب أن تضيف شهادة تطابق الاسم المميز لموضوع التطبيقات المشابهة ومعرّف المفتاح إلى مجموعة الشهادات قبل عرضها.

إنّ هذه الطريقة اختيارية. لا يؤدي التنفيذ التلقائي إلى اتّخاذ أي إجراء.