ไม่มี:: สาน:: โปรไฟล์:: ความปลอดภัย:: กรณี:: สานCASEAuthDelegate
นี่คือคลาสนามธรรม#include <src/lib/profiles/security/WeaveCASE.h>
อินเตอร์เฟซที่เป็นนามธรรมที่กระทำการตรวจสอบจะได้รับการแต่งตั้งในช่วง กรณี การจัดตั้งเซสชั่น
สรุป
มรดก
ตรง Subclasses เป็นที่รู้จัก: 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 เข้ารหัส 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 สำหรับ กรณี การโต้ตอบ
บริบทการตรวจสอบที่ให้มาจะเริ่มต้นด้วยชุดเกณฑ์การตรวจสอบที่เป็นค่าเริ่มต้น ซึ่งการใช้งานอาจเปลี่ยนแปลงได้ตามความจำเป็น การใช้งานต้องตั้งค่าฟิลด์ 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 ข้อความถึงเพื่อน
การใช้วิธีนี้เป็นทางเลือก การใช้งานเริ่มต้นจะส่งคืนเพย์โหลดความยาวเป็นศูนย์
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 () ฟังก์ชั่นยูทิลิตี้จะมีประโยชน์สำหรับการใช้วิธีการนี้
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 หัวเรื่องของเพียร์และรหัสคีย์กับชุดใบรับรองก่อนที่จะส่งคืน
การใช้วิธีนี้เป็นทางเลือก การใช้งานเริ่มต้นไม่ทำอะไรเลย