จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

nl::Weave::โปรไฟล์::ความปลอดภัย::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
เรียกใช้หลังจากโหลดใบรับรองการเพียร์แล้ว

ฟังก์ชันสาธารณะ

การตรวจสอบความถูกต้องเริ่มต้น

virtual WEAVE_ERROR BeginValidation(
  const BeginSessionContext & msgCtx,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet
)=0

เรียกใช้เมื่อเริ่มการตรวจสอบใบรับรอง

การใช้งานต้องใช้การเริ่มต้นออบเจ็กต์ WeaveCertificateSet ที่ระบุด้วยทรัพยากรที่เพียงพอในการจัดการกับการตรวจสอบใบรับรองที่จะเกิดขึ้น ในตอนนี้ การใช้งานอาจโหลดใบรับรองรูทหรือใบรับรอง CA ที่เชื่อถือได้เข้าสู่ชุดใบรับรอง หรือรอจนกว่าจะมีการเรียก OnPeerCertsLoaded()

ใบรับรองแต่ละรายการที่โหลดลงในชุดใบรับรองจะกําหนดประเภทใบรับรองเริ่มต้นโดยฟังก์ชันการโหลด การใช้งานควรปรับเปลี่ยนประเภทเหล่านี้เท่าที่จําเป็นเพื่อให้การตรวจสอบใบรับรองเป็นไปอย่างถูกต้องระหว่างการตรวจสอบ และการกําหนด WeaveAuthMode ที่ถูกต้องสําหรับการโต้ตอบของ CASE

บริบทการตรวจสอบเริ่มต้นจะเริ่มต้นด้วยชุดเกณฑ์การตรวจสอบเริ่มต้น ซึ่งการใช้งานอาจเปลี่ยนแปลงไปตามความจําเป็น การใช้งานต้องตั้งค่าช่อง EffectiveTime หรือตั้งค่าแฟล็กตรวจสอบที่เหมาะสมเพื่อระงับการตรวจสอบอายุการใช้งานของใบรับรอง

หากต้องการผลลัพธ์การตรวจสอบโดยละเอียด การติดตั้งใช้งานอาจเริ่มต้นช่อง Cert ValidationResults และ Cert ValidationLen

การใช้งานจะต้องรักษาทรัพยากรที่จัดสรรไว้ระหว่าง Begin Validation() จนกว่าจะมีการเรียกใช้ End Validation() ที่เกี่ยวข้อง การติดตั้งใช้งานจะรับประกันได้ว่าจะมีการเรียก Endvalidation() เพียงครั้งเดียวสําหรับการเรียก Begin Validation() แต่ละครั้ง

เข้ารหัส NodeCertInfo

virtual WEAVE_ERROR EncodeNodeCertInfo(
  const BeginSessionContext & msgCtx,
  TLVWriter & writer
)=0

เข้ารหัสข้อมูลใบรับรอง CASE สําหรับโหนดในเครื่อง

การใช้งานสามารถใช้การเรียกนี้เพื่อลบล้างการเข้ารหัสเริ่มต้นของโครงสร้างใบรับรองข้อมูล CASE สําหรับโหนดในเครื่อง เมื่อเรียกใช้ การใช้งานควรเขียนโครงสร้าง CertificateInformation ที่มีใบรับรองเอนทิตีโหนดอย่างน้อย 1 โหนดในเครื่อง การใช้งานอาจรวมถึงชุดใบรับรองที่เกี่ยวข้องและ/หรือ Trust Anchor

โหลด EncodeNodePayload

virtual WEAVE_ERROR EncodeNodePayload(
  const BeginSessionContext & msgCtx,
  uint8_t *payloadBuf,
  uint16_t payloadBufSize,
  uint16_t & payloadLen
)

เข้ารหัสเพย์โหลดเฉพาะแอปพลิเคชันที่จะรวมไว้ในข้อความ CASE ของแอปเทียบเท่า

คุณจะใช้วิธีการนี้หรือไม่ก็ได้ การใช้งานเริ่มต้นจะแสดงผลเปย์โหลดความยาว 0

สิ้นสุดการตรวจสอบ

virtual void EndValidation(
  const BeginSessionContext & msgCtx,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet
)=0

ถูกเรียกเมื่อสิ้นสุดการตรวจสอบใบรับรอง

การติดตั้งใช้งานอาจใช้การโทรนี้เพื่อดําเนินการล้างข้อมูลหลังจากการตรวจสอบการรับรองเสร็จสิ้น การติดตั้งใช้งานจะรับประกันได้ว่าจะมีการเรียก Endvalidation() เพียงครั้งเดียวสําหรับการเรียก Begin Validation() แต่ละครั้ง

สร้างลายเซ็นโหนด

virtual WEAVE_ERROR GenerateNodeSignature(
  const BeginSessionContext & msgCtx,
  const uint8_t *msgHash,
  uint8_t msgHashLen,
  TLVWriter & writer,
  uint64_t tag
)=0

สร้างลายเซ็นโดยใช้คีย์ส่วนตัวของโหนดในเครื่อง

เมื่อเรียกใช้ การติดตั้งใช้งานต้องคํานวณลายเซ็นในค่าแฮชที่กําหนดโดยใช้คีย์ส่วนตัวของโหนด และควรเขียนลายเซ็นที่สร้างขึ้นในรูปของโครงสร้างลายเซ็น ECDSA สําหรับ CASE ด้วยการเขียนแบบ TLV ที่ให้ไว้โดยใช้แท็กที่ระบุ

ในกรณีที่มีการเก็บคีย์ส่วนตัวของโหนดไว้ในบัฟเฟอร์ในเครื่อง ฟังก์ชันยูทิลิตี GenerateAndEncodeWeaveECDSAลายเซ็น() จะมีประโยชน์ในการติดตั้งใช้งานวิธีการนี้

ผลลัพธ์ของการตรวจสอบการแฮนเดิล

virtual WEAVE_ERROR HandleValidationResult(
  const BeginSessionContext & msgCtx,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet,
  WEAVE_ERROR & validRes
)=0

เรียกใช้พร้อมผลการตรวจสอบใบรับรอง

การใช้งานอาจใช้การเรียกนี้เพื่อตรวจสอบและอาจปรับเปลี่ยนผลของการตรวจสอบใบรับรองของกลุ่มแอปเทียบเท่า หากตรวจสอบสําเร็จ ระบบจะตั้งค่า validRes เป็น WEhave_NO_ERROR ในกรณีนี้ บริบทในการตรวจสอบจะประกอบด้วยรายละเอียดเกี่ยวกับผลลัพธ์ดังกล่าว โดยเฉพาะอย่างยิ่ง ช่อง TrustAnchor จะได้รับการตั้งค่าเป็นใบรับรอง Trust Anchor

หากการติดตั้งมีการเริ่มต้นช่อง Cert ValidationResults และ Cert ValidationLen ภายในโครงสร้าง validationContext ในระหว่างการเรียกใช้ Begin Validation() ช่องเหล่านี้จะมีผลลัพธ์การตรวจสอบโดยละเอียดสําหรับใบรับรองแต่ละรายการในชุดใบรับรอง

การใช้งานอาจลบล้างค่านี้ด้วยการตั้งค่า validRes เป็นค่าข้อผิดพลาด ซึ่งทําให้ตรวจสอบไม่สําเร็จ

หากตรวจสอบไม่สําเร็จ validRes จะแสดงสาเหตุที่ดําเนินการไม่สําเร็จ การนําไปใช้งานอาจลบล้างผลลัพธ์เป็นค่าข้อผิดพลาดอื่น แต่ต้องไม่ตั้งค่าผลลัพธ์เป็น WEhave_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 เรื่องและรหัสของรหัสเดียวกันลงในชุดใบรับรองก่อนที่จะส่งคืน

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