הפניה ל-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 .
התיעוד של המבנה הזה נוצר מהקובץ הבא:
- hardware/libhardware/include/hardware/ gatekeeper.h