Referencia de la estructura keymaster1_device

Referencia de la estructura keymaster1_device

#include < keymaster1.h >

Campos de datos

struct hw_device_t   común
 
uint32_t  client_version
 
uint32_t  marcas
 
void *  context
 
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)
 
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)
 
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)
 
int(*  delete_keypair )(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
 
int(*  delete_all )(const struct keymaster1_device *dev)
 
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)
 
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_t signed_data_length, const uint8_t *signature, const size_t signature_length)
 
keymaster_error_t (*  get_supported_algorithms )(const struct keymaster1_device *dev, keymaster_algorithm_t **algorithms, size_t *algorithms_length)
 
keymaster_error_t (*  get_supported_block_modes )(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_block_mode_t **modes, size_t *modes_length)
 
keymaster_error_t (*  get_supported_padding_modes )(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_padding_t **modes, size_t *modes_length)
 
keymaster_error_t (*  get_supported_digests )(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_digest_t **digests, size_t *digests_length)
 
keymaster_error_t (*  get_supported_import_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_key_format_t **formats, size_t *formats_length)
 
keymaster_error_t (*  get_supported_export_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_key_format_t **formats, 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 **characteristics)
 
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 **characteristics)
 
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 **characteristics)
 
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 struct keymaster1_device *dev)
 
