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 ซึ่งมีใบรับรองเอนทิตีของโหนดภายในอย่างน้อย 1 รายการ การติดตั้งใช้งานอาจรวมชุดใบรับรองและ/หรือ 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 เรื่องของแอปเทียบเท่าและรหัสคีย์กับชุดใบรับรองก่อนที่จะส่งคืน

คุณจะเลือกใช้วิธีการนี้หรือไม่ก็ได้ การใช้งานเริ่มต้นจะไม่ทําการใดๆ