Referencia de estructura keymaster1_device

Referencia de estructura keymaster1_device

#include < keymaster1.h >

Campos de información

estructura hw_device_t común
uint32_t versión_cliente
uint32_t banderas
vacío * contexto
En t(* generar_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)
En t(* 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)
En t(* 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)
En t(* eliminar_pare_claves )(const estructura keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
En t(* eliminar_todos ) (const estructura keymaster1_device *dev)
En t(* 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)
En t(* verificar_datos ) (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 firmado_data_length, const uint8_t *firma, const size_t Signature_length)
keymaster_error_t (* get_supported_algorithms )(const struct keymaster1_device *dev, keymaster_algorithm_t **algoritmos, size_t *algoritmos_longitud)
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 , propósito keymaster_Purpose_t , keymaster_digest_t **resúmenes, size_t *longitud_resúmenes)
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 *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 **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 (* eliminar_clave (const estructura keymaster1_device *dev, const keymaster_key_blob_t *clave)
keymaster_error_t (* eliminar_todas_claves ) (const estructura keymaster1_device *dev)
keymaster_error_t (* comenzar ) (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 (* actualizar ) (const struct keymaster1_device *dev, keymaster_operative_handle_t operación_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 (* terminar ) (const struct keymaster1_device *dev, keymaster_operative_handle_t operación_handle, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *firma, keymaster_key_param_set_t *out_params, keymaster_blob_t *salida)
keymaster_error_t (* abortar ) (const struct keymaster1_device *dev, keymaster_operation_handle_t operación_handle)

Descripción detallada

Definición del dispositivo Keymaster1

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

Documentación de campo

keymaster_error_t (* abortar)(const struct keymaster1_device *dev, keymaster_operation_handle_t operación_handle)

Anula una operación criptográfica iniciada con begin() , liberando todos los recursos internos e invalidando 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 utilizado por keymaster. Se garantiza que la entropía agregada a través de este método no será la única fuente de entropía utilizada, y se requiere que la función de mezcla sea segura, en el sentido de que si el RNG se siembra (de cualquier fuente) con cualquier dato que el atacante no pueda predecir (o control), entonces la salida RNG no se puede distinguir de la aleatoria. Por tanto, si la entropía de cualquier fuente es buena, el resultado será bueno.

Parámetros
[en] desarrollador La estructura del dispositivo maestro de llaves.
[en] datos Datos aleatorios para mezclar.
[en] longitud de datos Longitud de data .

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

keymaster_error_t (* comenzar)(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_operación_handle_t *operación_handle)

Comienza una operación criptográfica utilizando la clave especificada. Si todo está bien, begin() devolverá KM_ERROR_OK y creará un identificador de operación que debe pasarse a llamadas posteriores a update() , Finish() o abort() .

Es fundamental que cada llamada a comenzar() se combine con una llamada posterior a terminar() o abortar() , para permitir que la implementación del maestro de claves limpie cualquier estado de operación interna. Si no se hace esto, se puede perder espacio de estado interno u otros recursos internos y, eventualmente, puede provocar que comenzar() devuelva KM_ERROR_TOO_MANY_OPERACIONES cuando se quede sin espacio para las operaciones. Cualquier resultado que no sea KM_ERROR_OK de comenzar() , actualizar() o finalizar() aborta implícitamente la operación, en cuyo caso no es necesario llamar a abort() (y devolverá KM_ERROR_INVALID_OPERATION_HANDLE si se llama).

Parámetros
[en] desarrollador La estructura del dispositivo maestro de llaves.
[en] objetivo El propósito de la operación, uno de KM_PURPOSE_ENCRYPT, KM_PURPOSE_DECRYPT, KM_PURPOSE_SIGN o KM_PURPOSE_VERIFY. Tenga en cuenta que para los modos AEAD, el cifrado y el descifrado implican firma y verificación, respectivamente, pero deben especificarse como KM_PURPOSE_ENCRYPT y KM_PURPOSE_DECRYPT.
[en] llave La clave que se utilizará para la operación. key debe tener un propósito compatible con purpose y se deben cumplir todos sus requisitos de uso, o comenzar() devolverá un código de error apropiado.
[en] en_params Parámetros adicionales para la operación. Normalmente se utiliza 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. Para operaciones que requieren un nonce o IV, en claves que se generaron con KM_TAG_CALLER_NONCE, in_params puede contener una etiqueta KM_TAG_NONCE. Para operaciones AEAD, aquí se especifica KM_TAG_CHUNK_SIZE.
[afuera] out_params Parámetros de salida. Se utiliza para devolver datos adicionales de la inicialización de la operación, en particular para devolver el IV o nonce de operaciones que generan un IV o nonce. La persona que llama toma posesión de la matriz de parámetros de salida y debe liberarla 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, comenzar() devolverá KM_ERROR_OUTPUT_PARAMETER_NULL.
[afuera] mango_operación El identificador de operación recién creado que se debe pasar a update() , Finish() o abort() . Si Operation_handle es NULL, comenzar() devolverá KM_ERROR_OUTPUT_PARAMETER_NULL.

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

uint32_t versión_cliente

ESTO ESTÁ DESPRECADO. Utilice 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 .

estructura hw_device_t común

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

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

contexto vacío*

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

int(* eliminar_todos)(const estructura keymaster1_device *dev)
Obsoleto:
Elimina todas las claves del almacén de claves de hardware. Se utiliza cuando el almacén de claves se restablece por completo.

Esta función es opcional y debe establecerse en NULL si no está implementada.

Devuelve 0 en caso de éxito o un código de error menor que 0.

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

keymaster_error_t (* eliminar_todas_claves)(const estructura keymaster1_device *dev)

Elimina todas las claves del almacén de claves de hardware. Se utiliza cuando el almacén de claves se restablece por completo. Después de llamar a esta función, será imposible utilizar cualquier blob de claves generado o importado previamente para cualquier operación.

Esta función es opcional y debe establecerse en NULL si no está implementada.

Parámetros
[en] desarrollador La estructura del dispositivo maestro de llaves.

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

keymaster_error_t (* eliminar_clave)(const estructura keymaster1_device *dev, const keymaster_key_blob_t *clave)

Elimina la clave, o el par de claves, asociado al blob de claves. Después de llamar a esta función será imposible utilizar la clave para otras operaciones. Se puede aplicar a claves de raíces de confianza extranjeras (claves que no se pueden utilizar bajo la raíz de confianza actual).

Esta función es opcional y debe establecerse en NULL si no está implementada.

Parámetros
[en] desarrollador La estructura del dispositivo maestro de llaves.
[en] llave La clave a eliminar.

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:
Elimina el par de claves asociado al blob de claves.

Esta función es opcional y debe establecerse en NULL si no está implementada.

Devuelve 0 en caso de éxito 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 devuelve una matriz de bytes en el formato especificado.

Parámetros
[en] desarrollador La estructura del dispositivo maestro de llaves.
[en] formato_exportación El formato que se utilizará para exportar la clave.
[en] clave_para_exportar La clave para exportar.
[afuera] exportar datos El material clave exportado. La persona que llama asume la propiedad.
[afuera] longitud_datos_exportación La longitud de export_data .

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

keymaster_error_t (* terminar)(const struct keymaster1_device *dev, keymaster_operative_handle_t operación_handle, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *firma, keymaster_key_param_set_t *out_params, keymaster_blob_t *salida)

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

Parámetros
[en] desarrollador La estructura del dispositivo maestro de llaves.
[en] mango_operación El identificador de operación devuelto por begin() . Este identificador será invalidado.
[en] parámetros Parámetros adicionales para la operación. Para los modos AEAD, esto se usa para especificar KM_TAG_ADDITIONAL_DATA, pero solo si no se proporcionaron datos de entrada a update() .
[en] firma La firma que se verificará si el propósito especificado en la llamada a comenzar() era KM_PURPOSE_VERIFY.
[afuera] producción Los datos de salida, si los hubiera. La persona que llama asume la propiedad del búfer asignado.

Si la operación que se está finalizando es una verificación de firma o un descifrado en modo AEAD y la verificación falla, finalizar() devolverá KM_ERROR_VERIFICATION_FAILED.

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

banderas uint32_t

Ver indicadores definidos para keymaster0_devices::flags en keymaster_common.h

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

Genera una clave o un par de claves y devuelve un blob de claves o una descripción de la clave.

Los parámetros de generación de claves se definen como pares de etiqueta/valor keymaster, proporcionados en params . Consulte keymaster_tag_t para obtener la lista completa. Algunos valores que siempre son necesarios para la generación de claves útiles son:

  • KM_TAG_ALGORITHM;
  • KM_TAG_PURPOSE; y
  • (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 KM_TAG_NO_AUTH_REQUIRED esté presente, o el usuario tendrá que autenticarse para cada uso.

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; sus valores serán proporcionados por la implementación.

  • KM_TAG_ORIGIN,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
Parámetros
[en] desarrollador La estructura del dispositivo maestro de llaves.
[en] parámetros Matriz de parámetros de generación de claves.
[en] params_count Longitud de params .
[afuera] bloque_clave devuelve la clave generada. key_blob no debe ser NULL. La persona que llama asume la propiedad key_blob->key_material y debe liberarlo().
[afuera] características devuelve las características de la clave que se generó, si no es NULL. Si no es NULL, la persona que llama asume la propiedad y debe desasignar con keymaster_free_characteristics() . Tenga en cuenta que KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID y KM_TAG_APPLICATION_DATA nunca se devuelven.

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 devuelto es opaco y debe proporcionarse posteriormente para su firma y verificación.

Devuelve: 0 en caso de éxito o un código de error menor que 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 **características)

Devuelve las características de la clave especificada, o KM_ERROR_INVALID_KEY_BLOB si key_blob no es válido (las implementaciones deben validar completamente 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 deben estar vacíos si KM_TAG_APPLICATION_ID y/o KM_TAG_APPLICATION_DATA no se proporcionaron durante la generación. Esos valores no están incluidos en las características devueltas. La persona que llama asume la propiedad del objeto de características asignado, que debe desasignarse con keymaster_free_characteristics() .

Tenga en cuenta que KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID y KM_TAG_APPLICATION_DATA nunca se devuelven.

Parámetros
[en] desarrollador La estructura del dispositivo maestro de llaves.
[en] bloque_clave La clave para recuperar características.
[en] Identificación del cliente Los datos de ID del cliente, o NULL si no hay ninguno asociado.
[en] id_aplicación Los datos de la aplicación, o NULL si no hay ninguno asociado.
[afuera] 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 la clave pública de un par de claves. La clave pública debe estar en una matriz de bytes codificada en formato X.509 (estándar Java).

Devuelve: 0 en caso de éxito o un código de error menor que 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 **algoritmos, size_t *algoritmos_longitud)

Obtiene algoritmos compatibles.

Parámetros
[en] desarrollador La estructura del dispositivo maestro de llaves.
[afuera] algoritmos Admite una variedad de algoritmos. La persona que llama toma posesión de la matriz y debe liberarla ().
[afuera] algoritmos_longitud 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, algoritmo keymaster_algorithm_t , keymaster_Purpose_t propósito, keymaster_block_mode_t **modos, size_t *modes_length)

Obtiene los modos de bloque admitidos para el algoritmo especificado.

Parámetros
[en] desarrollador La estructura del dispositivo maestro de llaves.
[en] algoritmo El algoritmo para el cual se devolverán los modos admitidos.
[afuera] modos Admite una variedad de modos. La persona que llama toma posesión de la matriz y debe liberarla ().
[afuera] modos_longitud Duración 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 algoritmo, keymaster_Purpose_t propósito, keymaster_digest_t **digests, size_t *digests_length)

Obtiene los resúmenes admitidos para el algoritmo especificado. La persona que llama asume la propiedad de la matriz asignada.

Parámetros
[en] desarrollador La estructura del dispositivo maestro de llaves.
[en] algoritmo El algoritmo para el cual se devolverán los resúmenes admitidos.
[afuera] digiere Se admite una variedad de resúmenes. La persona que llama toma posesión de la matriz y debe liberarla ().
[afuera] longitud_digests Duración 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, algoritmo keymaster_algorithm_t , keymaster_key_format_t **formatos, size_t *formats_length)