keymaster_error_t (*  begin )(const struct keymaster1_device *dev, keymaster_purpose_t purpose, 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 (*  update )(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)
 
keymaster_error_t (*  finish )(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)
 
keymaster_error_t (*  abort )(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle)
 

Descripción detallada

Definición del dispositivo Keymaster1

Definición en la línea 28 del archivo keymaster1.h .

Documentación de campos

Aborta una operación criptográfica iniciada con begin() , libera todos los recursos internos y invalida operation_handle .

Definición en la línea 531 del archivo keymaster1.h .

keymaster_error_t (* add_rng_entropy)(const struct keymaster1_device *dev, const uint8_t *data, size_t data_length)

Agrega entropía al RNG que usa Keymaster. Se garantiza que la entropía agregada a través de este método no sea la única fuente de entropía que se usa, y la función de combinación debe ser segura, en el sentido de que, si se inicializa el generador de números aleatorios (desde cualquier fuente) con datos que el atacante no puede predecir (o controlar), el resultado del generador de números aleatorios no se puede distinguir de un valor aleatorio. Por lo tanto, si la entropía de cualquier fuente es buena, el resultado será bueno.

Parámetros
[in] dev La estructura del dispositivo de Keymaster
[in] datos Datos aleatorios que se mezclarán.
[in] data_length Longitud de data .

Definición en la línea 242 del archivo keymaster1.h .

Inicia una operación criptográfica con la clave especificada. Si todo está bien, begin() mostrará KM_ERROR_OK y creará un identificador de operación que se debe pasar a las llamadas posteriores a update() , finish() o abort() .

Es fundamental que cada llamada a begin() esté vinculada a una llamada posterior a finish() o abort() para permitir que la implementación de Keymaster borre cualquier estado de operación interna. Si no lo haces, es posible que se filtre el espacio de estado interno o algún otro recurso interno, y, con el tiempo, es posible que begin() muestre KM_ERROR_TOO_MANY_OPERATIONS cuando se quede sin espacio para las operaciones. Cualquier resultado que no sea KM_ERROR_OK de begin() , update() o finish() aborta implícitamente la operación, en cuyo caso no es necesario llamar a abort() (y se mostrará KM_ERROR_INVALID_OPERATION_HANDLE si se llama).

Parámetros
[in] dev La estructura del dispositivo de Keymaster
[in] propósito El propósito de la operación, uno de KM_PURPOSE_ENCRYPT, KM_PURPOSE_DECRYPT, KM_PURPOSE_SIGN o KM_PURPOSE_VERIFY. Ten en cuenta que, para los modos AEAD, la encriptación y la desencriptación implican la firma y la verificación, respectivamente, pero deben especificarse como KM_PURPOSE_ENCRYPT y KM_PURPOSE_DECRYPT.
[in] key Es la clave que se usará para la operación. key debe tener un propósito compatible con purpose y se deben satisfacer todos sus requisitos de uso, o bien begin() mostrará un código de error adecuado.
[in] in_params Parámetros adicionales para la operación. Por lo general, se usa para proporcionar datos de autenticación, con KM_TAG_AUTH_TOKEN. Si se proporcionaron KM_TAG_APPLICATION_ID o KM_TAG_APPLICATION_DATA durante la generación, se deben proporcionar aquí, o la operación fallará con KM_ERROR_INVALID_KEY_BLOB. En el caso de las operaciones que requieren un nonce o IV, en las claves que se generaron con KM_TAG_CALLER_NONCE, in_params puede contener una etiqueta KM_TAG_NONCE. Para las operaciones de AEAD, se especifica KM_TAG_CHUNK_SIZE aquí.
[out] out_params Parámetros de salida Se usa para mostrar datos adicionales de la inicialización de la operación, en particular, para mostrar el IV o el nonce de las operaciones que generan un IV o un nonce. El llamador se convierte en el propietario del array de parámetros de salida y debe liberarlo con keymaster_free_param_set() . out_params se puede establecer en NULL si no se esperan parámetros de salida. Si out_params es NULL y se generan parámetros de salida, begin() mostrará KM_ERROR_OUTPUT_PARAMETER_NULL.
[out] operation_handle Es el identificador de operación recién creado que se debe pasar a update() , finish() o abort() . Si operation_handle es nulo, begin() mostrará KM_ERROR_OUTPUT_PARAMETER_NULL.

Definición en la línea 451 del archivo keymaster1.h .

uint32_t client_version

ESTE RECURSO ESTÁ OBSOLETO. En su lugar, usa los nuevos campos "module_api_version" y "hal_api_version" en la inicialización de keymaster_module.

Definición en la línea 41 del archivo keymaster1.h .

struct hw_device_t común

Métodos comunes del dispositivo de Keymaster. Este debe ser el primer miembro de keymaster_device, ya que los usuarios de esta estructura transmitirán un hw_device_t al puntero keymaster_device en contextos en los que se sabe que hw_device_t hace referencia a un keymaster_device.

Definición en la línea 35 del archivo keymaster1.h .

contexto void*

Definición en la línea 48 del archivo keymaster1.h .

int(* delete_all)(const struct keymaster1_device *dev)
Obsoleto:
Borra todas las claves del almacén de claves de hardware. Se usa cuando se restablece por completo el almacén de claves.

Esta función es opcional y debe establecerse en NULL si no se implementa.

Devuelve 0 si se realiza correctamente o un código de error menor que 0.

Definición en la línea 100 del archivo keymaster1.h .

keymaster_error_t (* delete_all_keys)(const struct keymaster1_device *dev)

Borra todas las claves del almacén de claves de hardware. Se usa cuando se restablece por completo el almacén de claves. Después de llamar a esta función, será imposible usar los blobs de claves generados o importados anteriormente para ninguna operación.

Esta función es opcional y debe establecerse en NULL si no se implementa.

Parámetros
[in] dev La estructura del dispositivo de Keymaster

Definición en la línea 407 del archivo keymaster1.h .

keymaster_error_t (* delete_key)(const struct keymaster1_device *dev, const keymaster_key_blob_t *key)

Borra la clave o el par de claves asociado con el BLOB de claves. Después de llamar a esta función, será imposible usar la clave para ninguna otra operación. Se puede aplicar a claves de raíces de confianza externas (claves que no se pueden usar en la raíz de confianza actual).

Esta función es opcional y debe establecerse en NULL si no se implementa.

Parámetros
[in] dev La estructura del dispositivo de Keymaster
[in] key La clave que se borrará.

Definición en la línea 395 del archivo keymaster1.h .

int(* delete_keypair)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
Obsoleto:
Borra el par de claves asociado con el blob de claves.

Esta función es opcional y debe establecerse en NULL si no se implementa.

Devuelve 0 si se realiza correctamente o un código de error menor que 0.

Definición en la línea 88 del archivo 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 una clave pública y muestra un array de bytes en el formato especificado.

Parámetros
[in] dev La estructura del dispositivo de Keymaster
[in] export_format Es el formato que se usará para exportar la clave.
[in] key_to_export La clave que se exportará.
[out] export_data El material de clave exportado El llamador asume la propiedad.
[out] export_data_length Es la longitud de export_data .

Definición en la línea 377 del archivo keymaster1.h .

Finaliza una operación criptográfica iniciada con begin() y invalida operation_handle .

Parámetros
[in] dev La estructura del dispositivo de Keymaster
[in] operation_handle El identificador de operación que muestra begin() Este identificador dejará de ser válido.
[in] params Parámetros adicionales para la operación. En el caso de los modos AEAD, se usa para especificar KM_TAG_ADDITIONAL_DATA, pero solo si no se proporcionaron datos de entrada a update() .
[in] firma Es la firma que se verificará si el propósito especificado en la llamada a begin() era KM_PURPOSE_VERIFY.
[out] output Los datos de salida, si corresponde El llamador asume la propiedad del búfer asignado.

Si la operación que se está finalizando es una verificación de firma o una desencriptación en modo AEAD, y la verificación falla, finish() mostrará KM_ERROR_VERIFICATION_FAILED.

Definición en la línea 521 del archivo keymaster1.h .

Marcas uint32_t

Consulta las marcas definidas para keymaster0_devices::flags en keymaster_common.h .

Definición en la línea 46 del archivo keymaster1.h .

Genera una clave o un par de claves, y muestra un BLOB de clave o una descripción de la clave.

Los parámetros de generación de claves se definen como pares de etiquetas o valores de Keymaster, que se proporcionan en params . Consulta keymaster_tag_t para obtener la lista completa. Estos son algunos valores que siempre se requieren para generar claves útiles:

  • KM_TAG_ALGORITHM;
  • KM_TAG_PURPOSE;
  • (KM_TAG_USER_SECURE_ID y KM_TAG_USER_AUTH_TYPE) o KM_TAG_NO_AUTH_REQUIRED.

Por lo general, se debe especificar KM_TAG_AUTH_TIMEOUT, a menos que esté presente KM_TAG_NO_AUTH_REQUIRED, o el usuario tendrá que autenticarse cada vez que lo use.

Se deben especificar KM_TAG_BLOCK_MODE, KM_TAG_PADDING, KM_TAG_MAC_LENGTH y KM_TAG_DIGEST para los algoritmos que los requieran.

Es posible que no se especifiquen las siguientes etiquetas; la implementación proporcionará sus valores.

  • KM_TAG_ORIGIN,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
Parámetros
[in] dev La estructura del dispositivo de Keymaster
[in] params Es un array de parámetros de generación de claves.
[in] params_count Longitud de params .
[out] key_blob muestra la clave generada. key_blob no debe ser NULL. El llamador asume la propiedad de key_blob->key_material y debe liberarlo.
[out] características Muestra las características de la clave que se generó, si no es NULO. Si no es NULL, el llamador asume la propiedad y debe reasignar con keymaster_free_characteristics() . Ten en cuenta que nunca se devuelven KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID ni KM_TAG_APPLICATION_DATA.

Definición en la línea 282 del archivo 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)
Obsoleto:
Genera una clave pública y privada. El blob de claves que se muestra es opaco y se debe proporcionar posteriormente para la firma y la verificación.

