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 שסופק עם מספיק משאבים לטיפול באימות האישור הקרוב. בשלב הזה, הטמעות יכולות לטעון לאוסף האישורים אישורי Root או אישורי CA מהימנים, או להמתין עד להפעלת OnPeerCertsLoaded()‎.

פונקציית הטעינה תקצה לכל אישור שנטען לקבוצת האישורים סוג אישור ברירת מחדל. בהטמעות צריך לשנות את הסוגים האלה לפי הצורך כדי להבטיח טיפול נכון של האישור במהלך האימות, והקצאה נכונה של WeaveAuthMode לאינטראקציות של CASE.

הקשר האימות שסופק יופעל עם קבוצה של קריטריונים שמוגדרים כברירת מחדל, שאפשר לשנות בהטמעה לפי הצורך. כדי לבטל את האימות של משך החיים של האישור, ההטמעה צריכה להגדיר את השדה EffectiveTime או להגדיר את דגלי האימות המתאימים.

אם רוצים לקבל תוצאות אימות מפורטות, ההטמעה עשויה לאתחל את השדות CertValidationResults ו-CertValidationLen.

ההטמעות נדרשות לשמור על המשאבים שהוקצו במהלך BeginValidation()‎ עד לקריאה של EndValidation()‎ המתאימה. בהטמעות מובטח שהפעלת EndValidation()‎ תתבצע בדיוק פעם אחת לכל קריאה מוצלחת ל-BeginValidation()‎.

EncodeNodeCertInfo

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

קידוד פרטי האישור של CASE עבור הצומת המקומי.

הטמעות יכולות להשתמש בקריאה הזו כדי לשנות את קידוד ברירת המחדל של מבנה פרטי האישור CASE עבור הצומת המקומי. לאחר הקריאה, ההטמעה צריכה לכתוב מבנה 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 של CASE בכתיבה של TLV שסופקה באמצעות התג שצוין.

במקרים שבהם המפתח הפרטי של הצומת שמור במאגר נתונים זמני, פונקציית השירות GenerateAndEncodeWeaveECDSASignature() יכולה להיות שימושית להטמעת השיטה הזו.

HandleValidationResult

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

הקריאה מתבצעת עם תוצאת אימות האישור.

הטמעות עשויות להשתמש בקריאה הזו כדי לבדוק את התוצאה של אימות האישור של אפליקציה להשוואה, ואולי גם לשנות אותה. אם האימות הצליח, הערך של validRes יוגדר כ-WEAVE_NO_ERROR. במקרה כזה, הקשר של האימות יכיל פרטים לגבי התוצאה. באופן ספציפי, השדה TrustAnchor יוגדר לאישור של עוגן האמון.

אם ההטמעה הפעילה את השדות CertValidationResults ו-CertValidationLen במבנה ValidationContext במהלך הקריאה ל-BeginValidation()‎, השדות האלה יכללו תוצאות אימות מפורטות של כל אישור בקבוצת האישורים.

הטמעות עשויות לבטל את ההגדרה הזו על ידי הגדרת ערך שגיאה ב-TRUERes, וכתוצאה מכך האימות ייכשל.

אם האימות נכשל, הערך של 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 של הנושא של הצד השני לפני שמחזירים אותו.

ההטמעה של השיטה הזו היא אופציונלית. הטמעת ברירת המחדל לא עושה כלום.