Obtiene los formatos de exportación de claves admitidos para las claves del algoritmo especificado. La persona que llama asume la propiedad de la matriz asignada.

Parámetros
[en] desarrollador La estructura del dispositivo maestro de llaves.
[en] algoritmo El algoritmo para el cual se devolverán los formatos compatibles.
[afuera] formatos Variedad de formatos admitidos. La persona que llama toma posesión de la matriz y debe liberarla ().
[afuera] formatos_longitud 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, algoritmo keymaster_algorithm_t , keymaster_key_format_t **formatos, size_t *formats_length)

Obtiene los formatos de importación de claves admitidos para las claves del algoritmo especificado. La persona que llama asume la propiedad de la matriz asignada.

Parámetros
[en] desarrollador La estructura del dispositivo maestro de llaves.
[en] algoritmo El algoritmo para el cual se devolverán los formatos compatibles.
[afuera] formatos Variedad de formatos admitidos. La persona que llama toma posesión de la matriz y debe liberarla ().
[afuera] formatos_longitud 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, algoritmo keymaster_algorithm_t , keymaster_Purpose_t propósito, keymaster_padding_t **modos, size_t *modes_length)

Obtiene los modos de relleno admitidos para el algoritmo especificado. La persona que llama asume la propiedad de la matriz asignada.

Parámetros
[en] desarrollador La estructura del dispositivo maestro de llaves.
[en] algoritmo El algoritmo para el cual se devolverán los modos de relleno admitidos.
[afuera] modos Se admite una variedad de modos de relleno. La persona que llama toma posesión de la matriz y debe liberarla ().
[afuera] modos_longitud Duración de modes .

Definición en la línea 168 del archivo 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 una clave o un par de claves y devuelve un blob de claves o una descripción de la clave.

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

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

Generalmente se debe especificar KM_TAG_AUTH_TIMEOUT. Si no se especifica, el usuario deberá autenticarse para cada uso.

Las siguientes etiquetas tomará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 utilizará de forma predeterminada el valor de la clave proporcionada (para claves RSA)

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

  • KM_TAG_ORIGIN,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
Parámetros
[en] desarrollador La estructura del dispositivo maestro de llaves.
[en] parámetros Parámetros que definen la clave importada.
[en] params_count El número de entradas en params .
[en] formato_clave especifica el formato de los datos clave en key_data.
[afuera] bloque_clave Se utiliza para devolver el blob de clave opaco. Debe ser no NULL. La persona que llama asume la propiedad del key_material contenido.
[afuera] características Se utiliza para devolver las características de la clave importada. Puede ser NULL, en cuyo caso no se devolverá ninguna característica. Si no es NULL, la persona que llama asume la propiedad y debe desasignar con keymaster_free_characteristics() . Tenga en cuenta que KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID y KM_TAG_APPLICATION_DATA nunca se devuelven.

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 Java). El blob de claves devuelto es opaco y posteriormente se proporcionará para su firma y verificación.

