keymaster0_device 結構體參考資料

keymaster0_device 結構體參考資料

#include < keymaster0.h >

資料欄位

struct hw_device_t   通用
 
uint32_t client_version
 
uint32_t flags
 
void *  context
 
int(*  generate_keypair )(const struct keymaster0_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 keymaster0_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 keymaster0_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 keymaster0_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
 
int(*  delete_all )(const struct keymaster0_device *dev)
 
int(*  sign_data )(const struct keymaster0_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 keymaster0_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)
 

詳細說明

Keymaster0 裝置定義。

定義位於檔案 keymaster0.h 的第 27 行。

欄位說明文件

uint32_t client_version

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

定義位於檔案 keymaster0.h 40 行。

struct hw_device_t common

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

定義位於檔案 keymaster0.h 的 34 行。

void* context

定義位於檔案 keymaster0.h 的 47 行。

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

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

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

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

定義位於檔案 keymaster0.h 的 102 行。

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

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

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

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

定義位於檔案 keymaster0.h 的 90 行。

uint32_t 旗標

請參閱 keymaster_common.h 中為 keymaster0_device::flags 定義的標記。

定義位於檔案 keymaster0.h 45 行。

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

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

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

定義位於檔案 keymaster0.h 的 55 行。

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

定義位於檔案 keymaster0.h 78 行。

int(* import_keypair)(const struct keymaster0_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。

定義位於檔案 keymaster0.h 67 行。

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

定義位於檔案 keymaster0.h 110 行。

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

定義位於檔案 keymaster0.h 的第 122 行。


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