Documentation de référence sur la struct keymaster1_device

Documentation de référence sur la struct keymaster1_device

#include < keymaster1.h >

Champs de données

struct hw_device_t   commun
 
uint32_t  client_version
 
uint32_t  indicateurs
 
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, const keymaster_key_blob_t *key_blob, const 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)
 

Description détaillée

Définition de l'appareil Keymaster1

Définition à la ligne  28 du fichier keymaster1.h .

Documentation des champs

Arrête une opération de chiffrement commencée avec begin() , libérant toutes les ressources internes et invalidant operation_handle .

Définition à la ligne  531 du fichier keymaster1.h .

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

Ajoute de l'entropie au générateur de nombres aléatoires utilisé par Keymaster. L'entropie ajoutée via cette méthode ne sera jamais la seule source d'entropie utilisée. La fonction de mélange doit être sécurisée, c'est-à-dire que si le générateur de nombres aléatoires est initialisé (à partir de n'importe quelle source) avec des données que l'attaquant ne peut pas prédire (ou contrôler), la sortie du générateur de nombres aléatoires est indiscernable de la distribution aléatoire. Par conséquent, si l'entropie de n'importe quelle source est bonne, la sortie sera bonne.

Paramètres
[in] dev Structure de l'appareil Keymaster
[in] de données Données aléatoires à mélanger.
[in] data_length Longueur de data .

Définition à la ligne  242 du fichier keymaster1.h .

Démarre une opération de cryptographie à l'aide de la clé spécifiée. Si tout va bien, begin() renvoie KM_ERROR_OK et crée un handle d'opération qui doit être transmis aux appels ultérieurs de update() , finish() ou abort() .

Il est essentiel que chaque appel à begin() soit associé à un appel ultérieur à finish() ou abort() , afin de permettre à l'implémentation de Keymaster de nettoyer tout état d'opération interne. Si vous ne le faites pas, vous risquez de provoquer une fuite d'espace d'état interne ou d'autres ressources internes, et begin() peut finir par renvoyer KM_ERROR_TOO_MANY_OPERATIONS lorsqu'il n'a plus d'espace pour les opérations. Tout résultat autre que KM_ERROR_OK de begin() , update() ou finish() met implicitement fin à l'opération. Dans ce cas, abort() n'a pas besoin d'être appelé (et renvoie KM_ERROR_INVALID_OPERATION_HANDLE s'il est appelé).

Paramètres
[in] dev Structure de l'appareil Keymaster
[in] objectif But de l'opération, parmi les valeurs KM_PURPOSE_ENCRYPT, KM_PURPOSE_DECRYPT, KM_PURPOSE_SIGN ou KM_PURPOSE_VERIFY. Notez que pour les modes AEAD, le chiffrement et le déchiffrement impliquent respectivement la signature et la validation, mais doivent être spécifiés comme KM_PURPOSE_ENCRYPT et KM_PURPOSE_DECRYPT.
[in] touche Clé à utiliser pour l'opération. key doit avoir un objectif compatible avec purpose et toutes ses exigences d'utilisation doivent être satisfaites, sinon begin() renverra un code d'erreur approprié.
[in] in_params Paramètres supplémentaires pour l'opération. Il est généralement utilisé pour fournir des données d'authentification, avec KM_TAG_AUTH_TOKEN. Si KM_TAG_APPLICATION_ID ou KM_TAG_APPLICATION_DATA ont été fournis lors de la génération, ils doivent être fournis ici, sinon l'opération échouera avec KM_ERROR_INVALID_KEY_BLOB. Pour les opérations qui nécessitent un nonce ou un IV, sur les clés générées avec KM_TAG_CALLER_NONCE, in_params peut contenir une balise KM_TAG_NONCE. Pour les opérations AEAD, KM_TAG_CHUNK_SIZE est spécifié ici.
[out] out_params Paramètres de sortie. Permet de renvoyer des données supplémentaires à partir de l'initialisation de l'opération, en particulier pour renvoyer l'IV ou le nonce à partir d'opérations qui génèrent un IV ou un nonce. L'appelant s'approprie le tableau des paramètres de sortie et doit le libérer avec keymaster_free_param_set() . out_params peut être défini sur NULL si aucun paramètre de sortie n'est attendu. Si out_params est NULL et que des paramètres de sortie sont générés, begin() renvoie KM_ERROR_OUTPUT_PARAMETER_NULL.
[out] operation_handle Le gestionnaire d'opération nouvellement créé qui doit être transmis à update() , finish() ou abort() . Si operation_handle est NULL, begin() renvoie KM_ERROR_OUTPUT_PARAMETER_NULL.

