keymaster1_device 結構體參考資料

keymaster1_device 結構體參考資料

#include < keymaster1.h >

資料欄位

struct hw_device_t   通用
 
uint32_t client_version
 
uint32_t flags
 
void *  context
 
int(*  generate_keypair )(const struct keymaster1_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 keymaster1_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 keymaster1_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 keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
 
int(*  delete_all )(const struct keymaster1_device *dev)
 
int(*  sign_data )(const struct keymaster1_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 keymaster1_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_error_t (*  get_supported_algorithms )(const struct keymaster1_device *dev, keymaster_algorithm_t **algorithms, size_t *algorithms_length)
 
keymaster_error_t (*  get_supported_block_modes )(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_block_mode_t **modes, size_t *modes_length)
 
keymaster_error_t (*  get_supported_padding_modes )(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_padding_t **modes, size_t *modes_length)
 
keymaster_error_t (*  get_supported_digests )(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_digest_t **digests, size_t *digests_length)
 
keymaster_error_t (*  get_supported_import_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_key_format_t **formats, size_t *formats_length)
 
keymaster_error_t (*  get_supported_export_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_key_format_t **formats, size_t *formats_length)
 
keymaster_error_t (*  add_rng_entropy )(const struct keymaster1_device *dev, const uint8_t *data, size_t data_length)
 
keymaster_error_t (*  generate_key )(const struct keymaster1_device *dev, const keymaster_key_param_set_t *params, keymaster_key_blob_t *key_blob, keymaster_key_characteristics_t **characteristics)
 
keymaster_error_t (*  get_key_characteristics )(const struct keymaster1_device *dev, const keymaster_key_blob_t *key_blob, const keymaster_blob_t *client_id, const keymaster_blob_t *app_data, keymaster_key_characteristics_t **characteristics)
 
keymaster_error_t (*  import_key )(const struct keymaster1_device *dev, const keymaster_key_param_set_t *params, keymaster_key_format_t key_format, const keymaster_blob_t *key_data, keymaster_key_blob_t *key_blob, keymaster_key_characteristics_t **characteristics)
 
keymaster_error_t (*  export_key )(const struct keymaster1_device *dev, keymaster_key_format_t export_format, const keymaster_key_blob_t *key_to_export, const keymaster_blob_t *client_id, const keymaster_blob_t *app_data, keymaster_blob_t *export_data)
 
keymaster_error_t (*  delete_key )(const struct keymaster1_device *dev, const keymaster_key_blob_t *key)
 
keymaster_error_t (*  delete_all_keys )(const struct keymaster1_device *dev)
 
keymaster_error_t (*  begin )(const struct keymaster1_device *dev, keymaster_purpose_t purpose, const keymaster_key_blob_t *key, const keymaster_key_param_set_t *in_params, keymaster_key_param_set_t *out_params, keymaster_operation_handle_t *operation_handle)
 
keymaster_error_t (*  update )(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *input, size_t *input_consumed, keymaster_key_param_set_t *out_params, keymaster_blob_t *output)
 
keymaster_error_t (*  finish )(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *signature, keymaster_key_param_set_t *out_params, keymaster_blob_t *output)
 
keymaster_error_t (*  abort )(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle)
 

詳細說明

Keymaster1 裝置定義

定義位於檔案 keymaster1.h 的第 28 行。

欄位說明文件

中止以 begin() 開始的加密編譯作業,釋放所有內部資源並使 operation_handle 失效。

定義位於檔案 keymaster1.h 的 531 行。

keymaster_error_t (* add_rng_entropy)(const struct keymaster1_device *dev, const uint8_t *data, size_t data_length)

為 Keymaster 使用的 RNG 新增隨機性。透過這種方法新增的熵值,保證不會是唯一使用的熵值來源,且混合函式必須安全,也就是說,如果 RNG 的種子 (來自任何來源) 是攻擊者無法預測 (或控制) 的任何資料,那麼 RNG 輸出內容就無法與隨機輸出內容區分。因此,如果任何來源的熵值都良好,輸出結果也會良好。

參數
[in] dev 主控裝置結構。
[in] 資料 要混入的隨機資料。
[in] data_length data 的長度。

定義位於檔案 keymaster1.h 242 行。

使用指定的金鑰開始加密編譯作業。如果一切正常, begin() 會傳回 KM_ERROR_OK,並建立作業句柄,必須傳遞至後續對 update() finish() abort() 的呼叫。

請務必在每次呼叫 begin() 時,搭配後續呼叫 finish() abort() ,以便 Keymaster 實作清除任何內部作業狀態。如果未執行此操作,可能會導致內部狀態空間或其他內部資源外洩,並可能最終導致 begin() 在運算空間用盡時傳回 KM_ERROR_TOO_MANY_OPERATIONS。 begin() update() finish() 傳回的結果若不是 KM_ERROR_OK,就會隱含地中止作業,在這種情況下,就不需要呼叫 abort() (如果呼叫,則會傳回 KM_ERROR_INVALID_OPERATION_HANDLE)。

參數
[in] dev 主控裝置結構。
[in] 目的 作業用途,可選值為 KM_PURPOSE_ENCRYPT、KM_PURPOSE_DECRYPT、KM_PURPOSE_SIGN 或 KM_PURPOSE_VERIFY。請注意,對於 AEAD 模式,加密和解密分別代表簽署和驗證,但應指定為 KM_PURPOSE_ENCRYPT 和 KM_PURPOSE_DECRYPT。
[in] 用於該作業的鍵。 key 必須具有與 purpose 相容的用途,且必須符合其所有使用需求,否則 begin() 會傳回適當的錯誤代碼。
[in] in_params 作業的其他參數。這個屬性通常會搭配 KM_TAG_AUTH_TOKEN 使用,用於提供驗證資料。如果在產生期間提供 KM_TAG_APPLICATION_ID 或 KM_TAG_APPLICATION_DATA,則必須在此提供,否則作業會失敗,並顯示 KM_ERROR_INVALID_KEY_BLOB。對於需要 Nonce 或 IV 的作業,如果金鑰是使用 KM_TAG_CALLER_NONCE 產生的,in_params 可能會包含標記 KM_TAG_NONCE。針對 AEAD 作業,這裡會指定 KM_TAG_CHUNK_SIZE。
[out] out_params 輸出參數。用於從作業初始化傳回其他資料,特別是從產生 IV 或 Nonce 的作業中傳回 IV 或 Nonce。呼叫端會取得輸出參數陣列的擁有權,且必須使用 keymaster_free_param_set() 釋出該陣列。如果沒有預期的輸出參數,則可以將 out_params 設為 NULL。如果 out_params 為 NULL,且產生輸出參數, begin() 會傳回 KM_ERROR_OUTPUT_PARAMETER_NULL。
[out] operation_handle 新建立的作業句柄,必須傳遞至 update() finish() abort() 。如果 operation_handle 為空值, begin() 會傳回 KM_ERROR_OUTPUT_PARAMETER_NULL。

定義位於檔案 keymaster1.h 451 行。

uint32_t client_version

已淘汰。請改為在 keymaster_module 初始化中使用新的「module_api_version」和「hal_api_version」欄位。

定義位於檔案 keymaster1.h 41 行。

struct hw_device_t common

主控裝置的常用方法。這個 必須是 keymaster_device 的第一個成員,因為這個結構體的使用者會在已知 hw_device_t 參照 keymaster_device 的情況下,將 hw_device_t 轉換為 keymaster_device 指標。

定義位於檔案 keymaster1.h 35 行。

void* context

定義位於檔案 keymaster1.h 的 48 行。

int(* delete_all)(const struct keymaster1_device *dev)
已淘汰:
會刪除硬體 KeyStore 中的所有金鑰。當 KeyStore 已完全重設時使用。

這個函式為選用,如果未實作,應設為 NULL。

成功時會傳回 0,失敗時會傳回小於 0 的錯誤代碼。

定義位於檔案 keymaster1.h 100 行。

keymaster_error_t (* delete_all_keys)(const struct keymaster1_device *dev)

刪除硬體 KeyStore 中的所有金鑰。當 KeyStore 已完全重設時使用。在呼叫這個函式後,就無法將先前產生或匯入的任何金鑰 Blob 用於任何作業。

這個函式為選用,如果未實作,應設為 NULL。

參數
[in] dev 主控裝置結構。

定義位於檔案 keymaster1.h 407 行。

keymaster_error_t (* delete_key)(const struct keymaster1_device *dev, const keymaster_key_blob_t *key)

刪除與金鑰 blob 相關聯的金鑰或金鑰組。呼叫此函式後,就無法將金鑰用於任何其他作業。可套用至來自外部信任根的金鑰 (在目前信任根下無法使用的金鑰)。

這個函式為選用,如果未實作,應設為 NULL。

參數
[in] dev 主控裝置結構。
[in] 要刪除的鍵。

定義位於檔案 keymaster1.h 的 395 行。

int(* delete_keypair)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
已淘汰:
刪除與金鑰 blob 相關聯的金鑰組。

這個函式為選用,如果未實作,應設為 NULL。

成功時會傳回 0,失敗時會傳回小於 0 的錯誤代碼。

定義位於檔案 keymaster1.h 88 行。

keymaster_error_t (* export_key)(const struct keymaster1_device *dev, keymaster_key_format_t export_format, const keymaster_key_blob_t *key_to_export, const keymaster_blob_t *client_id, const keymaster_blob_t *app_data, keymaster_blob_t *export_data)

匯出公開金鑰,以指定格式傳回位元組陣列。

參數
[in] dev 主控裝置結構。
[in] export_format 用於匯出金鑰的格式。
[in] key_to_export 要匯出的金鑰。
[out] export_data 匯出的金鑰內容。呼叫端會假設擁有權。
[out] export_data_length export_data 的長度。

定義位於檔案 keymaster1.h 377 行。

begin() 開始的加密編譯作業會在此完成,並使 operation_handle 失效。

參數
[in] dev 主控裝置結構。
[in] operation_handle begin() 傳回的作業句柄。這個句柄將失效。
[in] params 作業的其他參數。針對 AEAD 模式,這會用於指定 KM_TAG_ADDITIONAL_DATA,但只有在 update() 未提供任何輸入資料時才會使用。
[in] 簽名 如果 begin() 呼叫中指定的用途為 KM_PURPOSE_VERIFY,則為要驗證的簽章。
[out] 輸出 輸出資料 (如果有的話)。呼叫端會假設已取得已配置緩衝區的擁有權。

如果完成的作業是簽名驗證或 AEAD 模式解密,且驗證失敗,則 finish() 會傳回 KM_ERROR_VERIFICATION_FAILED。

定義位於檔案 keymaster1.h 的 521 行。

uint32_t 旗標

請參閱 keymaster_common.h 中為 keymaster0_devices::flags 定義的旗標。

定義位於檔案 keymaster1.h 46 行。

產生金鑰或金鑰組,並傳回金鑰 blob 和/或金鑰說明。

鍵產生參數會定義為 Keymaster 標記/值組合,並提供在 params 中。如需完整清單,請參閱 keymaster_tag_t。以下是產生實用鍵時一律需要的值:

  • KM_TAG_ALGORITHM;
  • KM_TAG_PURPOSE; 和
  • (KM_TAG_USER_SECURE_ID 和 KM_TAG_USER_AUTH_TYPE) 或 KM_TAG_NO_AUTH_REQUIRED。

除非使用 KM_TAG_NO_AUTH_REQUIRED,否則通常應指定 KM_TAG_AUTH_TIMEOUT,否則使用者每次使用都必須進行驗證。

對於需要這些值的演算法,必須指定 KM_TAG_BLOCK_MODE、KM_TAG_PADDING、KM_TAG_MAC_LENGTH 和 KM_TAG_DIGEST。

下列標記不必指定,其值會由實作提供。

  • KM_TAG_ORIGIN,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
參數
[in] dev 主控裝置結構。
[in] params 金鑰產生參數的陣列。
[in] params_count params 的長度。
[out] key_blob 傳回產生的金鑰。 key_blob 不得為空值。呼叫端會假設擁有權 key_blob->key_material,且必須 free() 該權限。
[out] 特性 傳回產生的鍵的特性 (如果非空值)。如果非空值,則呼叫端會假設擁有權,並必須使用 keymaster_free_characteristics() 釋出。請注意,系統不會傳回 KM_TAG_ROOT_OF_TRUST、KM_TAG_APPLICATION_ID 和 KM_TAG_APPLICATION_DATA。

定義位於檔案 keymaster1.h 的第 282 行。

int(* generate_keypair)(const struct keymaster1_device *dev, const keymaster_keypair_t key_type, const void *key_params, uint8_t **key_blob, size_t *key_blob_length)
已淘汰:
產生公開和私密金鑰。傳回的金鑰 blob 是不可見的,必須在之後提供才能進行簽署和驗證。

傳回值:成功時為 0,錯誤代碼小於 0。

定義位於檔案 keymaster1.h 56 行。

keymaster_error_t (* get_key_characteristics)(const struct keymaster1_device *dev, const keymaster_key_blob_t *key_blob, const keymaster_blob_t *client_id, const keymaster_blob_t *app_data, keymaster_key_characteristics_t **characteristics)

傳回指定金鑰的特性,如果 key_blob 無效,則會傳回 KM_ERROR_INVALID_KEY_BLOB (實作必須完全驗證金鑰的完整性)。client_id 和 app_data 必須是產生或匯入金鑰時提供的 ID 和資料,如果產生時未提供 KM_TAG_APPLICATION_ID 和/或 KM_TAG_APPLICATION_DATA,則會傳回空白。這些值不會包含在傳回的特性中。呼叫端會假設已分配特徵物件擁有權,而該物件必須使用 keymaster_free_characteristics() 取消分配。

請注意,系統不會傳回 KM_TAG_ROOT_OF_TRUST、KM_TAG_APPLICATION_ID 和 KM_TAG_APPLICATION_DATA。

參數
[in] dev 主控裝置結構。
[in] key_blob 要擷取特徵值的鍵。
[in] client_id 用戶端 ID 資料,如果沒有相關聯的資料,則傳回空值。
[in] app_id 應用程式資料,如果沒有關聯則為 NULL。
[out] 特性 主要特徵。

定義位於檔案 keymaster1.h 309 行。

int(* get_keypair_public)(const struct keymaster1_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。

定義位於檔案 keymaster1.h 的 76 行。

keymaster_error_t (* get_supported_algorithms)(const struct keymaster1_device *dev, keymaster_algorithm_t **algorithms, size_t *algorithms_length)

取得支援的演算法。

參數
[in] dev 主控裝置結構。
[out] 演算法 支援的演算法陣列。呼叫端會取得陣列的擁有權,且必須 free() 陣列。
[out] algorithms_length algorithms 的長度。

定義位於檔案 keymaster1.h 133 行。

keymaster_error_t (* get_supported_block_modes)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_block_mode_t **modes, size_t *modes_length)

取得指定演算法支援的封鎖模式。

參數
[in] dev 主控裝置結構。
[in] 演算法 系統會傳回支援模式的演算法。
[out] 模式 支援的模式陣列。呼叫端會取得陣列的擁有權,且必須 free() 陣列。
[out] modes_length modes 的長度。

定義位於檔案 keymaster1.h 149 行。

keymaster_error_t (* get_supported_digests)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_digest_t **digests, size_t *digests_length)

取得指定演算法支援的摘要。呼叫端會假設已取得已配置的陣列擁有權。

參數
[in] dev 主控裝置結構。
[in] 演算法 系統會傳回支援的摘要演算法。
[out] 摘要 支援摘要陣列。呼叫端會取得陣列的擁有權,且必須 free() 陣列。
[out] digests_length digests 的長度。

定義位於檔案 keymaster1.h 187 行。

keymaster_error_t (* get_supported_export_formats)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_key_format_t **formats, size_t *formats_length)

