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
สร้างลายเซ็นโดยใช้คีย์ส่วนตัวของโหนดในเครื่อง
เมื่อเรียกใช้ การใช้งานจะต้องคำนวณลายเซ็นบนค่าแฮชที่ระบุโดยใช้คีย์ส่วนตัวของโหนด จากนั้นระบบควรเขียนลายเซ็นที่สร้างขึ้นในรูปแบบของโครงสร้าง ECDSASignature 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 เรื่องของแอปเทียบเท่าและรหัสคีย์กับชุดใบรับรองก่อนที่จะส่งคืน
วิธีการนี้ไม่บังคับ การใช้งานเริ่มต้นจะไม่ดำเนินการใดๆ