Définition à la ligne  451 du fichier keymaster1.h .

uint32_t client_version

OBSOLÈTE. Utilisez plutôt les nouveaux champs "module_api_version" et "hal_api_version" dans l'initialisation de keymaster_module.

Définition à la ligne  41 du fichier keymaster1.h .

struct hw_device_t common

Méthodes courantes de l'appareil Keymaster. Cet élément doit être le premier membre de keymaster_device, car les utilisateurs de cette structure castent un hw_device_t en pointeur keymaster_device dans les contextes où il est connu que hw_device_t fait référence à un keymaster_device.

Définition à la ligne  35 du fichier keymaster1.h .

void* context

Définition à la ligne  48 du fichier keymaster1.h .

int(* delete_all)(const struct keymaster1_device *dev)
Obsolète :
Supprime toutes les clés du keystore matériel. Utilisé lorsque le keystore est réinitialisé complètement.

Cette fonction est facultative et doit être définie sur NULL si elle n'est pas implémentée.

Renvoie 0 en cas de réussite ou un code d'erreur inférieur à 0.

Définition à la ligne  100 du fichier keymaster1.h .

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

Supprime toutes les clés du keystore matériel. Utilisé lorsque le keystore est réinitialisé complètement. Après avoir appelé cette fonction, il sera impossible d'utiliser des blobs de clé générés ou importés précédemment pour toute opération.

Cette fonction est facultative et doit être définie sur NULL si elle n'est pas implémentée.

Paramètres
[in] dev Structure de l'appareil Keymaster

Définition à la ligne 407 du fichier keymaster1.h .

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

Supprime la clé ou la paire de clés associée au blob de clé. Après avoir appelé cette fonction, il sera impossible d'utiliser la clé pour d'autres opérations. Peut être appliqué aux clés provenant de racines de confiance étrangères (clés non utilisables avec la racine de confiance actuelle).

Cette fonction est facultative et doit être définie sur NULL si elle n'est pas implémentée.

Paramètres
[in] dev Structure de l'appareil Keymaster
[in] touche Clé à supprimer.

Définition à la ligne  395 du fichier keymaster1.h .

int(* delete_keypair)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
Obsolète :
Supprime la paire de clés associée au blob de clé.

Cette fonction est facultative et doit être définie sur NULL si elle n'est pas implémentée.

Renvoie 0 en cas de réussite ou un code d'erreur inférieur à 0.

Définition à la ligne  88 du fichier 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)

Exporte une clé publique et renvoie un tableau d'octets au format spécifié.

Paramètres
[in] dev Structure de l'appareil Keymaster
[in] export_format Format à utiliser pour exporter la clé.
[in] key_to_export Clé à exporter.
[out] export_data Matériel de clé exporté. L'appelant en devient propriétaire.
[out] export_data_length Longueur de export_data .

Définition à la ligne  377 du fichier keymaster1.h .

Finalise une opération de chiffrement commencée avec begin() et invalide operation_handle .

Paramètres
[in] dev Structure de l'appareil Keymaster
[in] operation_handle Le gestionnaire d'opération renvoyé par begin() . Cet identifiant sera invalidé.
[in] params Paramètres supplémentaires pour l'opération. Pour les modes AEAD, il permet de spécifier KM_TAG_ADDITIONAL_DATA, mais uniquement si aucune donnée d'entrée n'a été fournie à update() .
[in] signature Signature à valider si l'objectif spécifié dans l'appel begin() était KM_PURPOSE_VERIFY.
[out] output Données de sortie, le cas échéant. L'appelant assume la propriété du tampon alloué.

Si l'opération en cours de finalisation est une validation de signature ou un déchiffrement en mode AEAD, et que la validation échoue, finish() renvoie KM_ERROR_VERIFICATION_FAILED.

Définition à la ligne  521 du fichier keymaster1.h .

Options uint32_t

Consultez les indicateurs définis pour keymaster0_devices::flags dans keymaster_common.h .

Définition à la ligne  46 du fichier keymaster1.h .

Génère une clé ou une paire de clés, et renvoie un blob de clé et/ou une description de la clé.

Les paramètres de génération de clés sont définis sous forme de paires balise/valeur Keymaster, fournies dans params . Pour obtenir la liste complète, consultez keymaster_tag_t. Voici quelques valeurs toujours requises pour générer des clés utiles:

  • KM_TAG_ALGORITHM;
  • KM_TAG_PURPOSE ; et
  • (KM_TAG_USER_SECURE_ID et KM_TAG_USER_AUTH_TYPE) ou KM_TAG_NO_AUTH_REQUIRED.

KM_TAG_AUTH_TIMEOUT doit généralement être spécifié, sauf si KM_TAG_NO_AUTH_REQUIRED est présent, sinon l'utilisateur devra s'authentifier à chaque utilisation.

KM_TAG_BLOCK_MODE, KM_TAG_PADDING, KM_TAG_MAC_LENGTH et KM_TAG_DIGEST doivent être spécifiés pour les algorithmes qui les nécessitent.

Les balises suivantes ne doivent pas être spécifiées. Leurs valeurs seront fournies par l'implémentation.

  • KM_TAG_ORIGIN,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
Paramètres
[in] dev Structure de l'appareil Keymaster
[in] params Tableau de paramètres de génération de clés.
[in] params_count Longueur de params .
[out] key_blob renvoie la clé générée. key_blob ne doit pas être NULL. L'appelant assume la propriété key_blob->key_material et doit la libérer (free()).
[out] caractéristiques renvoie les caractéristiques de la clé générée, si elle n'est pas nulle. Si la valeur n'est pas NULL, l'appelant en devient propriétaire et doit la désallouer avec keymaster_free_characteristics() . Notez que KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID et KM_TAG_APPLICATION_DATA ne sont jamais renvoyés.

Définition à la ligne  282 du fichier 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)
Obsolète :
Génère une clé publique et une clé privée. Le blob de clé renvoyé est opaque et doit ensuite être fourni pour la signature et la validation.

Renvoie: 0 en cas de réussite ou un code d'erreur inférieur à 0.

Définition à la ligne  56 du fichier 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)

Renvoie les caractéristiques de la clé spécifiée, ou KM_ERROR_INVALID_KEY_BLOB si le key_blob est non valide (les implémentations doivent valider entièrement l'intégrité de la clé). client_id et app_data doivent correspondre à l'ID et aux données fournis lors de la génération ou de l'importation de la clé, ou être vides si KM_TAG_APPLICATION_ID et/ou KM_TAG_APPLICATION_DATA n'ont pas été fournis lors de la génération. Ces valeurs ne sont pas incluses dans les caractéristiques renvoyées. L'appelant assume la propriété de l'objet de caractéristiques alloué, qui doit être désallooué avec keymaster_free_characteristics() .

Notez que KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID et KM_TAG_APPLICATION_DATA ne sont jamais renvoyés.

Paramètres
[in] dev Structure de l'appareil Keymaster
[in] key_blob Clé à partir de laquelle les caractéristiques doivent être récupérées.
[in] client_id Données de l'ID client, ou NULL si aucun n'est associé.
[in] app_id Données de l'application ou NULL si aucune n'est associée.
[out] caractéristiques Principales caractéristiques

Définition à la ligne  309 du fichier 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)
Obsolète :
Récupère la partie clé publique d'une paire de clés. La clé publique doit être une matrice d'octets au format X.509 (norme Java).