取得指定演算法金鑰支援的金鑰匯出格式。呼叫端會假設已取得已配置的陣列擁有權。

參數
[in] dev 主控裝置結構。
[in] 演算法 系統會傳回支援格式的演算法。
[out] 格式 支援的格式陣列。呼叫端會取得陣列的擁有權,且必須 free() 陣列。
[out] formats_length formats 的長度。

定義位於檔案 keymaster1.h 224 行。

keymaster_error_t (* get_supported_import_formats)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_key_format_t **formats, size_t *formats_length)

取得指定演算法金鑰支援的金鑰匯入格式。呼叫端會假設已取得已配置的陣列擁有權。

參數
[in] dev 主控裝置結構。
[in] 演算法 系統會傳回支援格式的演算法。
[out] 格式 支援的格式陣列。呼叫端會取得陣列的擁有權,且必須 free() 陣列。
[out] formats_length formats 的長度。

定義位於檔案 keymaster1.h 206 行。

keymaster_error_t (* get_supported_padding_modes)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_padding_t **modes, size_t *modes_length)

取得指定演算法支援的填充模式。呼叫端會假設已取得已配置的陣列擁有權。

參數
[in] dev 主控裝置結構。
[in] 演算法 會傳回支援的邊框間距模式所用的演算法。
[out] 模式 支援的邊框模式陣列。呼叫端會取得陣列的擁有權,且必須 free() 陣列。
[out] modes_length modes 的長度。

