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
קידוד מטען ייעודי (payload) ספציפי לאפליקציה שייכלל בהודעת ה-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 עבור הצומת המקומי.

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

EncodeNodePayload

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

קידוד מטען ייעודי (payload) ספציפי לאפליקציה שייכלל בהודעת ה-CASE לעמית.

השימוש בשיטה הזו הוא אופציונלי. הטמעת ברירת המחדל מחזירה מטען ייעודי (payload) באורך אפס.

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

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

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

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

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