Devuelve 0 si se realiza correctamente o un código de error inferior a 0.

Definición en la línea 56 del archivo 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 **characteristics)

Devuelve las características de la clave especificada o KM_ERROR_INVALID_KEY_BLOB si el key_blob no es válido (las implementaciones deben validar por completo la integridad de la clave). client_id y app_data deben ser el ID y los datos proporcionados cuando se generó o importó la clave, o bien deben estar vacíos si no se proporcionaron KM_TAG_APPLICATION_ID o KM_TAG_APPLICATION_DATA durante la generación. Esos valores no se incluyen en las características que se muestran. El llamador asume la propiedad del objeto de características asignado, que se debe desasignar con keymaster_free_characteristics() .

Ten en cuenta que nunca se devuelven KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID ni KM_TAG_APPLICATION_DATA.

Parámetros
[in] dev La estructura del dispositivo de Keymaster
[in] key_blob Es la clave de la que se recuperan las características.
[in] client_id Los datos del ID de cliente o NULL si no hay ninguno asociado.
[in] app_id Los datos de la app o NULL si no hay ninguno asociado.
[out] características Las características clave.

Definición en la línea 309 del archivo 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)
Obsoleto:
Obtiene la parte de clave pública de un par de claves. La clave pública debe estar en un array de bytes codificado en formato X.509 (estándar de Java).