定義位於檔案 keymaster1.h 的 168 行。

匯入金鑰或金鑰組,並傳回金鑰 blob 和/或金鑰說明。

大部分的關鍵匯入參數都定義為「params」中提供的 Keymaster 標記/值組合。如需完整清單,請參閱 keymaster_tag_t。匯入實用鍵時,必須一律提供的值如下:

  • KM_TAG_ALGORITHM;
  • KM_TAG_PURPOSE; 和
  • (KM_TAG_USER_SECURE_ID 和 KM_TAG_USER_AUTH_TYPE) 或 KM_TAG_NO_AUTH_REQUIRED。

通常應指定 KM_TAG_AUTH_TIMEOUT。如未指定,使用者每次使用都必須進行驗證。

如未指定,下列標記會採用預設值:

  • KM_TAG_KEY_SIZE 預設為提供的金鑰大小。
  • KM_TAG_RSA_PUBLIC_EXPONENT 的預設值為提供的金鑰值 (RSA 金鑰)

下列標記不必指定,其值會由實作提供。

  • KM_TAG_ORIGIN,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
參數
[in] dev 主控裝置結構。
[in] params 定義匯入金鑰的參數。
[in] params_count params 中的項目數量。
[in] key_format 指定 key_data 中的鍵資料格式。
[out] key_blob 用於傳回不透明金鑰 blob。不得為空值。呼叫端會假設所含 key_material 的擁有權。
[out] 特性 用於傳回匯入鍵的特性。可能為 NULL,在這種情況下,系統不會傳回任何特徵。如果非空值,則呼叫端會假設擁有權,並必須使用 keymaster_free_characteristics() 釋出。請注意,系統不會傳回 KM_TAG_ROOT_OF_TRUST、KM_TAG_APPLICATION_ID 和 KM_TAG_APPLICATION_DATA。

