Referência da estrutura keymaster_device
#include <
keymaster.h
>
Campos de dados |
|
struct hw_device_t | comum |
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) |
Descrição detalhada
Os parâmetros que podem ser definidos para uma determinada implementação do keymaster.
Definição na linha 174 do arquivo keymaster.h .
Documentação do campo
uint32_t client_version |
OBSOLETO. Use os novos campos "module_api_version" e "hal_api_version" na inicialização do keymaster_module.
Definição na linha 187 do arquivo keymaster.h .
struct hw_device_t common |
Métodos comuns do dispositivo keymaster. Ele precisa ser o primeiro membro de keymaster_device , já que os usuários dessa estrutura vão transmitir um hw_device_t para keymaster_device em contextos em que se sabe que o hw_device_t faz referência a um keymaster_device .
Definição na linha 181 do arquivo keymaster.h .
void* context |
Definição na linha 194 do arquivo keymaster.h .
int(* delete_all)(const struct keymaster_device *dev) |
Exclui todas as chaves no keystore de hardware. Usado quando o keystore é redefinido completamente.
Essa função é opcional e precisa ser definida como NULL se não for implementada.
Retorna 0 em caso de sucesso ou um código de erro menor que 0.
Definição na linha 249 do arquivo keymaster.h .
int(* delete_keypair)(const struct keymaster_device *dev, const uint8_t *key_blob, const size_t key_blob_length) |
Exclui o par de chaves associado ao blob de chave.
Essa função é opcional e precisa ser definida como NULL se não for implementada.
Retorna 0 em caso de sucesso ou um código de erro menor que 0.
Definição na linha 237 do arquivo keymaster.h .
Flags uint32_t |
Consulte as flags definidas para keymaster_device::flags acima.
Definição na linha 192 do arquivo keymaster.h .
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) |
Gera uma chave pública e privada. O blob de chaves retornado é opaco e precisa ser fornecido para assinatura e verificação.
Retorna: 0 em caso de sucesso ou um código de erro menor que 0.
Definição na linha 202 do arquivo keymaster.h .
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) |
Extrai a parte da chave pública de um par de chaves. A chave pública precisa estar em uma matriz de bytes codificada no formato X.509 (padrão Java).
Retorna: 0 em caso de sucesso ou um código de erro menor que 0. Em caso de erro, x509_data não deve ser alocado.
Definição na linha 225 do arquivo keymaster.h .
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) |
Importa um par de chaves pública e privada. As chaves importadas estarão no formato PKCS#8 com codificação DER (padrão Java). O blob de chaves retornado é opaco e será fornecido posteriormente para assinatura e verificação.
Retorna: 0 em caso de sucesso ou um código de erro menor que 0.
Definição na linha 214 do arquivo keymaster.h .
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) |
Assina dados usando um blob de chave gerado anteriormente. Isso pode usar uma chave assimétrica ou uma chave secreta.
Retorna: 0 em caso de sucesso ou um código de erro menor que 0.
Definição na linha 257 do arquivo keymaster.h .
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) |
Verifica os dados assinados com um blob de chave. Isso pode usar uma chave assimétrica ou uma chave secreta.
Retorna: 0 em caso de verificação bem-sucedida ou um código de erro menor que 0.
Definição na linha 269 do arquivo keymaster.h .
A documentação desse struct foi gerada com base no seguinte arquivo:
- hardware/libhardware/include/hardware/ keymaster.h