Referência de estrutura keymaster1_device
#include < keymaster1.h >
Campos de dados | |
estrutura hw_device_t | comum |
uint32_t | versão_cliente |
uint32_t | bandeiras |
vazio * | contexto |
interno(* | 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) |
interno(* | 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) |
interno(* | 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) |
interno(* | delete_keypair )(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length) |
interno(* | delete_all )(const estrutura keymaster1_device *dev) |
interno(* | 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) |
interno(* | verificar_dados ) (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 assinado_data_length, const uint8_t *assinatura, const size_t subscription_length) |
keymaster_error_t (* | get_supported_algorithms )(const struct keymaster1_device *dev, keymaster_algorithm_t **algoritmos, size_t *algorithms_length) |
keymaster_error_t (* | get_supported_block_modes )(const struct keymaster1_device *dev, algoritmo keymaster_algorithm_t , propósito keymaster_purpose_t , keymaster_block_mode_t **modos, size_t *modes_length) |
keymaster_error_t (* | get_supported_padding_modes )(const struct keymaster1_device *dev, algoritmo keymaster_algorithm_t , propósito keymaster_purpose_t , keymaster_padding_t **modos, size_t *modes_length) |
keymaster_error_t (* | get_supported_digests )(const struct keymaster1_device *dev, algoritmo keymaster_algorithm_t , keymaster_purpose_t propósito, keymaster_digest_t **digestes, size_t *digests_length) |
keymaster_error_t (* | get_supported_import_formats )(const struct keymaster1_device *dev, algoritmo keymaster_algorithm_t , keymaster_key_format_t **formatos, size_t *formats_length) |
keymaster_error_t (* | get_supported_export_formats )(const struct keymaster1_device *dev, algoritmo keymaster_algorithm_t , keymaster_key_format_t **formatos, size_t *formats_length) |
keymaster_error_t (* | add_rng_entropy )(const struct keymaster1_device *dev, const uint8_t *dados, 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 **características) |
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 **características) |
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 **características) |
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 estrutura keymaster1_device *dev) |
keymaster_error_t (* | começar ) (const struct keymaster1_device *dev, keymaster_purpose_t propósito, 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 (* | atualização ) (const struct keymaster1_device *dev, keymaster_operation_handle_t operação_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 (* | acabamento ) (const struct keymaster1_device *dev, keymaster_operação_handle_t operação_handle, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *assinatura, keymaster_key_param_set_t *out_params, keymaster_blob_t *saída) |
keymaster_error_t (* | abortar )(const struct keymaster1_device *dev, keymaster_operação_handle_t operação_handle) |
Descrição detalhada
Definição do dispositivo Keymaster1
Definição na linha 28 do arquivo keymaster1.h .
Documentação de campo
keymaster_error_t (* abortar)(const struct keymaster1_device *dev, keymaster_operação_handle_t operação_handle) |
Anula uma operação criptográfica iniciada com begin() , liberando todos os recursos internos e invalidando operation_handle
.
Definição na linha 531 do arquivo keymaster1.h .
keymaster_error_t (* add_rng_entropy)(const struct keymaster1_device *dev, const uint8_t *dados, size_t data_length) |
Adiciona entropia ao RNG usado pelo keymaster. É garantido que a entropia adicionada por meio deste método não seja a única fonte de entropia usada, e a função de mistura deve ser segura, no sentido de que se o RNG for semeado (de qualquer fonte) com quaisquer dados que o invasor não possa prever (ou controle), então a saída RNG é indistinguível da aleatória. Assim, se a entropia de qualquer fonte for boa, o resultado será bom.
- Parâmetros
[em] desenvolvedor A estrutura do dispositivo keymaster. [em] dados Dados aleatórios a serem misturados. [em] comprimento_dados Comprimento dos data
.
Definição na linha 242 do arquivo keymaster1.h .
keymaster_error_t (* começar)(const struct keymaster1_device *dev, keymaster_purpose_t propósito, 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) |
Inicia uma operação criptográfica usando a chave especificada. Se tudo estiver bem, begin() retornará KM_ERROR_OK e criará um identificador de operação que deve ser passado para chamadas subsequentes para update() , finish() ou abort() .
É fundamental que cada chamada para Begin() seja emparelhada com uma chamada subsequente para Finish() ou abort() , para permitir que a implementação do keymaster limpe qualquer estado de operação interna. Deixar de fazer isso pode vazar espaço de estado interno ou outros recursos internos e pode eventualmente fazer com que Begin() retorne KM_ERROR_TOO_MANY_OPERATIONS quando ficar sem espaço para operações. Qualquer resultado diferente de KM_ERROR_OK de Begin() , update() ou Finish() aborta implicitamente a operação, caso em que abort() não precisa ser chamado (e retornará KM_ERROR_INVALID_OPERATION_HANDLE se chamado).
- Parâmetros
[em] desenvolvedor A estrutura do dispositivo keymaster. [em] propósito A finalidade da operação, KM_PURPOSE_ENCRYPT, KM_PURPOSE_DECRYPT, KM_PURPOSE_SIGN ou KM_PURPOSE_VERIFY. Observe que para os modos AEAD, a criptografia e a descriptografia implicam assinatura e verificação, respectivamente, mas devem ser especificadas como KM_PURPOSE_ENCRYPT e KM_PURPOSE_DECRYPT. [em] chave A chave a ser usada para a operação. key
deve ter uma finalidade compatível compurpose
e todos os seus requisitos de uso devem ser satisfeitos, ou o start() retornará um código de erro apropriado.[em] in_params Parâmetros adicionais para a operação. Normalmente é usado para fornecer dados de autenticação, com KM_TAG_AUTH_TOKEN. Se KM_TAG_APPLICATION_ID ou KM_TAG_APPLICATION_DATA foram fornecidos durante a geração, eles deverão ser fornecidos aqui ou a operação falhará com KM_ERROR_INVALID_KEY_BLOB. Para operações que exigem um nonce ou IV, em chaves que foram geradas com KM_TAG_CALLER_NONCE, in_params pode conter uma tag KM_TAG_NONCE. Para operações AEAD, KM_TAG_CHUNK_SIZE é especificado aqui. [fora] out_params Parâmetros de saída. Usado para retornar dados adicionais da inicialização da operação, principalmente para retornar o IV ou nonce de operações que geram um IV ou nonce. O chamador assume a propriedade da matriz de parâmetros de saída e deve liberá-la com keymaster_free_param_set() . out_params pode ser definido como NULL se nenhum parâmetro de saída for esperado. Se out_params for NULL e parâmetros de saída forem gerados, Begin() retornará KM_ERROR_OUTPUT_PARAMETER_NULL. [fora] operação_handle O identificador de operação recém-criado que deve ser passado para update() , finish() ou abort() . Se Operation_Handle for NULL, Begin() retornará KM_ERROR_OUTPUT_PARAMETER_NULL.
Definição na linha 451 do arquivo keymaster1.h .
uint32_t cliente_versão |
ISTO ESTÁ DEPRECADO. Use os novos campos "module_api_version" e "hal_api_version" na inicialização do keymaster_module.
Definição na linha 41 do arquivo keymaster1.h .
estrutura hw_device_t comum |
Métodos comuns do dispositivo keymaster. Este deve ser o primeiro membro de keymaster_device, pois os usuários desta estrutura lançarão um ponteiro hw_device_t para keymaster_device em contextos onde é conhecido que hw_device_t faz referência a um keymaster_device.
Definição na linha 35 do arquivo keymaster1.h .
contexto vazio* |
Definição na linha 48 do arquivo keymaster1.h .
int(* delete_all)(const estrutura keymaster1_device *dev) |
- Descontinuada:
- Exclui todas as chaves do armazenamento de chaves de hardware. Usado quando o keystore é completamente redefinido.
Esta função é opcional e deve 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 100 do arquivo keymaster1.h .
keymaster_error_t (* delete_all_keys)(const estrutura keymaster1_device *dev) |
Exclui todas as chaves do armazenamento de chaves de hardware. Usado quando o keystore é completamente redefinido. Depois de chamar esta função, será impossível usar quaisquer blobs de chaves gerados ou importados anteriormente para qualquer operação.
Esta função é opcional e deve ser definida como NULL se não for implementada.
- Parâmetros
[em] desenvolvedor A estrutura do dispositivo keymaster.
Definição na linha 407 do arquivo keymaster1.h .
keymaster_error_t (* delete_key)(const struct keymaster1_device *dev, const keymaster_key_blob_t *key) |
Exclui a chave, ou par de chaves, associada ao blob de chaves. Após chamar esta função será impossível utilizar a chave para quaisquer outras operações. Pode ser aplicado a chaves de raízes de confiança estrangeiras (chaves não utilizáveis na raiz de confiança atual).
Esta função é opcional e deve ser definida como NULL se não for implementada.
- Parâmetros
[em] desenvolvedor A estrutura do dispositivo keymaster. [em] chave A chave a ser excluída.
Definição na linha 395 do arquivo keymaster1.h .
int(* delete_keypair)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length) |
- Descontinuada:
- Exclui o par de chaves associado ao blob de chaves.
Esta função é opcional e deve 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 88 do arquivo keymaster1.h .
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) |
Exporta uma chave pública, retornando uma matriz de bytes no formato especificado.
- Parâmetros
[em] desenvolvedor A estrutura do dispositivo keymaster. [em] formato_exportação O formato a ser usado para exportar a chave. [em] chave_para_exportar A chave para exportar. [fora] exportar dados O material chave exportado. O chamador assume a propriedade. [fora] export_data_length O comprimento de export_data
.
Definição na linha 377 do arquivo keymaster1.h .
keymaster_error_t (* terminar)(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) |
Finaliza uma operação criptográfica iniciada com start() e invalida operation_handle
.
- Parâmetros
[em] desenvolvedor A estrutura do dispositivo keymaster. [em] operação_handle O identificador de operação retornado por Begin() . Este identificador será invalidado. [em] parâmetros Parâmetros adicionais para a operação. Para modos AEAD, isso é usado para especificar KM_TAG_ADDITIONAL_DATA, mas somente se nenhum dado de entrada tiver sido fornecido para update() . [em] assinatura A assinatura a ser verificada se o propósito especificado na chamada Begin() for KM_PURPOSE_VERIFY. [fora] saída Os dados de saída, se houver. O chamador assume a propriedade do buffer alocado.
Se a operação que está sendo concluída for uma verificação de assinatura ou uma descriptografia e verificação no modo AEAD falhar, então finish() retornará KM_ERROR_VERIFICATION_FAILED.
Definição na linha 521 do arquivo keymaster1.h .
sinalizadores uint32_t |
Veja sinalizadores definidos para keymaster0_devices::flags em keymaster_common.h
Definição na linha 46 do arquivo keymaster1.h .
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 **características) |
Gera uma chave, ou par de chaves, retornando um blob de chave e/ou uma descrição da chave.
Os parâmetros de geração de chave são definidos como pares de tag/valor keymaster, fornecidos em params
. Veja keymaster_tag_t para a lista completa. Alguns valores que são sempre necessários para a geração de chaves úteis são:
- KM_TAG_ALGORITMO;
- KM_TAG_PURPOSE; e
- (KM_TAG_USER_SECURE_ID e KM_TAG_USER_AUTH_TYPE) ou KM_TAG_NO_AUTH_REQUIRED.
KM_TAG_AUTH_TIMEOUT geralmente deve ser especificado, a menos que KM_TAG_NO_AUTH_REQUIRED esteja presente, ou o usuário terá que se autenticar para cada uso.
KM_TAG_BLOCK_MODE, KM_TAG_PADDING, KM_TAG_MAC_LENGTH e KM_TAG_DIGEST devem ser especificados para algoritmos que os exigem.
As tags a seguir não podem ser especificadas; seus valores serão fornecidos pela implementação.
- KM_TAG_ORIGIN,
- KM_TAG_ROLLBACK_RESISTANT,
- KM_TAG_CREATION_DATETIME
- Parâmetros
[em] desenvolvedor A estrutura do dispositivo keymaster. [em] parâmetros Matriz de parâmetros de geração de chaves. [em] params_count Comprimento dos params
.[fora] key_blob retorna a chave gerada. key_blob
não deve ser NULO. O chamador assume a propriedade key_blob->key_material e deve free() .[fora] características retorna as características da chave que foi gerada, se não for NULL. Se não for NULL, o chamador assume a propriedade e deve desalocar com keymaster_free_characteristics() . Observe que KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID e KM_TAG_APPLICATION_DATA nunca são retornados.
Definição na linha 282 do arquivo keymaster1.h .
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) |
- Descontinuada:
- Gera uma chave pública e privada. O key-blob retornado é opaco e deve 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 56 do arquivo keymaster1.h .
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 **características) |
Retorna as características da chave especificada ou KM_ERROR_INVALID_KEY_BLOB se key_blob for inválido (as implementações devem validar totalmente a integridade da chave). client_id e app_data devem ser o ID e os dados fornecidos quando a chave foi gerada ou importada, ou vazios se KM_TAG_APPLICATION_ID e/ou KM_TAG_APPLICATION_DATA não foram fornecidos durante a geração. Esses valores não estão incluídos nas características retornadas. O chamador assume a propriedade do objeto de características alocado, que deve ser desalocado com keymaster_free_characteristics() .
Observe que KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID e KM_TAG_APPLICATION_DATA nunca são retornados.
- Parâmetros
[em] desenvolvedor A estrutura do dispositivo keymaster. [em] key_blob A chave para recuperar características de. [em] ID do Cliente Os dados do ID do cliente ou NULL se nenhum estiver associado. [em] ID_do_aplicativo Os dados do aplicativo ou NULL se nenhum estiver associado. [fora] características As principais características.
Definição na linha 309 do arquivo keymaster1.h .
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) |
- Descontinuada:
- Obtém a parte da chave pública de um par de chaves. A chave pública deve estar no formato X.509 (padrão Java) codificado em array de bytes.
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 76 do arquivo keymaster1.h .
keymaster_error_t (* get_supported_algorithms)(const struct keymaster1_device *dev, keymaster_algorithm_t **algoritmos, size_t *algorithms_length) |
Obtém algoritmos suportados.
- Parâmetros
[em] desenvolvedor A estrutura do dispositivo keymaster. [fora] algoritmos Matriz de algoritmos suportados. O chamador assume a propriedade do array e deve free() ele. [fora] comprimento_algoritmos Comprimento dos algorithms
.
Definição na linha 133 do arquivo keymaster1.h .
keymaster_error_t (* get_supported_block_modes)(const struct keymaster1_device *dev, algoritmo keymaster_algorithm_t , propósito keymaster_purpose_t , keymaster_block_mode_t **modos, size_t *modes_length) |
Obtém os modos de bloco com suporte para o algoritmo especificado.
- Parâmetros
[em] desenvolvedor A estrutura do dispositivo keymaster. [em] algoritmo O algoritmo para o qual os modos suportados serão devolvidos. [fora] modos Matriz de modos suportados. O chamador assume a propriedade do array e deve free() ele. [fora] modos_comprimento Duração dos modes
.
Definição na linha 149 do arquivo keymaster1.h .
keymaster_error_t (* get_supported_digests)(const struct keymaster1_device *dev, algoritmo keymaster_algorithm_t , propósito keymaster_purpose_t , keymaster_digest_t **digestes, size_t *digests_length) |
Obtém os resumos com suporte para o algoritmo especificado. O chamador assume a propriedade do array alocado.
- Parâmetros
[em] desenvolvedor A estrutura do dispositivo keymaster. [em] algoritmo O algoritmo para o qual os resumos suportados serão devolvidos. [fora] resumos Matriz de resumos suportados. O chamador assume a propriedade do array e deve free() ele. [fora] comprimento_do resumo Duração dos digests
.
Definição na linha 187 do arquivo keymaster1.h .
keymaster_error_t (* get_supported_export_formats)(const struct keymaster1_device *dev, algoritmo keymaster_algorithm_t , keymaster_key_format_t **formatos, size_t *formats_length) |
Obtém os formatos de exportação de chaves com suporte para chaves do algoritmo especificado. O chamador assume a propriedade do array alocado.
- Parâmetros
[em] desenvolvedor A estrutura do dispositivo keymaster. [em] algoritmo O algoritmo para o qual os formatos suportados serão devolvidos. [fora] formatos Matriz de formatos suportados. O chamador assume a propriedade do array e deve free() ele. [fora] formatos_comprimento Comprimento dos formats
.
Definição na linha 224 do arquivo keymaster1.h .
keymaster_error_t (* get_supported_import_formats)(const struct keymaster1_device *dev, algoritmo keymaster_algorithm_t , keymaster_key_format_t **formatos, size_t *formats_length) |
Obtém os formatos de importação de chaves com suporte para chaves do algoritmo especificado. O chamador assume a propriedade do array alocado.
- Parâmetros
[em] desenvolvedor A estrutura do dispositivo keymaster. [em] algoritmo O algoritmo para o qual os formatos suportados serão devolvidos. [fora] formatos Matriz de formatos suportados. O chamador assume a propriedade do array e deve free() ele. [fora] formatos_comprimento Comprimento dos formats
.
Definição na linha 206 do arquivo keymaster1.h .
keymaster_error_t (* get_supported_padding_modes)(const struct keymaster1_device *dev, algoritmo keymaster_algorithm_t , propósito keymaster_purpose_t , keymaster_padding_t **modos, size_t *modes_length) |
Obtém os modos de preenchimento com suporte para o algoritmo especificado. O chamador assume a propriedade do array alocado.
- Parâmetros
[em] desenvolvedor A estrutura do dispositivo keymaster. [em] algoritmo O algoritmo para o qual os modos de preenchimento suportados serão devolvidos. [fora] modos Matriz de modos de preenchimento suportados. O chamador assume a propriedade do array e deve free() ele. [fora] modos_comprimento Duração dos modes
.
Definição na linha 168 do arquivo keymaster1.h .
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 **características) |
Importa uma chave ou par de chaves, retornando um blob de chave e/ou uma descrição da chave.
A maioria dos parâmetros de importação de chave são definidos como pares de tag/valor keymaster, fornecidos em "parâmetros". Veja keymaster_tag_t para a lista completa. Os valores sempre necessários para importação de chaves úteis são:
- KM_TAG_ALGORITMO;
- KM_TAG_PURPOSE; e
- (KM_TAG_USER_SECURE_ID e KM_TAG_USER_AUTH_TYPE) ou KM_TAG_NO_AUTH_REQUIRED.
KM_TAG_AUTH_TIMEOUT geralmente deve ser especificado. Se não for especificado, o usuário terá que se autenticar para cada uso.
As tags a seguir assumirão valores padrão se não forem especificadas:
- KM_TAG_KEY_SIZE terá como padrão o tamanho da chave fornecida.
- KM_TAG_RSA_PUBLIC_EXPONENT assumirá como padrão o valor da chave fornecida (para chaves RSA)
As tags a seguir não podem ser especificadas; seus valores serão fornecidos pela implementação.
- KM_TAG_ORIGIN,
- KM_TAG_ROLLBACK_RESISTANT,
- KM_TAG_CREATION_DATETIME
- Parâmetros
[em] desenvolvedor A estrutura do dispositivo keymaster. [em] parâmetros Parâmetros que definem a chave importada. [em] params_count O número de entradas em params
.[em] formato_chave especifica o formato dos dados principais em key_data. [fora] key_blob Usado para retornar o blob de chave opaco. Deve ser diferente de NULL. O chamador assume a propriedade do key_material contido. [fora] características Usado para retornar as características da chave importada. Pode ser NULL, caso em que nenhuma característica será retornada. Se não for NULL, o chamador assume a propriedade e deve desalocar com keymaster_free_characteristics() . Observe que KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID e KM_TAG_APPLICATION_DATA nunca são retornados.
Definição na linha 357 do arquivo keymaster1.h .
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) |
- Descontinuada:
- 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 key-blob retornado é opaco e será posteriormente 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 66 do arquivo keymaster1.h .
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) |
- Descontinuada:
- 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 108 do arquivo keymaster1.h .
keymaster_error_t (* atualização)(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) |
Fornece dados e possivelmente recebe resultados de uma operação criptográfica contínua iniciada com begin() .
Se Operation_handle for inválido, update() retornará KM_ERROR_INVALID_OPERATION_HANDLE.
update() pode não consumir todos os dados fornecidos no buffer de dados. update() retornará a quantidade consumida em *data_consumed. O chamador deverá fornecer os dados não consumidos em uma chamada subsequente.
- Parâmetros
[em] desenvolvedor A estrutura do dispositivo keymaster. [em] operação_handle O identificador de operação retornado por Begin() . [em] in_params Parâmetros adicionais para a operação. Para modos AEAD, isso é usado para especificar KM_TAG_ADDITIONAL_DATA. Observe que dados adicionais podem ser fornecidos em múltiplas chamadas para update() , mas somente até que os dados de entrada sejam fornecidos. [em] entrada Dados a serem processados, conforme parâmetros estabelecidos na chamada de begin() . Observe que update() pode ou não consumir todos os dados fornecidos. Consulte input_consumed
.[fora] entrada_consumida Quantidade de dados consumidos por update() . Se for menor que o valor fornecido, o chamador deverá fornecer o restante em uma chamada subsequente para update() . [fora] out_params Parâmetros de saída. Usado para retornar dados adicionais da operação. O chamador assume a propriedade da matriz de parâmetros de saída e deve liberá-la com keymaster_free_param_set() . out_params pode ser definido como NULL se nenhum parâmetro de saída for esperado. Se out_params for NULL e parâmetros de saída forem gerados, Begin() retornará KM_ERROR_OUTPUT_PARAMETER_NULL. [fora] saída Os dados de saída, se houver. O chamador assume a propriedade do buffer alocado. a saída não deve ser NULL.
Observe que update() pode não fornecer nenhuma saída; nesse caso, output->data_length será zero e output->data pode ser NULL ou comprimento zero (portanto, o chamador deve sempre free()).
Definição na linha 495 do arquivo keymaster1.h .
int(* verificar_dados)(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 assinado_data_length, const uint8_t *assinatura, const size_t assinatura_length) |
- Descontinuada:
- Verifica os dados assinados com um blob de chave. Isso pode usar uma chave assimétrica ou uma chave secreta.
Retorna: 0 na verificação bem-sucedida ou um código de erro menor que 0.
Definição na linha 118 do arquivo keymaster1.h .
A documentação desta estrutura foi gerada a partir do seguinte arquivo:
- hardware/libhardware/include/hardware/ keymaster1.h