keymaster1_device 結構參考
#include < keymaster1.h >
資料欄位 | |
結構體hw_device_t | 常見的 |
uint32_t | 客戶端版本 |
uint32_t | 旗幟 |
空白 * | 情境 |
整數(* | 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) |
整數(* | 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) |
整數(* | 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) |
整數(* | 刪除_密鑰對)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length) |
整數(* | delete_all )(const struct keymaster1_device *dev) |
整數(* | 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, data_lengths **sign_tize_lengths data_length, signal_lengths); |
整數(* | 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_blob_length,const uint8_t *signed_data,const size_tsigned_data_leizetsign,const_length,const,size_tsigned_sizet),const,_t),const,cont_tsign_t), |
keymaster_error_t (* | get_supported_algorithms )(const struct keymaster1_device *dev, keymaster_algorithm_t **演算法,size_t *algorithms_length) |
keymaster_error_t (* | get_supported_block_modes )(const struct keymaster1_device *dev、 keymaster_algorithm_t演算法、 keymaster_ Purpose_t目的、 keymaster_block_mode_t **模式、size_t *modes_length) |
keymaster_error_t (* | get_supported_padding_modes )(const struct keymaster1_device *dev, keymaster_algorithm_t演算法, keymaster_ Purpose_t目的, keymaster_padding_t **模式,size_t *modes_length) |
keymaster_error_t (* | get_supported_digests )(const struct keymaster1_device *dev、 keymaster_algorithm_t演算法、 keymaster_ Purpose_t目的、 keymaster_digest_t **digests、size_t *digests_length) |
keymaster_error_t (* | get_supported_import_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t演算法, keymaster_key_format_t **格式, size_t *formats_length) |
keymaster_error_t (* | get_supported_export_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t演算法, keymaster_key_format_t **格式,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 **特徵) |
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 ** 特徵特徵) |
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、 key_t * |
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_key data_, keyb_keymaster |
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 (* | 開始)(const struct keymaster1_device *dev, keymaster_ Purpose_t目的, const keymaster_key_blob_t *key, const keymaster_key_param_set_t *in_params, keymaster_key_param_set_t *out_params, key *in_params, keymaster_key_param_set_t *out_params, keymaster_param . |
keymaster_error_t (* | 更新)(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle,const keymaster_key_param_set_t *in_params,const keymaster_blob_t *輸入,size_t *input_consumed, keymaster_key_param_set_t *輸入,size_set *input_consumed, keymaster_blo_param_set_ ) |
keymaster_error_t (* | 已完成)(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, master_t * |
keymaster_error_t (* | 中止)(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle) |
詳細說明
Keymaster1 裝置定義
定義位於檔案keymaster1.h第28行。
現場文檔
keymaster_error_t (* abort)(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle) |
中止以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輸出與隨機輸出無法區分。因此,如果任何來源的熵良好,則輸出也會良好。
- 參數
[在] 開發者 密鑰主設備結構。 [在] 數據 要混合的隨機資料。 [在] 資料長度 data
長度。
檔案keymaster1.h第242行的定義。
keymaster_error_t (*開始)(const struct keymaster1_device *dev, keymaster_ Purpose_t目的, const keymaster_key_blob_t *key, const keymaster_key_param_set_t *in_params, keymaster_key_param_set_key_param_set_時候 |
使用指定密鑰開始加密操作。如果一切順利, 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 )。
- 參數
[在] 開發者 密鑰主設備結構。 [在] 目的 操作的目的,KM_PURPOSE_ENCRYPT、KM_PURPOSE_DECRYPT、KM_PURPOSE_SIGN 或 KM_PURPOSE_VERIFY 之一。請注意,對於 AEAD 模式,加密和解密分別意味著簽章和驗證,但應指定為 KM_PURPOSE_ENCRYPT 和 KM_PURPOSE_DECRYPT。 [在] 鑰匙 用於操作的密鑰。 key
必須具有與purpose
相容的用途,並且必須滿足其所有使用要求,否則begin()將傳回適當的錯誤代碼。[在] 輸入參數 操作的附加參數。這通常用於透過 KM_TAG_AUTH_TOKEN 提供身份驗證資料。如果在生成期間提供了 KM_TAG_APPLICATION_ID 或 KM_TAG_APPLICATION_DATA,則必須在此處提供它們,否則操作將失敗並顯示 KM_ERROR_INVALID_KEY_BLOB。對於需要隨機數或 IV 的操作,在使用 KM_TAG_CALLER_NONCE 產生的金鑰上,in_params 可能包含標籤 KM_TAG_NONCE。對於 AEAD 操作,此處指定 KM_TAG_CHUNK_SIZE。 [出去] 輸出參數 輸出參數。用於從操作初始化返回附加數據,特別是從生成 IV 或隨機數的操作返回 IV 或隨機數。呼叫者擁有輸出參數陣列的所有權,並且必須使用keymaster_free_param_set()釋放它。如果不需要輸出參數,out_params 可以設定為 NULL。如果 out_params 為 NULL,且產生了輸出參數,則begin()將傳回 KM_ERROR_OUTPUT_PARAMETER_NULL。 [出去] 操作句柄 新建立的操作句柄必須傳遞給update() 、 finish()或abort() 。如果操作句柄為 NULL,則begin()將傳回 KM_ERROR_OUTPUT_PARAMETER_NULL。
檔案keymaster1.h第451行的定義。
uint32_t 用戶端版本 |
這已被棄用。請在 keymaster_module 初始化中使用新的“module_api_version”和“hal_api_version”欄位。
定義位於檔案keymaster1.h第41行。
結構體hw_device_t公共 |
Keymaster設備的常用方法。這必須是 keymaster_device 的第一個成員,因為該結構的使用者將在已知hw_device_t引用 keymaster_device的上下文中將 hw_device_t 強制轉換為 keymaster_device 指標。
定義位於檔案keymaster1.h第35行。
無效*上下文 |
定義位於檔案keymaster1.h第48行。
int(* delete_all)(const struct keymaster1_device *dev) |
keymaster_error_t (* delete_all_keys)(const struct keymaster1_device *dev) |
刪除硬體金鑰庫中的所有金鑰。當密鑰庫完全重置時使用。呼叫此函數後,將無法使用任何先前產生或匯入的密鑰 blob 進行任何操作。
此函數是可選的,如果未實現,則應設為 NULL。
- 參數
[在] 開發者 密鑰主設備結構。
檔案keymaster1.h第407行的定義。
keymaster_error_t (* delete_key)(const struct keymaster1_device *dev, const keymaster_key_blob_t *key) |
刪除與密鑰 blob 關聯的密鑰或密鑰對。呼叫此函數後,將無法使用該鍵進行任何其他操作。可以應用於來自外部信任根的密鑰(在當前信任根下不可用的密鑰)。
此函數是可選的,如果未實現,則應設為 NULL。
- 參數
[在] 開發者 密鑰主設備結構。 [在] 鑰匙 要刪除的密鑰。
定義位於檔案keymaster1.h的第395行。
int(* delete_keypair)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length) |
匯出公鑰,傳回指定格式的位元組數組。
- 參數
[在] 開發者 密鑰主設備結構。 [在] 導出格式 用於導出密鑰的格式。 [在] 匯出金鑰 導出的關鍵。 [出去] 匯出數據 導出的密鑰材料。呼叫者取得所有權。 [出去] 導出資料長度 export_data
的長度。
定義位於檔案keymaster1.h的第377行。
keymaster_error_t (*已完成)(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__t . |
完成以begin()開始的加密操作並使operation_handle
無效。
- 參數
[在] 開發者 密鑰主設備結構。 [在] 操作句柄 begin()傳回的操作句柄。該句柄將失效。 [在] 參數 操作的附加參數。對於 AEAD 模式,這用於指定 KM_TAG_ADDITIONAL_DATA,但前提是未向update()提供輸入資料。 [在] 簽名 如果begin()呼叫中指定的目的是 KM_PURPOSE_VERIFY,則要驗證的簽章。 [出去] 輸出 輸出數據(如果有)。呼叫者承擔所分配緩衝區的所有權。
如果正在完成的操作是簽章驗證或 AEAD 模式解密且驗證失敗,則finish()將傳回 KM_ERROR_VERIFICATION_FAILED。
定義位於檔案keymaster1.h的第521行。
uint32_t 標誌 |
請參閱keymaster_common.h中為 keymaster0_devices::flags 定義的標誌
定義位於檔案keymaster1.h第46行。
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 **特徵) |
產生密鑰或密鑰對,傳回密鑰 blob 和/或密鑰的描述。
金鑰產生參數定義為 keymaster 標籤/值對,在params
中提供。有關完整列表,請參閱 keymaster_tag_t。產生有用密鑰始終需要的一些值是:
- KM_TAG_演算法;
- KM_TAG_目的;和
- (KM_TAG_USER_SECURE_ID 和 KM_TAG_USER_AUTH_TYPE)或 KM_TAG_NO_AUTH_REQUIRED。
通常應指定 KM_TAG_AUTH_TIMEOUT,除非存在 KM_TAG_NO_AUTH_REQUIRED,否則使用者必須對每次使用進行驗證。
對於需要它們的演算法,必須指定 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
- 參數
[在] 開發者 密鑰主設備結構。 [在] 參數 關鍵生成參數數組。 [在] 參數計數 params
的長度。[出去] 密鑰區塊 傳回產生的密鑰。 key_blob
不能為 NULL。呼叫者假定擁有 key_blob->key_material 所有權且必須 free() 它。[出去] 特徵 如果非 NULL,則傳回已產生的鍵的特徵。如果非 NULL,則呼叫者假定所有權並且必須使用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) |
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, key_key_ |
傳回指定金鑰的特徵,如果 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 永遠不會回傳。
- 參數
[在] 開發者 密鑰主設備結構。 [在] 密鑰區塊 從中檢索特徵的關鍵。 [在] 客戶ID 客戶端 ID 數據,如果沒有關聯則為 NULL。 [在] 應用程式ID 應用程式數據,如果沒有關聯則為 NULL。 [出去] 特徵 關鍵特徵。
定義位於檔案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 **演算法, size_t *algorithms_length) |
獲取支援的演算法。
- 參數
[在] 開發者 密鑰主設備結構。 [出去] 演算法 支援的演算法數組。呼叫者獲得數組的所有權並且必須 free() 它。 [出去] 演算法長度 algorithms
的長度。
檔案keymaster1.h第133行的定義。
keymaster_error_t (* get_supported_block_modes)(const struct keymaster1_device *dev, keymaster_algorithm_t演算法, keymaster_ Purpose_t目的, keymaster_block_mode_t **模式, size_t *modes_length) *modes_length) |
取得指定演算法支援的區塊模式。
- 參數
[在] 開發者 密鑰主設備結構。 [在] 演算法 將傳回支援的模式的演算法。 [出去] 模式 支援的模式數組。呼叫者獲得數組的所有權並且必須 free() 它。 [出去] 模式長度 modes
的長度。
定義位於檔案keymaster1.h的第149行。
keymaster_error_t (* get_supported_digests)(const struct keymaster1_device *dev, keymaster_algorithm_tize , keymaster_ Purpose_t目的, keymaster_digest_t **摘要, size_t *digests_length) |
取得指定演算法支援的摘要。呼叫者承擔所分配數組的所有權。
- 參數
[在] 開發者 密鑰主設備結構。 [在] 演算法 將傳回支援的摘要的演算法。 [出去] 摘要 支援摘要數組。呼叫者獲得數組的所有權並且必須 free() 它。 [出去] 摘要長度 digests
的長度。
檔案keymaster1.h第187行的定義。
keymaster_error_t (* get_supported_export_formats)(const struct keymaster1_device *dev, keymaster_algorithm_t演算法, keymaster_key_format_t **格式, size_t *formats_length) |
取得指定演算法的金鑰支援的金鑰導出格式。呼叫者承擔所分配數組的所有權。
- 參數
[在] 開發者 密鑰主設備結構。 [在] 演算法 將傳回支援的格式的演算法。 [出去] 格式 支援的格式數組。呼叫者獲得數組的所有權並且必須 free() 它。 [出去] 格式長度 formats
的長度。
檔案keymaster1.h第224行的定義。
keymaster_error_t (* get_supported_import_formats)(const struct keymaster1_device *dev, keymaster_algorithm_t演算法, keymaster_key_format_t **格式, size_t *formats_length) |
取得指定演算法的金鑰支援的金鑰導入格式。呼叫者承擔所分配數組的所有權。
- 參數
[在] 開發者 密鑰主設備結構。 [在] 演算法 將傳回支援的格式的演算法。 [出去] 格式 支援的格式數組。呼叫者獲得數組的所有權並且必須 free() 它。 [出去] 格式長度 formats
的長度。
檔案keymaster1.h第206行的定義。
keymaster_error_t (* get_supported_padding_modes)(const struct keymaster1_device *dev, keymaster_algorithm_t演算法, keymaster_ Purpose_t目的, keymaster_padding_t **模式, size_t *modes_length) *modes_length) |
取得指定演算法支援的填充模式。呼叫者承擔所分配數組的所有權。
- 參數
[在] 開發者 密鑰主設備結構。 [在] 演算法 將傳回支援的填充模式的演算法。 [出去] 模式 支援的填充模式數組。呼叫者獲得數組的所有權並且必須 free() 它。 [出去] 模式長度 modes
的長度。
檔案keymaster1.h第168行的定義。
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_form_tmaster *. |
匯入密鑰或密鑰對,傳回密鑰 blob 和/或密鑰的描述。
大多數關鍵導入參數被定義為 keymaster 標籤/值對,在「params」中提供。有關完整列表,請參閱 keymaster_tag_t。導入有用密鑰始終需要的值是:
- KM_TAG_演算法;
- KM_TAG_目的;和
- (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
- 參數
[在] 開發者 密鑰主設備結構。 [在] 參數 定義導入密鑰的參數。 [在] 參數計數 params
中的條目數。[在] 密鑰格式 指定key_data中金鑰資料的格式。 [出去] 密鑰區塊 用於傳回不透明的密鑰塊。必須為非 NULL。呼叫者假定所包含的 key_material 的所有權。 [出去] 特徵 用於傳回導入密鑰的特徵。可能為 NULL,在這種情況下不會傳回任何特徵。如果非 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) |
- 已棄用:
- 導入公鑰和私鑰對。匯入的金鑰將採用 DER 編碼(Java 標準)的 PKCS#8 格式。傳回的金鑰區塊是不透明的,隨後將提供用於簽名和驗證。
傳回:成功時傳回 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, u8_int_length, data_lengths_s data_lengths_pint_s_data_Ms_data_int_s)data_p)data_int_s)data_pun_Ms_data_data_data_data)data_data_2_data_pdata)data_pdata_pdata)data_data_data)data,data_pdata_data_data)data_pdata_data,data_data_data_pdata)data,2_data_pdata)data,pdata_pdata)data,data_pdata)datapM)data_pdata_M)data_data_data_pdata)data,data_pdata.p. |
keymaster_error_t (*更新) ( const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle,const keymaster_key_param_set_t *in_params,const keymaster_blob_t *輸入, size_t * |
向以begin()開始的正在進行的加密操作提供數據,並可能從該操作接收輸出。
如果操作句柄無效, update()將傳回 KM_ERROR_INVALID_OPERATION_HANDLE。
update()可能不會消耗資料緩衝區中提供的所有資料。 update()將傳回 *data_consumed 中消耗的數量。調用者應在後續調用中提供未使用的資料。
- 參數
[在] 開發者 密鑰主設備結構。 [在] 操作句柄 begin()傳回的操作句柄。 [在] 輸入參數 操作的附加參數。對於 AEAD 模式,這用於指定 KM_TAG_ADDITIONAL_DATA。請注意,可以在對update()的多次呼叫中提供附加數據,但僅限於提供輸入資料之前。 [在] 輸入 根據呼叫begin()中建立的參數來處理資料。請注意, update()可能會也可能不會消耗所提供的所有資料。請參閱 input_consumed
。[出去] 輸入消耗 update()消耗的資料量。如果這小於提供的金額,則呼叫者應在後續呼叫update()時提供剩餘部分。 [出去] 輸出參數 輸出參數。用於從操作傳回附加資料 呼叫者取得輸出參數陣列的所有權,並且必須使用keymaster_free_param_set()釋放它。如果不需要輸出參數,out_params 可以設定為 NULL。如果 out_params 為 NULL,且產生了輸出參數,則begin()將傳回 KM_ERROR_OUTPUT_PARAMETER_NULL。 [出去] 輸出 輸出數據(如果有)。呼叫者承擔所分配緩衝區的所有權。輸出不能為 NULL。
請注意, update()可能不提供任何輸出,在這種情況下,output->data_length 將為零,並且output->data 可能為 NULL 或零長度(因此呼叫者應始終 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_blob_length, const uint8_t *signed_data, const size_tsigned_data_lengths constd,_lengths const; |
該結構的文檔是從以下文件產生的: