ไม่มี:: สาน:: โปรไฟล์:: ความปลอดภัย:: กรณี:: สาน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 หัวเรื่องของเพียร์และรหัสคีย์กับชุดใบรับรองก่อนที่จะส่งคืน

การใช้วิธีนี้เป็นทางเลือก การใช้งานเริ่มต้นไม่ทำอะไรเลย