定義位於檔案 keymaster1.h 357 行。

int(* import_keypair)(const struct keymaster1_device *dev, const uint8_t *key, const size_t key_length, uint8_t **key_blob, size_t *key_blob_length)
已淘汰:
匯入公開和私密金鑰組。匯入的金鑰會採用 PKCS#8 格式,並使用 DER 編碼 (Java 標準)。傳回的金鑰 blob 是不可見的,並會在之後提供用於簽署和驗證。

傳回值:成功時為 0,錯誤代碼小於 0。

定義位於檔案 keymaster1.h 66 行。

int(* sign_data)(const struct keymaster1_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。

定義位於檔案 keymaster1.h 108 行。

keymaster_error_t (* update)(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *input, size_t *input_consumed, keymaster_key_param_set_t *out_params, keymaster_blob_t *output)

為以 begin() 開始的持續性加密作業提供資料,並可能接收該作業的輸出內容。

如果 operation_handle 無效, update() 會傳回 KM_ERROR_INVALID_OPERATION_HANDLE。

update() 可能不會使用資料緩衝區提供的所有資料。 update() 會傳回 *data_consumed 中消耗的金額。呼叫端應在後續呼叫中提供未使用的資料。

參數
[in] dev 主控裝置結構。
[in] operation_handle begin() 傳回的作業句柄。
[in] in_params 作業的其他參數。針對 AEAD 模式,這會用於指定 KM_TAG_ADDITIONAL_DATA。請注意,您必須先提供輸入資料,才能在多次呼叫 update() 時提供其他資料。
[in] 輸入 根據呼叫 begin() 時建立的參數,所要處理的資料。請注意, update() 可能會或不會使用所有提供的資料。請參閱 input_consumed
[out] input_consumed update() 所耗用的資料量。如果此值小於提供的金額,呼叫端應在後續呼叫 update() 時提供其餘額。
[out] out_params 輸出參數。用於從作業中傳回其他資料。呼叫端會取得輸出參數陣列的擁有權,並必須使用 keymaster_free_param_set() 釋放該陣列。如果沒有預期的輸出參數,則可以將 out_params 設為 NULL。如果 out_params 為 NULL,且產生輸出參數, begin() 會傳回 KM_ERROR_OUTPUT_PARAMETER_NULL。
[out] 輸出 輸出資料 (如果有的話)。呼叫端會假設已配置緩衝區的擁有權。輸出內容不得為空值。

請注意, update() 可能不會提供任何輸出內容,在這種情況下,output->data_length 會為零,而 output->data 可能為空值或零長度 (因此呼叫端應一律應 free() 這項資料)。

定義位於檔案 keymaster1.h 495 行。

int(* verify_data)(const struct keymaster1_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 的錯誤代碼。

定義位於檔案 keymaster1.h 118 行。


這個結構體的說明文件是由下列檔案產生: