nl :: نسج:: مظهر:: حماية:: قضية:: نسج CASEAuth مندوب

هذه فئة مجردة.

#include <src/lib/profiles/security/WeaveCASE.h>

واجهة المجردة التي هي المخولة اتخاذ إجراءات المصادقة أثناء حالة تأسيس جلسة.

ملخص

ميراث

توجيه الفئات الفرعية المعروفة: NL :: :: نسج DeviceManager :: WeaveDeviceManager

الوظائف العامة

BeginValidation (const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual WEAVE_ERROR
يتم الاتصال به في بداية التحقق من صحة الشهادة.
EncodeNodeCertInfo (const BeginSessionContext & msgCtx,TLVWriter & writer)=0
virtual WEAVE_ERROR
ترميز حالة معلومات شهادة للعقدة المحلية.
EncodeNodePayload (const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen)
virtual WEAVE_ERROR
ترميز حمولة تطبيق محددة ليتم تضمينها في حالة رسالة إلى النظير.
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 لل حالة التفاعلات.

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

إذا كانت نتائج التحقق التفصيلية مطلوبة ، فقد يقوم التطبيق بتهيئة الحقلين CertValidationResults و CertValidationLen.

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

EncodeNodeCertInfo

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

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

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

EncodeNodePayload

virtual WEAVE_ERROR EncodeNodePayload(
  const BeginSessionContext & msgCtx,
  uint8_t *payloadBuf,
  uint16_t payloadBufSize,
  uint16_t & payloadLen
)

ترميز حمولة تطبيق محددة ليتم تضمينها في حالة رسالة إلى النظير.

تنفيذ هذه الطريقة اختياري. يرجع التنفيذ الافتراضي حمولة صفرية الطول.

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

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

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

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

معالجة النتيجة

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. إذا رغب أحد التطبيقات في دعم مراجع الشهادة ، فيجب عليه إضافة شهادة تطابق الاسم المميز لموضوع النظير ومعرف المفتاح لمجموعة الشهادة قبل العودة.

تنفيذ هذه الطريقة اختياري. تطبيق الافتراضي لا يفعل شيئا.