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_par_clave )(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(* | delete_keypair )(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length) |
En t(* | delete_all )(const struct 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 firm_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 algoritmo, keymaster_purpose_t propósito, keymaster_block_mode_t **modos, tamaño_t *modos_longitud) |
keymaster_error_t (* | get_supported_padding_modes )(const struct keymaster1_device *dev, keymaster_algorithm_t algoritmo, keymaster_purpose_t propósito, keymaster_padding_t **modos, tamaño_t *modos_longitud) |
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) |
keymaster_error_t (* | get_supported_import_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t algoritmo, keymaster_key_format_t **formatos, tamaño_t *formatos_longitud) |
keymaster_error_t (* | get_supported_export_formats )(const struct keymaster1_device *dev, algoritmo keymaster_algorithm_t , keymaster_key_format_t **formatos, tamaño_t *formatos_longitud) |
keymaster_error_t (* | add_rng_entropy )(const struct keymaster1_device *dev, const uint8_t *data, size_t data_length) |
keymaster_error_t (* | generar_clave )(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 struct keymaster1_device *dev) |
keymaster_error_t (* | begin )(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_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 *salida) |
keymaster_error_t (* | abortar )(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle) |
Descripción detallada
Definición de 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 operation_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 sea 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 datos que el atacante no puede predecir (o control), entonces la salida RNG es indistinguible de la aleatoria. Por tanto, si la entropía de cualquier fuente es buena, la salida será buena.
- Parámetros
[en] desarrollador La estructura del dispositivo keymaster. [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 (* begin)(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) |
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 se debe pasar a las llamadas posteriores a update() , finish() o abort() .
Es fundamental que cada llamada a begin() se empareje con una llamada subsiguiente a finish() o abort() , para permitir que la implementación del maestro de claves limpie cualquier estado operativo interno. Si no se hace esto, se puede filtrar el espacio de estado interno u otros recursos internos y, finalmente, puede hacer que begin() devuelva 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() cancela 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 keymaster. [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 elpurpose
y todos sus requisitos de uso deben cumplirse, o begin() devolverá un código de error apropiado.[en] in_params Parámetros adicionales para la operación. Esto se usa normalmente 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, deben proporcionarse 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 el nonce de las operaciones que generan un IV o un 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, begin() devolverá KM_ERROR_OUTPUT_PARAMETER_NULL. [afuera] manejo_de_operacion El identificador de operación recién creado que debe pasarse a update() , finish() o abort() . Si operation_handle es NULL, begin() devolverá KM_ERROR_OUTPUT_PARAMETER_NULL.
Definición en la línea 451 del archivo keymaster1.h .
uint32_t versión_cliente |
ESTO ESTÁ DESAPROBADO. 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 emitirán un puntero hw_device_t a 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(* delete_all)(const struct keymaster1_device *dev) |
- Obsoleto:
- Elimina todas las claves en el 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 (* delete_all_keys)(estructura const keymaster1_device *dev) |
Elimina todas las claves en el 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 ningún key blob generado o importado previamente para ninguna operación.
Esta función es opcional y debe establecerse en NULL si no está implementada.
- Parámetros
[en] desarrollador La estructura del dispositivo 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 *clave) |
Elimina 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 tecla para cualquier otra operación. Puede aplicarse a claves de raíces de confianza extranjeras (claves no utilizables 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 keymaster. [en] llave La clave que se va 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 con el 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 keymaster. [en] formato_de_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] export_data_length La longitud de export_data
.
Definición en la línea 377 del archivo keymaster1.h .
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 *salida) |
Finaliza una operación criptográfica iniciada con begin() e invalida operation_handle
.
- Parámetros
[en] desarrollador La estructura del dispositivo keymaster. [en] manejo_de_operacion 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 para actualizar() . [en] firma La firma que se verificará si el propósito especificado en la llamada begin() fue KM_PURPOSE_VERIFY. [afuera] producción Los datos de salida, si los hay. 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 falla la verificación, finish() devolverá KM_ERROR_VERIFICATION_FAILED.
Definición en la línea 521 del archivo keymaster1.h .
banderas uint32_t |
Ver banderas definidas para keymaster0_devices::flags en keymaster_common.h
Definición en la línea 46 del archivo keymaster1.h .
keymaster_error_t (* generar_clave)(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 y/o una descripción de la clave.
Los parámetros de generación de claves se definen como pares de etiqueta/valor de keymaster, proporcionados en params
. Consulte keymaster_tag_t para ver la lista completa. Algunos valores que siempre se requieren para la generación de claves útiles son:
- KM_TAG_ALGORITMO;
- KM_TAG_PROPÓSITO; 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.
KM_TAG_BLOCK_MODE, KM_TAG_PADDING, KM_TAG_MAC_LENGTH y KM_TAG_DIGEST deben especificarse 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_RESISTENTE,
- KM_TAG_CREATION_DATETIME
- Parámetros
[en] desarrollador La estructura del dispositivo keymaster. [en] parámetros Matriz de parámetros de generación de claves. [en] params_count Longitud de params
.[afuera] key_blob 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(* generar_par_clave)(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 key-blob 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 keymaster. [en] key_blob La clave para recuperar las características de. [en] Identificación del cliente Los datos de identificación 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 clave pública de un par de claves. La clave pública debe estar en 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, tamaño_t *algoritmos_longitud) |
Obtiene algoritmos compatibles.
- Parámetros
[en] desarrollador La estructura del dispositivo keymaster. [afuera] algoritmos Matriz de algoritmos compatibles. La persona que llama toma posesión de la matriz y debe liberarla(). [afuera] algoritmos_longitud Longitud de los 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 algoritmo, keymaster_purpose_t propósito, keymaster_block_mode_t **modos, tamaño_t *modos_longitud) |
Obtiene los modos de bloque compatibles con el algoritmo especificado.
- Parámetros
[en] desarrollador La estructura del dispositivo keymaster. [en] algoritmo El algoritmo para el que se devolverán los modos admitidos. [afuera] modos Matriz de modos compatibles. 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 **resúmenes, size_t *digests_length) |
Obtiene los resúmenes compatibles con el algoritmo especificado. La persona que llama asume la propiedad de la matriz asignada.
- Parámetros
[en] desarrollador La estructura del dispositivo keymaster. [en] algoritmo El algoritmo para el que se devolverán los resúmenes admitidos. [afuera] resúmenes Se admite una matriz de resúmenes. La persona que llama toma posesión de la matriz y debe liberarla(). [afuera] 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 algoritmo, keymaster_key_format_t **formatos, tamaño_t *formatos_longitud) |
Obtiene los formatos de exportación de claves compatibles con las claves del algoritmo especificado. La persona que llama asume la propiedad de la matriz asignada.
- Parámetros
[en] desarrollador La estructura del dispositivo keymaster. [en] algoritmo El algoritmo para el que se devolverán los formatos admitidos. [afuera] formatos Matriz de formatos compatibles. La persona que llama toma posesión de la matriz y debe liberarla(). [afuera] formatos_longitud Longitud de los 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 algoritmo, keymaster_key_format_t **formatos, tamaño_t *formatos_longitud) |
Obtiene los formatos de importación de claves compatibles con las claves del algoritmo especificado. La persona que llama asume la propiedad de la matriz asignada.
- Parámetros
[en] desarrollador La estructura del dispositivo keymaster. [en] algoritmo El algoritmo para el que se devolverán los formatos admitidos. [afuera] formatos Matriz de formatos compatibles. La persona que llama toma posesión de la matriz y debe liberarla(). [afuera] formatos_longitud Longitud de los 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 algoritmo, keymaster_purpose_t propósito, keymaster_padding_t **modos, tamaño_t *modos_longitud) |
Obtiene los modos de relleno compatibles con el algoritmo especificado. La persona que llama asume la propiedad de la matriz asignada.
- Parámetros
[en] desarrollador La estructura del dispositivo keymaster. [en] algoritmo El algoritmo para el que se devolverán los modos de relleno admitidos. [afuera] modos Matriz de modos de relleno compatibles. 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 y/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 de keymaster, proporcionados en "params". Consulte keymaster_tag_t para ver la lista completa. Los valores que siempre se requieren para la importación de claves útiles son:
- KM_TAG_ALGORITMO;
- KM_TAG_PROPÓSITO; 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. 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á por defecto el tamaño de la clave proporcionada.
- KM_TAG_RSA_PUBLIC_EXPONENT tendrá por defecto 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_RESISTENTE,
- KM_TAG_CREATION_DATETIME
- Parámetros
[en] desarrollador La estructura del dispositivo keymaster. [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] key_blob 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án características. 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 key-blob devuelto es opaco y se proporcionará 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 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 usando un key-blob generado antes. Esto puede usar 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_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 *salida) |
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.
update() puede no consumir 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 keymaster. [en] manejo_de_operacion El identificador de operación devuelto por begin() . [en] in_params Parámetros adicionales para la operación. Para los modos AEAD, esto se usa 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 o no consumir todos los datos proporcionados. Ver input_consumed
.[afuera] input_consumed Cantidad de datos consumidos por update() . Si 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 usa 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, begin() devolverá KM_ERROR_OUTPUT_PARAMETER_NULL. [afuera] producción Los datos de salida, si los hay. La persona que llama asume la propiedad del búfer asignado. la salida no debe ser NULL.
Tenga 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 de longitud cero (por lo que la persona que llama siempre debe liberar()).
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 firm_data_length, const uint8_t *signature, const size_t signature_length) |
- Obsoleto:
- Verifica los datos firmados con un key-blob. Esto puede usar una clave asimétrica o una clave secreta.
Devuelve: 0 en verificación exitosa o un código de error menor a 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:
- hardware/libhardware/include/hardware/ keymaster1.h