מידע על המבנה keymaster_device

מידע על המבנה keymaster_device

#include < keymaster.h >

שדות נתונים

struct hw_device_t   נפוץ
 
uint32_t  client_version
 
uint32_t  דגלים
 
void *  context
 
int(*  generate_keypair )(const struct keymaster_device *dev, const keymaster_keypair_t key_type, const void *key_params, uint8_t **key_blob, size_t *key_blob_length)
 
int(*  import_keypair )(const struct keymaster_device *dev, const uint8_t *key, const size_t key_length, uint8_t **key_blob, size_t *key_blob_length)
 
int(*  get_keypair_public )(const struct keymaster_device *dev, const uint8_t *key_blob, const size_t key_blob_length, uint8_t **x509_data, size_t *x509_data_length)
 
int(*  delete_keypair )(const struct keymaster_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
 
int(*  delete_all )(const struct keymaster_device *dev)
 
int(*  sign_data )(const struct keymaster_device *dev, const void *signing_params, const uint8_t *key_blob, const size_t key_blob_length, const uint8_t *data, const size_t data_length, uint8_t **signed_data, size_t *signed_data_length)
 
int(*  verify_data )(const struct keymaster_device *dev, const void *signing_params, const uint8_t *key_blob, const size_t key_blob_length, const uint8_t *signed_data, const size_t signed_data_length, const uint8_t *signature, const size_t signature_length)
 

תיאור מפורט

הפרמטרים שאפשר להגדיר להטמעה נתונה של Keymaster.

ההגדרה מופיעה בשורה 174 בקובץ keymaster.h .

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

uint32_t client_version

האפשרות הזו הוצאה משימוש. במקום זאת, צריך להשתמש בשדות החדשים module_api_version ו-hal_api_version בהפעלה של keymaster_module.

ההגדרה מופיעה בשורה 187 בקובץ keymaster.h .

struct hw_device_t common

שיטות נפוצות של מכשיר ה-keymaster. הוא חייב להיות המאפיין הראשון של keymaster_device , כי משתמשים במבנה הזה יבצעו העברה (cast) של hw_device_t למצביע keymaster_device בהקשרים שבהם ידוע ש- hw_device_t מפנה ל- keymaster_device .

ההגדרה מופיעה בשורה 181 בקובץ keymaster.h .

void* context

ההגדרה מופיעה בשורה 194 בקובץ keymaster.h .

int(* delete_all)(const struct keymaster_device *dev)

מחיקה של כל המפתחות במאגר המפתחות בחומרה. משמש כשמאגר המפתחות מתאפס לחלוטין.

הפונקציה הזו היא אופציונלית, וצריך להגדיר אותה ל-NULL אם היא לא מיושמת.

הפונקציה מחזירה 0 אם הפעולה בוצעה בהצלחה, או קוד שגיאה שקטן מ-0.

ההגדרה מופיעה בשורה 249 בקובץ keymaster.h .

int(* delete_keypair)(const struct keymaster_device *dev, const uint8_t *key_blob, const size_t key_blob_length)

מחיקה של צמד המפתחות שמשויך ל-blob של המפתח.

הפונקציה הזו היא אופציונלית, וצריך להגדיר אותה ל-NULL אם היא לא מיושמת.

הפונקציה מחזירה 0 אם הפעולה בוצעה בהצלחה, או קוד שגיאה שקטן מ-0.

ההגדרה מופיעה בשורה 237 בקובץ keymaster.h .

דגלים מסוג uint32_t

אפשר לעיין בדגלים שהוגדרו למאפיין keymaster_device::flags שלמעלה.

ההגדרה מופיעה בשורה 192 בקובץ keymaster.h .

int(* generate_keypair)(const struct keymaster_device *dev, const keymaster_keypair_t key_type, const void *key_params, uint8_t **key_blob, size_t *key_blob_length)

יצירת מפתח ציבורי ומפתח פרטי. ה-key-blob המוחזר הוא אטום, וצריך לספק אותו לאחר מכן לצורך חתימה ואימות.

הפונקציה מחזירה: 0 אם הפעולה בוצעה בהצלחה או קוד שגיאה שקטן מ-0.

ההגדרה מופיעה בשורה 202 בקובץ keymaster.h .

int(* get_keypair_public)(const struct keymaster_device *dev, const uint8_t *key_blob, const size_t key_blob_length, uint8_t **x509_data, size_t *x509_data_length)

הפונקציה מקבלת את החלק של המפתח הציבורי בזוג מפתחות. המפתח הציבורי חייב להיות מערך בייטים בקידוד X.509 (תקן Java).

הפונקציה מחזירה: 0 אם הפעולה בוצעה בהצלחה או קוד שגיאה שקטן מ-0. אם מתרחשת שגיאה, לא צריך להקצות את x509_data.

ההגדרה מופיעה בשורה 225 בקובץ keymaster.h .

int(* import_keypair)(const struct keymaster_device *dev, const uint8_t *key, const size_t key_length, uint8_t **key_blob, size_t *key_blob_length)

ייבוא של זוג מפתחות ציבורי ופרטי. המפתחות המיובאים יהיו בפורמט PKCS#8 עם קידוד DER (תקן Java). ה-key-blob המוחזר הוא אטום, והוא יועבר לאחר מכן לצורך חתימה ואימות.

הפונקציה מחזירה: 0 אם הפעולה בוצעה בהצלחה או קוד שגיאה שקטן מ-0.

ההגדרה מופיעה בשורה 214 בקובץ keymaster.h .

int(* sign_data)(const struct keymaster_device *dev, const void *signing_params, const uint8_t *key_blob, const size_t key_blob_length, const uint8_t *data, const size_t data_length, uint8_t **signed_data, size_t *signed_data_length)

חותמת על נתונים באמצעות blob של מפתח שנוצר קודם. אפשר להשתמש במפתח אסימטרי או במפתח סודי.

הפונקציה מחזירה: 0 אם הפעולה בוצעה בהצלחה או קוד שגיאה שקטן מ-0.

ההגדרה מופיעה בשורה 257 בקובץ keymaster.h .

int(* verify_data)(const struct keymaster_device *dev, const void *signing_params, const uint8_t *key_blob, const size_t key_blob_length, const uint8_t *signed_data, const size_t signed_data_length, const uint8_t *signature, const size_t signature_length)

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

הפונקציה מחזירה: 0 אם האימות בוצע בהצלחה או קוד שגיאה שקטן מ-0.

ההגדרה מופיעה בשורה 269 בקובץ keymaster.h .


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