keymaster_device 結構體參考資料

keymaster_device 結構體參考資料

#include < keymaster.h >

資料欄位

struct hw_device_t   通用
 
uint32_t client_version
 
uint32_t flags
 
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 實作設定的參數。

定義位於檔案 keymaster.h 174 行。

欄位說明文件

uint32_t client_version

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

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

struct hw_device_t common

主控裝置的常用方法。這個 必須是 keymaster_device 的首位成員,因為這個結構體的使用者會將 hw_device_t 投放至 keymaster_device 指標,且在已知 hw_device_t 參照 keymaster_device 的情況下,會將其指派給 keymaster_device 指標。

定義位於檔案 keymaster.h 181 行。

void* context

定義位於檔案 keymaster.h 194 行。

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

刪除硬體 KeyStore 中的所有金鑰。當 KeyStore 完全重設時使用。

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

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

定義位於檔案 keymaster.h 249 行。

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

刪除與金鑰 Blob 相關聯的金鑰組。

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

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

定義位於檔案 keymaster.h 的 237 行。

uint32_t 旗標

請參閱上方為 keymaster_device::flags 定義的標記。

定義位於檔案 keymaster.h 192 行。

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)

產生公開和私密金鑰。傳回的金鑰資料塊是不可見的,因此必須在之後提供,才能進行簽署和驗證。

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

定義位於檔案 keymaster.h 的 202 行。

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。

定義位於檔案 keymaster.h 的第 225 行。

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 標準)。傳回的金鑰資料塊是不可見的,之後會提供給簽署和驗證程序使用。

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

定義位於檔案 keymaster.h 214 行。

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。

定義位於檔案 keymaster.h 257 行。

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 的錯誤代碼。

定義位於檔案 keymaster.h 269 行。


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