הפניה ל-Struct של gatekeeper_device

הפניה ל-Struct של gatekeeper_device

#include < gatekeeper.h >

שדות נתונים

hw_device_t   נפוץ
 
int(*  enroll )(const struct gatekeeper_device *dev, uint32_t uid, const uint8_t *current_password_handle, uint32_t current_password_handle_length, const uint8_t *current_password, uint32_t current_password_length, const uint8_t *desired_password, uint32_t desired_password_length, uint8_t **enrolled_password_handle, uint32_t *enrolled_password_handle_length)
 
int(*  verify )(const struct gatekeeper_device *dev, uint32_t uid, uint64_t challenge, const uint8_t *enrolled_password_handle, uint32_t enrolled_password_handle_length, const uint8_t *provided_password, uint32_t provided_password_length, uint8_t **auth_token, uint32_t *auth_token_length, bool *request_reenroll)
 
int(*  delete_user )(const struct gatekeeper_device *dev, uint32_t uid)
 
int(*  delete_all_users )(const struct gatekeeper_device *dev)
 

תיאור מפורט

ההגדרה מופיעה בשורה 41 בקובץ gatekeeper.h .

מסמכי תיעוד של שדה

hw_device_t משותף

שיטות נפוצות של מכשיר שומרת הרשאות הגישה. כמו למעלה, זה חייב להיות המשתמש הראשון בקבוצה keymaster_device.

ההגדרה מופיעה בשורה 46 בקובץ gatekeeper.h .

int(* delete_all_users)(const struct gatekeeper_device *dev)

ההגדרה מופיעה בשורה 173 בקובץ gatekeeper.h .

int(* delete_user)(const struct gatekeeper_device *dev, uint32_t uid)

ההגדרה מופיעה בשורה 159 בקובץ gatekeeper.h .

int(* enroll)(const struct gatekeeper_device *dev, uint32_t uid, const uint8_t *current_password_handle, uint32_t current_password_handle_length, const uint8_t *current_password, uint32_t current_password_length, const uint8_t *desired_password, uint32_t desired_password_length, uint8_t **enrolled_password_handle, uint32_t *enrolled_password_handle_length)

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

אם כבר רשומה סיסמה, צריך לספק אותה ב-current_password_handle, יחד עם הסיסמה הנוכחית ב-current_password, שצריכה לעבור אימות מול current_password_handle.

פרמטרים:

  • dev: הפניה ל- gatekeeper_device שנרכשה באמצעות קריאות ל-gatekeeper_open
  • uid: מזהה המשתמש ב-Android
  • current_password_handle: הכינוי של הסיסמה הקיימת שהמשתמש רוצה להחליף. יכול להיות null אם אין סיסמה רשומה כרגע.
  • current_password_handle_length: האורך בבייטים של המאגר ש-current_password_handle מפנה אליו. הערך חייב להיות 0 אם current_password_handle הוא NULL.
  • current_password: הסיסמה הנוכחית של המשתמש בטקסט פשוט. אם הוא מוצג, חובה לבצע אימות מול current_password_handle.
  • current_password_length: הגודל בבייטים של המאגר ש-current_password מפנה אליו. הערך חייב להיות 0 אם current_password הוא NULL.
  • desired_password: הסיסמה החדשה שהמשתמש רוצה להירשם אליה בטקסט ללא הצפנה. לא יכול להיות NULL.
  • desired_password_length: האורך בבייטים של המאגר ש-desired_password מפנה אליו.
  • enrolled_password_handle: אם הפעולה תתבצע בהצלחה, יוקצה מאגר עם ה-handle החדש של הסיסמה שמתייחס לסיסמה שצוינה ב-desired_password. אפשר להשתמש במאגר הזה בקריאות הבאות כדי להירשם או לאמת. מבצע הקריאה הוא האחראי על ביטול ההקצאה של המאגר הזה באמצעות קריאה ל-delete[].
  • enrolled_password_handle_length: הפונקציה הזו מקציבה מאגר נתונים זמני, ומפנה אליו באמצעות *enrolled_password_handle_length. הפונקציה מחזירה את האורך של המאגר הזה בבייטים.

הפונקציה מחזירה:

  • 0 במקרה של הצלחה
  • קוד שגיאה < 0 במקרה של כשל, או
  • ערך זמן קצוב לתפוגה T > 0 אם לא צריך לנסות שוב לבצע את הקריאה עד שחולפות T אלפיות שנייה.

אם תהיה שגיאה, לא יוקצה ערך למשתנה enrolled_password_handle.

ההגדרה מופיעה בשורה 91 בקובץ gatekeeper.h .

int(* verify)(const struct gatekeeper_device *dev, uint32_t uid, uint64_t challenge, const uint8_t *enrolled_password_handle, uint32_t enrolled_password_handle_length, const uint8_t *provided_password, uint32_t provided_password_length, uint8_t **auth_token, uint32_t *auth_token_length, bool *request_reenroll)

הפונקציה מאמתת שהערך של provided_password תואם לערך של enrolled_password_handle.

הטמעות של המודול הזה עשויות לשמור את התוצאה של הקריאה הזו כדי לאמת את העדכניות של האימות.

אם הפעולה מסתיימת בהצלחה, המערכת כותבת את הכתובת של אסימון האימות לקובץ auth_token, שאפשר להשתמש בו כדי לאמת את אימות הסיסמה בשירותים מהימנים אחרים. לקוחות יכולים להעביר ערך NULL עבור הערך הזה.

פרמטרים:

  • dev: הפניה ל- gatekeeper_device שנרכשה באמצעות קריאות ל-gatekeeper_open
  • uid: מזהה המשתמש ב-Android
  • challenge: אתגר אופציונלי לאימות, או 0. משמש כשמאמת נפרד מבקש אימות באמצעות סיסמה, או לאימות סיסמה בעסקאות.
  • enrolled_password_handle: הכינוי של הסיסמה הרשומה כרגע, שאותו המשתמש רוצה לאמת.
  • enrolled_password_handle_length: האורך בבייטים של המאגר שאליו מפנה enrolled_password_handle
  • provided_password: הסיסמה בטקסט ללא הצפנה שצריך לאמת מול enrolled_password_handle
  • provided_password_length: האורך בבייטים של המאגר ש-provided_password מפנה אליו
  • auth_token: אם הפעולה מסתיימת בהצלחה, מאגר שמכיל את אסימון האימות שמתקבל מהאימות הזה מוקצה למשתנה *auth_token. מבצע הקריאה אחראי על ביטול ההקצאה של הזיכרון הזה באמצעות קריאה ל-delete[].
  • auth_token_length: אם הפעולה תתבצע בהצלחה, האורך בבייט של אסימון האימות שהוקצה ל-*auth_token יוקצה ל-*auth_token_length
  • request_reenroll: בקשה לשכבות העליונות לרשום מחדש את הסיסמה המאומתת עקב שינוי גרסה. לא מוגדרת אם האימות נכשל.

הפונקציה מחזירה:

  • 0 במקרה של הצלחה
  • קוד שגיאה < 0 במקרה של כשל, או
  • ערך זמן קצוב לתפוגה T > 0 אם לא צריך לנסות שוב לבצע את הקריאה עד שחולפות T אלפיות שנייה. אם תופיע שגיאה, לא יוקצה טוקן אימות

ההגדרה מופיעה בשורה 141 בקובץ gatekeeper.h .


התיעוד של המבנה הזה נוצר מהקובץ הבא: