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.

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

إذا كانت نتائج التحقّق من الصحة التفصيلية مطلوبة، قد يؤدي التنفيذ إلى إعداد الحقلَين CertvalidationResults وCertتقيationLen.

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

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 للنظير.

يُعد تطبيق هذه الطريقة اختياريًا. يكون التنفيذ التلقائي يعرض حمولة بطول صفري.

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

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

عند الاستدعاء، يجب أن تحسب عمليات التنفيذ توقيعًا على قيمة التجزئة المحددة باستخدام المفتاح الخاص للعقدة. بعد ذلك، يجب كتابة التوقيع الذي تم إنشاؤه على شكل بنية CASE ECDSASignature إلى كتابة TLV المقدَّمة باستخدام العلامة المحدّدة.

في الحالات التي يتم فيها الاحتفاظ بالمفتاح الخاص للعقدة في مخزن مؤقت محلي، يمكن أن تكون دالة الأداة GenerateAndEncodeWeaveECDSASignature() مفيدة لتنفيذ هذه الطريقة.

HandleValidationResult

virtual WEAVE_ERROR HandleValidationResult(
  const BeginSessionContext & msgCtx,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet,
  WEAVE_ERROR & validRes
)=0

تم استدعاء نتيجة التحقّق من صحة الشهادة.

قد تستخدم عمليات التنفيذ هذا الطلب لفحص نتيجة التحقّق من صحة شهادة الزميل وربما تغييرها. إذا تم التحقق من الصحة بنجاح، فسيتم تعيين trueRes على WEAVE_NO_ERROR. في هذه الحالة، سيحتوي سياق التحقّق على تفاصيل بشأن النتيجة. وعلى وجه الخصوص، سيتم تعيين حقل TrustAnchor على شهادة مراسي الثقة.

إذا تم بدء التنفيذ في حقلَي CertValidationResults وCertتقيationLen داخل بنية 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). وإذا أرادت عملية التنفيذ إتاحة مراجع الشهادات، يجب إضافة شهادة تتطابق مع الاسم المميز لموضوع النظير ومعرّف المفتاح إلى مجموعة الشهادات قبل إرجاعهما.

يُعد تطبيق هذه الطريقة اختياريًا. ويؤدي التنفيذ التلقائي إلى عدم اتّخاذ أي إجراء.