Devuelve: 0 en caso de éxito o un código de error menor que 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 datos utilizando un key-blob generado anteriormente. Esto puede utilizar una clave asimétrica o una clave secreta.

Devuelve: 0 en caso de éxito o un código de error menor que 0.

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

keymaster_error_t (* actualización)(const struct keymaster1_device *dev, keymaster_operative_handle_t operación_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 y posiblemente recibe resultados de una operación criptográfica en curso iniciada con begin() .

Si Operation_handle no es válido, update() devolverá KM_ERROR_INVALID_OPERATION_HANDLE.

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

Parámetros
[en] desarrollador La estructura del dispositivo maestro de llaves.
[en] mango_operación El identificador de operación devuelto por begin() .
[en] en_params Parámetros adicionales para la operación. Para los modos AEAD, esto se utiliza para especificar KM_TAG_ADDITIONAL_DATA. Tenga en cuenta que se pueden proporcionar datos adicionales en varias llamadas a update() , pero solo hasta que se hayan proporcionado los datos de entrada.
[en] aporte Datos a procesar, según los parámetros establecidos en la llamada a begin() . Tenga en cuenta que update() puede consumir o no todos los datos proporcionados. Ver input_consumed .
[afuera] entrada_consumida Cantidad de datos consumidos por update() . Si esto es menor que la cantidad proporcionada, la persona que llama debe proporcionar el resto en una llamada posterior a update() .
[afuera] out_params Parámetros de salida. Se utiliza para devolver datos adicionales de la operación. La persona que llama toma posesión de la matriz de parámetros de salida y debe liberarla 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, comenzar() devolverá KM_ERROR_OUTPUT_PARAMETER_NULL.
[afuera] producción Los datos de salida, si los hubiera. La persona que llama asume la propiedad del búfer asignado. la salida no debe ser NULL.

Tenga en cuenta que es posible que update() no proporcione ningún resultado, en cuyo caso salida->longitud_datos será cero, y salida->datos puede ser NULL o de longitud cero (por lo que la persona que llama siempre debe liberarlo()).

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

int(* verificar_datos)(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 firmado_data_length, const uint8_t *firma, const size_t firma_length)
Obsoleto:
Verifica los datos firmados con un key-blob. Esto puede utilizar una clave asimétrica o una clave secreta.

Devuelve: 0 en caso de verificación exitosa o un código de error menor que 0.

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


La documentación para esta estructura se generó a partir del siguiente archivo: