nl:: بافت:: پروفایل ها:: امنیت:: مورد:: 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 پس از بارگیری گواهی های همتا تماس گرفته می شود. |
توابع عمومی
شروع اعتبار
virtual WEAVE_ERROR BeginValidation( const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet )=0
در شروع اعتبار سنجی گواهی فراخوانی شد.
پیاده سازی ها باید شی WeaveCertificateSet ارائه شده را با منابع کافی برای مدیریت اعتبار گواهی آینده مقداردهی کنند. در این زمان Implementations ممکن است گواهی های root یا CA مورد اعتماد را در مجموعه گواهی بارگیری کنند، یا منتظر بمانند تا OnPeerCertsLoaded() فراخوانی شود.
به هر گواهی بارگیری شده در مجموعه گواهی، یک نوع گواهی پیش فرض توسط تابع بارگذاری اختصاص داده می شود. پیادهسازیها باید این انواع را در صورت لزوم تنظیم کنند تا از برخورد صحیح گواهی در طول اعتبارسنجی، و تخصیص صحیح WeaveAuthMode برای تعاملات CASE اطمینان حاصل شود.
زمینه اعتبار سنجی ارائه شده با مجموعهای از معیارهای اعتبارسنجی پیشفرض آغاز میشود که پیادهسازی ممکن است در صورت لزوم تغییر دهد. پیاده سازی باید یا فیلد EffectiveTime را تنظیم کند، یا پرچم های اعتبار سنجی مناسب را برای سرکوب اعتبار سنجی مادام العمر گواهی تنظیم کند.
اگر نتایج دقیق اعتبارسنجی مورد نظر باشد، پیاده سازی ممکن است فیلدهای CertValidationResults و CertValidationLen را مقداردهی اولیه کند.
برای حفظ منابع تخصیص داده شده در طول BeginValidation() تا زمانی که EndValidation() مربوطه فراخوانی شود، پیاده سازی ها مورد نیاز است. پیاده سازی ها تضمین می شوند که EndValidation() دقیقاً یک بار برای هر تماس موفقیت آمیز به BeginValidation() فراخوانی می شود.
EncodeNodeCertInfo
virtual WEAVE_ERROR EncodeNodeCertInfo( const BeginSessionContext & msgCtx, TLVWriter & writer )=0
اطلاعات گواهی CASE را برای گره محلی رمزگذاری کنید.
پیادهسازیها میتوانند از این فراخوانی برای لغو کدگذاری پیشفرض ساختار CASE CertificateInformation برای گره محلی استفاده کنند. هنگام فراخوانی، پیادهسازی باید یک ساختار CertificateInformation بنویسد که حداقل حاوی گواهینامه موجودیت گره محلی باشد. پیاده سازی ممکن است به صورت اختیاری شامل مجموعه ای از گواهی های مرتبط و/یا لنگرهای اعتماد باشد.
EncodeNodePayload
virtual WEAVE_ERROR EncodeNodePayload( const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen )
یک بار ویژه برنامه کاربردی را رمزگذاری کنید تا در پیام CASE برای همتا گنجانده شود.
اجرای این روش اختیاری است. پیاده سازی پیش فرض یک بار با طول صفر را برمی گرداند.
End Validation
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
با نتیجه تایید گواهی فراخوانی می شود.
پیادهسازیها ممکن است از این فراخوان برای بازرسی، و احتمالاً تغییر، نتیجه تأیید اعتبار گواهی همتا استفاده کنند. اگر اعتبارسنجی موفقیت آمیز بود، 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 خواهد بود. اگر پیادهسازی بخواهد از مراجع گواهی پشتیبانی کند، باید گواهی مطابق با DN موضوع و شناسه کلید همتا را به مجموعه گواهی قبل از بازگشت اضافه کند.
اجرای این روش اختیاری است. اجرای پیش فرض هیچ کاری انجام نمی دهد.