Devuelve 0 si se realiza correctamente o un código de error inferior a 0. En caso de error, no se debe asignar x509_data.

Definición en la línea 76 del archivo keymaster1.h .

keymaster_error_t (* get_supported_algorithms)(const struct keymaster1_device *dev, keymaster_algorithm_t **algorithms, size_t *algorithms_length)

Obtiene los algoritmos compatibles.

Parámetros
[in] dev La estructura del dispositivo de Keymaster
[out] algoritmos Se admite un array de algoritmos. El llamador se convierte en el propietario del array y debe liberarlo.
[out] algorithms_length Longitud de algorithms .

Definición en la línea 133 del archivo keymaster1.h .

keymaster_error_t (* get_supported_block_modes)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_block_mode_t **modes, size_t *modes_length)

Obtiene los modos de bloqueo admitidos para el algoritmo especificado.

Parámetros
[in] dev La estructura del dispositivo de Keymaster
[in] algoritmo Es el algoritmo para el que se mostrarán los modos compatibles.
[out] modos Array de modos admitidos El llamador se convierte en el propietario del array y debe liberarlo.
[out] modes_length Longitud de modes .

Definición en la línea 149 del archivo keymaster1.h .

keymaster_error_t (* get_supported_digests)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_digest_t **digests, size_t *digests_length)

Obtiene los resúmenes compatibles con el algoritmo especificado. El llamador asume la propiedad del array asignado.

Parámetros
[in] dev La estructura del dispositivo de Keymaster
[in] algoritmo Es el algoritmo para el que se mostrarán los resúmenes compatibles.
[out] resúmenes Se admite un array de resúmenes. El llamador se convierte en el propietario del array y debe liberarlo.
[out] digests_length Longitud de digests .

Definición en la línea 187 del archivo keymaster1.h .

keymaster_error_t (* get_supported_export_formats)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_key_format_t **formats, size_t *formats_length)

Obtiene los formatos de exportación de claves compatibles para las claves del algoritmo especificado. El llamador asume la propiedad del array asignado.

Parámetros
[in] dev La estructura del dispositivo de Keymaster
[in] algoritmo Es el algoritmo para el que se mostrarán los formatos compatibles.
[out] formatos Es un array de formatos admitidos. El llamador se convierte en el propietario del array y debe liberarlo.
[out] formats_length Longitud de formats .

Definición en la línea 224 del archivo keymaster1.h .

keymaster_error_t (* get_supported_import_formats)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_key_format_t **formats, size_t *formats_length)

Obtiene los formatos de importación de claves admitidos para las claves del algoritmo especificado. El llamador asume la propiedad del array asignado.

Parámetros
[in] dev La estructura del dispositivo de Keymaster
[in] algoritmo Es el algoritmo para el que se mostrarán los formatos compatibles.
[out] formatos Es un array de formatos admitidos. El llamador se convierte en el propietario del array y debe liberarlo.
[out] formats_length Longitud de formats .

Definición en la línea 206 del archivo keymaster1.h .

keymaster_error_t (* get_supported_padding_modes)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_padding_t **modes, size_t *modes_length)

Obtiene los modos de padding admitidos para el algoritmo especificado. El llamador asume la propiedad del array asignado.

Parámetros
[in] dev La estructura del dispositivo de Keymaster
[in] algoritmo Es el algoritmo para el que se mostrarán los modos de padding compatibles.
[out] modos Se admite un array de modos de padding. El llamador se convierte en el propietario del array y debe liberarlo.
[out] modes_length Longitud de modes .

Definición en la línea 168 del archivo keymaster1.h .

Importa una clave o un par de claves y muestra un BLOB de clave o una descripción de la clave.

La mayoría de los parámetros de importación de claves se definen como pares de etiqueta/valor de Keymaster, que se proporcionan en "params". Consulta keymaster_tag_t para obtener la lista completa. Los valores que siempre se requieren para importar claves útiles son los siguientes:

  • KM_TAG_ALGORITHM;
  • KM_TAG_PURPOSE;
  • (KM_TAG_USER_SECURE_ID y KM_TAG_USER_AUTH_TYPE) o KM_TAG_NO_AUTH_REQUIRED.

Por lo general, se debe especificar KM_TAG_AUTH_TIMEOUT. Si no se especifica, el usuario deberá autenticarse cada vez que lo use.