Renvoie: 0 en cas de réussite ou un code d'erreur inférieur à 0. En cas d'erreur, x509_data ne doit pas être alloué.

Définition à la ligne  76 du fichier keymaster1.h .

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

Récupère les algorithmes compatibles.

Paramètres
[in] dev Structure de l'appareil Keymaster
[out] algorithmes Tableau des algorithmes compatibles. L'appelant s'approprie le tableau et doit le libérer()
[out] algorithms_length Longueur de algorithms .

Définition à la ligne  133 du fichier 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)

Récupère les modes de bloc compatibles avec l'algorithme spécifié.

Paramètres
[in] dev Structure de l'appareil Keymaster
[in] algorithme Algorithme pour lequel les modes compatibles seront renvoyés.
[out] modes Tableau des modes compatibles. L'appelant s'approprie le tableau et doit le libérer (free()).
[out] modes_length Longueur de modes .

Définition à la ligne 149 du fichier 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)

Récupère les récapitulatifs compatibles avec l'algorithme spécifié. L'appelant assume la propriété du tableau alloué.

Paramètres
[in] dev Structure de l'appareil Keymaster
[in] algorithme Algorithme pour lequel les récapitulatifs compatibles seront renvoyés.
[out] récapitulatifs Tableau de récapitulatifs accepté. L'appelant s'approprie le tableau et doit le libérer (free()).
[out] digests_length Longueur de digests .

Définition à la ligne 187 du fichier 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)

Récupère les formats d'exportation de clés compatibles avec les clés de l'algorithme spécifié. L'appelant assume la propriété du tableau alloué.

Paramètres
[in] dev Structure de l'appareil Keymaster
[in] algorithme Algorithme pour lequel les formats compatibles seront renvoyés.
[out] formats Tableau des formats acceptés. L'appelant s'approprie le tableau et doit le libérer()
[out] formats_length Longueur de formats .

Définition à la ligne  224 du fichier 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)

Récupère les formats d'importation de clés compatibles avec les clés de l'algorithme spécifié. L'appelant assume la propriété du tableau alloué.

Paramètres
[in] dev Structure de l'appareil Keymaster
[in] algorithme Algorithme pour lequel les formats compatibles seront renvoyés.
[out] formats Tableau des formats acceptés. L'appelant s'approprie le tableau et doit le libérer()
[out] formats_length Longueur de formats .

Définition à la ligne  206 du fichier 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)

Récupère les modes de remplissage compatibles avec l'algorithme spécifié. L'appelant assume la propriété du tableau alloué.

Paramètres
[in] dev Structure de l'appareil Keymaster
[in] algorithme Algorithme pour lequel les modes de remplissage compatibles seront renvoyés.
[out] modes Tableau des modes de remplissage acceptés. L'appelant s'approprie le tableau et doit le libérer()
[out] modes_length Longueur de modes .

Définition à la ligne  168 du fichier keymaster1.h .

Importe une clé ou une paire de clés, et renvoie un blob de clé et/ou une description de la clé.

La plupart des paramètres d'importation clés sont définis sous forme de paires balise/valeur Keymaster, fournies dans "params". Pour obtenir la liste complète, consultez keymaster_tag_t. Les valeurs suivantes sont toujours requises pour importer des clés utiles:

  • KM_TAG_ALGORITHM;
  • KM_TAG_PURPOSE ; et
  • (KM_TAG_USER_SECURE_ID et KM_TAG_USER_AUTH_TYPE) ou KM_TAG_NO_AUTH_REQUIRED.

KM_TAG_AUTH_TIMEOUT doit généralement être spécifié. S'il n'est pas spécifié, l'utilisateur devra s'authentifier à chaque utilisation.

Les balises suivantes utiliseront des valeurs par défaut si elles ne sont pas spécifiées:

  • La taille de la clé fournie est utilisée par défaut pour KM_TAG_KEY_SIZE.
  • La valeur par défaut de KM_TAG_RSA_PUBLIC_EXPONENT est celle de la clé fournie (pour les clés RSA).

