การอ้างอิงโครงสร้าง gatekeeper_device

การอ้างอิงโครงสร้าง gatekeeper_device

#include < gatekeeper.h >

เขตข้อมูล

hw_device_t ทั่วไป
อินท์(* ลงทะเบียน ) (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 ที่ต้องการ_รหัสผ่าน_ความยาว, uint 8_t **enrolled_password_handle, uint32_t *enrolled_password_handle_length)
อินท์(* ตรวจสอบ ) (const struct gatekeeper_device *dev, uint32_t uid, uint64_t ท้าทาย, const uint8_t *enrolled_password_handle, uint32_t ลงทะเบียน_รหัสผ่าน_handle_length, const uint8_t *provided_password, uint32_t ให้_รหัสผ่าน_ความยาว, uint8_t **auth_token, uint32_ t *auth_token_length, bool *request_reenroll)
อินท์(* Delete_user )(const struct gatekeeper_device *dev, uint32_t uid)
อินท์(* ลบ_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(* ลงทะเบียน)(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 ที่ต้องการ_รหัสผ่าน_ความยาว, uint8_t **enrolled_password_handle, uint32_t *enrolled_password_handle_length)

ลงทะเบียนที่ต้องการ_รหัสผ่าน ซึ่งควรได้มาจากพินหรือรหัสผ่านที่ผู้ใช้เลือก โดยมีคีย์ส่วนตัวของปัจจัยการตรวจสอบสิทธิ์ใช้สำหรับการลงทะเบียนข้อมูลปัจจัยการตรวจสอบสิทธิ์เท่านั้น

หากมีการลงทะเบียนรหัสผ่านอยู่แล้ว ควรระบุรหัสผ่านปัจจุบันใน current_password_handle ร่วมกับรหัสผ่านปัจจุบันใน current_password ที่ควรตรวจสอบกับ current_password_handle

พารามิเตอร์:

  • dev: ตัวชี้ไปที่ gatekeeper_device ที่ได้รับผ่านการเรียกไปยัง gatekeeper_open
  • uid: ตัวระบุผู้ใช้ Android
  • current_password_handle: รหัสผ่านที่ลงทะเบียนในปัจจุบันที่ผู้ใช้ต้องการแทนที่ อาจเป็นโมฆะหากไม่มีรหัสผ่านที่ลงทะเบียนในปัจจุบัน
  • 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
  • Wish_password: รหัสผ่านใหม่ที่ผู้ใช้ต้องการลงทะเบียนเป็นข้อความธรรมดา ไม่สามารถเป็นโมฆะได้
  • Wish_password_length: ความยาวเป็นไบต์ของบัฟเฟอร์ที่ชี้ไปที่ Wish_password
  • registered_password_handle: เมื่อสำเร็จ บัฟเฟอร์จะถูกจัดสรรด้วยตัวจัดการรหัสผ่านใหม่ซึ่งอ้างอิงรหัสผ่านที่ให้ไว้ในdesired_password บัฟเฟอร์นี้สามารถใช้กับการโทรครั้งต่อไปเพื่อลงทะเบียนหรือตรวจสอบ ผู้เรียกมีหน้าที่รับผิดชอบในการจัดสรรบัฟเฟอร์นี้ใหม่ผ่านการเรียกเพื่อลบ[]
  • registered_password_handle_length: ตัวชี้ไปที่ความยาวเป็นไบต์ของบัฟเฟอร์ที่จัดสรรโดยฟังก์ชันนี้ และชี้ไปที่ *enrolled_password_handle_length

ผลตอบแทน:

  • 0 ในความสำเร็จ
  • รหัสข้อผิดพลาด < 0 เมื่อเกิดความล้มเหลว หรือ
  • ค่าหมดเวลา T > 0 หากไม่ควรพยายามโทรซ้ำจนกว่าจะผ่านไป T มิลลิวินาที

เมื่อเกิดข้อผิดพลาด registered_password_handle จะไม่ได้รับการจัดสรร

คำจำกัดความที่บรรทัดที่ 91 ของไฟล์ gatekeeper.h

int (* ตรวจสอบ) (const struct gatekeeper_device * dev, uint32_t uid, ความท้าทาย uint64_t, const uint8_t * enrolled_password_handle, uint32_t ลงทะเบียน_รหัสผ่าน_handle_length, const uint8_t * ให้_รหัสผ่าน, uint32_t ให้_รหัสผ่าน_ความยาว, uint8_t **auth_token, uint 32_t *auth_token_length, bool *request_reenroll)

ตรวจสอบให้_รหัสผ่านตรงกับ register_password_handle

การใช้งานโมดูลนี้อาจเก็บผลลัพธ์ของการเรียกนี้ไว้เพื่อยืนยันความใหม่ของการรับรองความถูกต้อง

เมื่อสำเร็จ ให้เขียนที่อยู่ของโทเค็นการยืนยันไปที่ auth_token ซึ่งสามารถใช้เพื่อยืนยันการยืนยันรหัสผ่านไปยังบริการอื่นๆ ที่เชื่อถือได้ ลูกค้าอาจผ่านค่า NULL สำหรับค่านี้

พารามิเตอร์:

  • dev: ตัวชี้ไปที่ gatekeeper_device ที่ได้รับผ่านการเรียกไปยัง gatekeeper_open
  • uid: ตัวระบุผู้ใช้ Android
  • ความท้าทาย: ความท้าทายทางเลือกในการตรวจสอบสิทธิ์หรือ 0 ใช้เมื่อผู้ตรวจสอบสิทธิ์แยกต่างหากร้องขอการตรวจสอบรหัสผ่าน หรือสำหรับการตรวจสอบรหัสผ่านของธุรกรรม
  • registered_password_handle: ตัวจัดการรหัสผ่านที่ลงทะเบียนในปัจจุบันที่ผู้ใช้ต้องการตรวจสอบ
  • registered_password_handle_length: ความยาวเป็นไบต์ของบัฟเฟอร์ที่ชี้โดย registered_password_handle
  • ให้_รหัสผ่าน: รหัสผ่านข้อความธรรมดาที่จะตรวจสอบกับ registered_password_handle
  • Provide_password_length: ความยาวเป็นไบต์ของบัฟเฟอร์ที่ชี้โดยให้_รหัสผ่าน
  • auth_token: เมื่อสำเร็จ บัฟเฟอร์ที่มีโทเค็นการรับรองความถูกต้องอันเป็นผลมาจากการตรวจสอบนี้จะถูกกำหนดให้กับ *auth_token ผู้โทรมีหน้าที่รับผิดชอบในการจัดสรรหน่วยความจำนี้ใหม่ผ่านการโทรเพื่อลบ[]
  • auth_token_length: เมื่อสำเร็จ ความยาวเป็นไบต์ของโทเค็นการตรวจสอบสิทธิ์ที่กำหนดให้กับ *auth_token จะถูกกำหนดให้กับ *auth_token_length
  • request_reenroll: คำขอไปยังเลเยอร์ด้านบนเพื่อลงทะเบียนรหัสผ่านที่ตรวจสอบแล้วอีกครั้งเนื่องจากการเปลี่ยนแปลงเวอร์ชัน ไม่ได้ตั้งค่าหากการยืนยันล้มเหลว

ผลตอบแทน:

  • 0 ในความสำเร็จ
  • รหัสข้อผิดพลาด < 0 เมื่อเกิดความล้มเหลว หรือ
  • ค่าหมดเวลา T > 0 หากไม่ควรพยายามโทรซ้ำจนกว่าจะผ่านไป T มิลลิวินาที เมื่อเกิดข้อผิดพลาด โทเค็นการตรวจสอบสิทธิ์จะไม่ได้รับการจัดสรร

คำจำกัดความที่บรรทัด 141 ของไฟล์ gatekeeper.h


เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้:
  • ฮาร์ดแวร์ / libhardware / รวม / ฮาร์ดแวร์ / gatekeeper.h