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 อย่างถูกต้อง
บริบทการตรวจสอบที่ระบุจะเริ่มต้นด้วยชุดเกณฑ์การตรวจสอบที่เป็นค่าเริ่มต้น ซึ่งอาจมีการปรับเปลี่ยนตามความจำเป็น การติดตั้งใช้งานต้องตั้งค่าช่อง EffectiveTime หรือตั้งค่าแฟล็กการตรวจสอบที่เหมาะสมเพื่อระงับการตรวจสอบอายุการใช้งานของใบรับรอง
หากต้องการผลการตรวจสอบโดยละเอียด การติดตั้งใช้งานอาจเริ่มต้นช่อง CertValidationResults และ CertValidationLen
การติดตั้งใช้งานจะต้องรักษาทรัพยากรที่จัดสรรระหว่าง BeginValidation() จนกว่าจะมีการเรียก EndValidation() ที่เกี่ยวข้อง การติดตั้งใช้งานรับประกันได้ว่าจะมีการเรียกใช้ EndValidation() เพียงครั้งเดียวสำหรับการเรียก BeginValidation() ที่สำเร็จแต่ละครั้ง
EncodeNodeCertInfo
virtual WEAVE_ERROR EncodeNodeCertInfo( const BeginSessionContext & msgCtx, TLVWriter & writer )=0
เข้ารหัสข้อมูลใบรับรอง CASE สำหรับโหนดในระบบ
การติดตั้งใช้งานสามารถใช้การเรียกนี้เพื่อลบล้างการเข้ารหัสเริ่มต้นของโครงสร้าง CertificateInformation ของ CASE สำหรับโหนดในระบบ เมื่อเรียก การติดตั้งใช้งานควรเขียนโครงสร้าง CertificateInformation ที่มีใบรับรองเอนทิตีของโหนดในเครื่องเป็นอย่างน้อย การติดตั้งใช้งานอาจรวมชุดใบรับรองที่เกี่ยวข้องและ/หรือ Trust Anchor ไว้ด้วยหรือไม่ก็ได้
EncodeNodePayload
virtual WEAVE_ERROR EncodeNodePayload( const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen )
เข้ารหัสเพย์โหลดเฉพาะแอปพลิเคชันเพื่อรวมไว้ในข้อความ CASE ไปยังเพียร์
การนำวิธีการนี้ไปใช้เป็นตัวเลือกที่ไม่บังคับ การใช้งานเริ่มต้นจะแสดงผลเปย์โหลดที่มีความยาวเป็น 0
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 เป็นใบรับรอง Trust Anchor
หากการใช้งานได้เริ่มต้นช่อง 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 เรื่องและรหัสคีย์ของแอปเทียบเท่าไปยังใบรับรองที่ตั้งค่าไว้ก่อนแสดงผล
การนำวิธีการนี้ไปใช้เป็นตัวเลือกที่ไม่บังคับ การติดตั้งใช้งานเริ่มต้นจะไม่ดำเนินการใดๆ