تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

nl::Weave::الملفات الشخصية::الأمان::الحالة::WeaveCASEAuthتفويض

هذا صف مجرّد.

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

سيتم تخصيص نوع شهادة تلقائي لكل شهادة يتم تحميلها إلى مجموعة الشهادات، وذلك من خلال وظيفة التحميل. ويجب أن تُعدِّل عمليات التنفيذ هذه الأنواع حسب الضرورة لضمان المعالجة الصحيحة للشهادة أثناء التحقق من الصحة، والتعيين الصحيح لبرمجة WeaveAuthMode لتفاعلات CASE.

سيتمّ إعداد سياق التحقّق المقدّم باستخدام مجموعة من معايير التحقّق التلقائية التي قد يتم تغييرها عند اللزوم. ويجب أن يُحدِّد التنفيذ الحقل effectiveTime، أو يُحدَّد علامات التحقق المناسبة لإيقاف التحقُّق من القيمة الدائمة للشهادة.

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

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

EncodeNodeCertInfo

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

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

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

حمولة الترميز

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

تم الاتصال بنهاية التحقُّق من الشهادة.

قد تستخدِم عمليات التنفيذ هذه الاستدعاء بعد اكتمال التحقّق من الاعتماد. تضمن عمليات التنفيذ أن استدعاء Endvalidation() مرة واحدة فقط في كل استدعاء ناجح إلى Startvalidation().

إنشاء عقدة

virtual WEAVE_ERROR GenerateNodeSignature(
  const BeginSessionContext & msgCtx,
  const uint8_t *msgHash,
  uint8_t msgHashLen,
  TLVWriter & writer,
  uint64_t tag
)=0

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

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

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

نتيجة Handlevalidation

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

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

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

إذا تم تنفيذ التنفيذ في الحقلين CertCertationResults وCertCertationLen ضمن بنية validationContext أثناء الاستدعاء StartVerifyation()، ستحتوي هذه الحقول على نتائج التحقّق التفصيلية لكل شهادة في مجموعة الشهادات.

قد تلغي عمليات التنفيذ هذا من خلال ضبط validRes على قيمة خطأ، ما يؤدي إلى تعذّر التحقّق.

وإذا تعذّر التحقّق، ستعكس validRes سبب تعذّر التثبيت. قد تؤدي عمليات التنفيذ إلى إلغاء النتيجة إلى قيمة خطأ مختلفة، ولكن يجب عدم ضبط النتيجة على WEAVE_NO_ERROR.

OnPeerCertsLoaded

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

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

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

وخلال هذا الإجراء، قد تُغيّر عمليات التنفيذ محتوى مجموعة الشهادات، بما في ذلك إضافة شهادات جديدة. ويمكنهم أيضًا تغيير وسيطات subjectDN أو subjectKeyId أو validCtx حسب الضرورة. والأهم من ذلك، يجب أن تعدِّل عمليات التنفيذ حقول نوع الشهادة مع ضبط الشهادة قبل العودة لضمان التعامل مع الشهادات بشكل صحيح أثناء التحقق من الصحة وعمليات التحقق اللاحقة من الوصول.

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

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