Les balises suivantes ne doivent pas être spécifiées. Leurs valeurs seront fournies par l'implémentation.

  • KM_TAG_ORIGIN,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
Paramètres
[in] dev Structure de l'appareil Keymaster
[in] params Paramètres définissant la clé importée.
[in] params_count Nombre d'entrées dans params .
[in] key_format Spécifie le format des données de clé dans key_data.
[out] key_blob Permet de renvoyer le blob de clé opaque. Ne doit pas être NULL. L'appelant assume la propriété du matériel de clé contenu.
[out] caractéristiques Permet de renvoyer les caractéristiques de la clé importée. Peut être NULL, auquel cas aucune caractéristique ne sera renvoyée. Si la valeur n'est pas NULL, l'appelant en devient propriétaire et doit la désallouer avec keymaster_free_characteristics() . Notez que KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID et KM_TAG_APPLICATION_DATA ne sont jamais renvoyés.

Définition à la ligne  357 du fichier 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)
Obsolète :
Importe une paire de clés publique et privée. Les clés importées seront au format PKCS#8 avec encodage DER (norme Java). Le blob de clé renvoyé est opaque et sera ensuite fourni pour la signature et la validation.

Renvoie: 0 en cas de réussite ou un code d'erreur inférieur à 0.

Définition à la ligne 66 du fichier 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)
Obsolète :
Signed Data : signe les données à l'aide d'un blob de clé généré précédemment. Il peut s'agir d'une clé asymétrique ou d'une clé secrète.

Renvoie: 0 en cas de réussite ou un code d'erreur inférieur à 0.

Définition à la ligne  108 du fichier 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)

Fournit des données à une opération cryptographique en cours lancée avec begin() et reçoit éventuellement sa sortie.

Si operation_handle n'est pas valide, update() renvoie KM_ERROR_INVALID_OPERATION_HANDLE.

update() peut ne pas consommer toutes les données fournies dans le tampon de données. update() renvoie la quantité consommée dans *data_consumed. L'appelant doit fournir les données non consommées dans un appel ultérieur.

Paramètres
[in] dev Structure de l'appareil Keymaster
[in] operation_handle Le gestionnaire d'opérations renvoyé par begin() .
[in] in_params Paramètres supplémentaires pour l'opération. Pour les modes AEAD, il permet de spécifier KM_TAG_ADDITIONAL_DATA. Notez que des données supplémentaires peuvent être fournies dans plusieurs appels à update() , mais uniquement jusqu'à ce que les données d'entrée aient été fournies.
[in] entrée Données à traiter, conformément aux paramètres définis dans l'appel à begin() . Notez que update() peut consommer ou non toutes les données fournies. Consultez input_consumed .
[out] input_consumed Quantité de données consommées par update() . Si ce montant est inférieur au montant fourni, l'appelant doit fournir le reste dans un appel ultérieur à update() .
[out] out_params Paramètres de sortie. Permet de renvoyer des données supplémentaires à partir de l'opération. L'appelant devient propriétaire du tableau des paramètres de sortie et doit le libérer avec keymaster_free_param_set() . out_params peut être défini sur NULL si aucun paramètre de sortie n'est attendu. Si out_params est NULL et que des paramètres de sortie sont générés, begin() renvoie KM_ERROR_OUTPUT_PARAMETER_NULL.
[out] output Données de sortie, le cas échéant. L'appelant assume la propriété du tampon alloué. La sortie ne doit pas être NULL.

Notez que update() peut ne pas fournir de sortie, auquel cas output->data_length sera nul, et output->data peut être NULL ou de longueur nulle (l'appelant doit donc toujours le libérer avec free()).

Définition à la ligne 495 du fichier 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)
Obsolète :
Vérifie les données signées avec un blob de clé. Il peut s'agir d'une clé asymétrique ou d'une clé secrète.

Renvoie: 0 en cas de réussite de la validation ou un code d'erreur inférieur à 0.

Définition à la ligne  118 du fichier keymaster1.h .


La documentation de ce struct a été générée à partir du fichier suivant :