Las siguientes etiquetas tendrán valores predeterminados si no se especifican:

  • KM_TAG_KEY_SIZE tendrá de forma predeterminada el tamaño de la clave proporcionada.
  • KM_TAG_RSA_PUBLIC_EXPONENT usará de forma predeterminada el valor de la clave proporcionada (para claves RSA).

Es posible que no se especifiquen las siguientes etiquetas; la implementación proporcionará sus valores.

  • KM_TAG_ORIGIN,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
Parámetros
[in] dev La estructura del dispositivo de Keymaster
[in] params Son los parámetros que definen la clave importada.
[in] params_count Es la cantidad de entradas en params .
[in] key_format Especifica el formato de los datos de clave en key_data.
[out] key_blob Se usa para mostrar el blob de clave opaco. No debe ser nulo. El llamador asume la propiedad del key_material contenido.
[out] características Se usa para mostrar las características de la clave importada. Puede ser NULL, en cuyo caso no se mostrarán características. Si no es NULL, el llamador asume la propiedad y debe reasignar con keymaster_free_characteristics() . Ten en cuenta que nunca se devuelven KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID ni KM_TAG_APPLICATION_DATA.

Definición en la línea 357 del archivo 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)
Obsoleto:
Importa un par de claves públicas y privadas. Las claves importadas estarán en formato PKCS#8 con codificación DER (estándar de Java). El blob de claves que se muestra es opaco y se proporcionará posteriormente para la firma y la verificación.

Devuelve 0 si se realiza correctamente o un código de error inferior a 0.

Definición en la línea 66 del archivo 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)
Obsoleto:
Firma los datos con un BLOB de clave generado anteriormente. Puede usar una clave asimétrica o una clave secreta.

Devuelve 0 si se realiza correctamente o un código de error inferior a 0.

Definición en la línea 108 del archivo keymaster1.h .

keymaster_error_t (* update)(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)

Proporciona datos a una operación criptográfica en curso que se inició con begin() y, posiblemente, recibe resultados de ella.

Si operation_handle no es válido, update() mostrará KM_ERROR_INVALID_OPERATION_HANDLE.

Es posible que update() no consuma todos los datos proporcionados en el búfer de datos. update() mostrará la cantidad consumida en *data_consumed. El llamador debe proporcionar los datos no consumidos en una llamada posterior.

Parámetros
[in] dev La estructura del dispositivo de Keymaster
[in] operation_handle El identificador de operación que muestra begin()
[in] in_params Parámetros adicionales para la operación. En el caso de los modos AEAD, se usa para especificar KM_TAG_ADDITIONAL_DATA. Ten en cuenta que se pueden proporcionar datos adicionales en varias llamadas a update() , pero solo hasta que se proporcionen los datos de entrada.
[in] input Datos que se procesarán según los parámetros establecidos en la llamada a begin() . Ten en cuenta que update() puede consumir todos los datos proporcionados o no. Consulta input_consumed .
[out] input_consumed Es la cantidad de datos que consumió update() . Si es inferior al importe proporcionado, el llamador debe proporcionar el resto en una llamada posterior a update() .
[out] out_params Parámetros de salida Se usa para mostrar datos adicionales de la operación. El llamador se apropia del array de parámetros de salida y debe liberarlo con keymaster_free_param_set() . out_params se puede establecer en NULL si no se esperan parámetros de salida. Si out_params es NULL y se generan parámetros de salida, begin() mostrará KM_ERROR_OUTPUT_PARAMETER_NULL.
[out] output Los datos de salida, si corresponde El llamador asume la propiedad del búfer asignado. El resultado no debe ser NULL.

Ten en cuenta que update() puede no proporcionar ningún resultado, en cuyo caso output->data_length será cero, y output->data puede ser NULL o tener una longitud de cero (por lo que el llamador siempre debe liberarlo).

Definición en la línea 495 del archivo keymaster1.h .

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_t signed_data_length, const uint8_t *signature, const size_t signature_length)
Obsoleto:
Verifica los datos firmados con un blob de claves. Puede usar una clave asimétrica o una clave secreta.

Devuelve 0 si la verificación se realiza correctamente o un código de error inferior a 0.

Definición en la línea 118 del archivo keymaster1.h .


La documentación de esta struct se generó a partir del siguiente archivo: