Struct-Referenz „keymaster1_device“

Struct-Referenz „keymaster1_device“

#include < keymaster1.h >

Datenfelder

struct hw_device_t   common
 
uint32_t  client_version
 
uint32_t  Flags
 
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)
 

Detaillierte Beschreibung

Gerätedefinition für Keymaster1

Definition in Zeile 28 der Datei keymaster1.h .

Felddokumentation

Bricht einen kryptografischen Vorgang ab, der mit begin() gestartet wurde, und gibt alle internen Ressourcen frei und macht operation_handle ungültig.

Definition in Zeile 531 der Datei keymaster1.h .

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

Fügt dem von Keymaster verwendeten Zufallszahlengenerator Entropie hinzu. Die mit dieser Methode hinzugefügte Entropie ist garantiert nicht die einzige verwendete Entropiequelle. Die Mischfunktion muss sicher sein, d. h. wenn der Zufallsgenerator (aus einer beliebigen Quelle) mit Daten initialisiert wird, die der Angreifer nicht vorhersagen oder steuern kann, ist die Ausgabe des Zufallsgenerators nicht von einer zufälligen Ausgabe zu unterscheiden. Wenn also die Entropie einer Quelle hoch ist, ist auch die Ausgabe hoch.

Parameter
[in] dev Die Keymaster-Gerätestruktur.
[in] Daten Zufällige Daten, die eingemischt werden sollen.
[in] data_length Länge von data .

Definition in Zeile 242 der Datei keymaster1.h .

Beginnt einen kryptografischen Vorgang mit dem angegebenen Schlüssel. Wenn alles in Ordnung ist, gibt begin() den Wert KM_ERROR_OK zurück und erstellt einen Vorgangs-Handle, der an nachfolgende Aufrufe von update() , finish() oder abort() übergeben werden muss.

Es ist wichtig, dass jeder Aufruf von begin() mit einem nachfolgenden Aufruf von finish() oder abort() gekoppelt ist, damit die Keymaster-Implementierung den internen Betriebsstatus bereinigen kann. Andernfalls kann es zu einem Leck des internen Statusbereichs oder anderer interner Ressourcen kommen und schließlich dazu führen, dass begin() den Fehler KM_ERROR_TOO_MANY_OPERATIONS zurückgibt, wenn der Speicherplatz für Vorgänge aufgebraucht ist. Jedes andere Ergebnis als KM_ERROR_OK von begin() , update() oder finish() löst eine implizite Abbruch des Vorgangs aus. In diesem Fall muss abort() nicht aufgerufen werden. Wird er dennoch aufgerufen, wird KM_ERROR_INVALID_OPERATION_HANDLE zurückgegeben.

Parameter
[in] dev Die Keymaster-Gerätestruktur.
[in] Zweck Der Zweck des Vorgangs, einer der folgenden Werte: KM_PURPOSE_ENCRYPT, KM_PURPOSE_DECRYPT, KM_PURPOSE_SIGN oder KM_PURPOSE_VERIFY. Hinweis: Bei AEAD-Modi implizieren Verschlüsselung und Entschlüsselung Signatur und Überprüfung, sollten aber als KM_PURPOSE_ENCRYPT und KM_PURPOSE_DECRYPT angegeben werden.
[in] Schlüssel Der Schlüssel, der für den Vorgang verwendet werden soll. key muss einen Zweck haben, der mit purpose kompatibel ist, und alle Nutzungsanforderungen müssen erfüllt sein. Andernfalls gibt begin() einen entsprechenden Fehlercode zurück.
[in] in_params Zusätzliche Parameter für den Vorgang. Dieser Parameter wird in der Regel zusammen mit KM_TAG_AUTH_TOKEN verwendet, um Authentifizierungsdaten bereitzustellen. Wenn KM_TAG_APPLICATION_ID oder KM_TAG_APPLICATION_DATA während der Generierung angegeben wurden, müssen sie auch hier angegeben werden. Andernfalls schlägt der Vorgang mit KM_ERROR_INVALID_KEY_BLOB fehl. Bei Vorgängen, für die eine Nonce oder IV erforderlich ist, kann in_params für Schlüssel, die mit KM_TAG_CALLER_NONCE generiert wurden, das Tag KM_TAG_NONCE enthalten. Für AEAD-Vorgänge wird hier KM_TAG_CHUNK_SIZE angegeben.
[out] out_params Ausgabeparameter Wird verwendet, um zusätzliche Daten aus der Vorgangsinitialisierung zurückzugeben, insbesondere die IV oder Nonce von Vorgängen, die eine IV oder Nonce generieren. Der Aufrufer übernimmt die Besitzrechte für das Array der Ausgabeparameter und muss es mit keymaster_free_param_set() freigeben. „out_params“ kann auf „NULL“ gesetzt werden, wenn keine Ausgabeparameter erwartet werden. Wenn „out_params“ NULL ist und Ausgabeparameter generiert werden, gibt begin() den Fehlerwert „KM_ERROR_OUTPUT_PARAMETER_NULL“ zurück.
[out] operation_handle Der neu erstellte Vorgangs-Handle, der an update() , finish() oder abort() übergeben werden muss. Wenn „operation_handle“ NULL ist, gibt begin() den Fehler „KM_ERROR_OUTPUT_PARAMETER_NULL“ zurück.

Definition in Zeile 451 der Datei keymaster1.h .

uint32_t client_version

DIESE FUNKTION WIRD NICHT MEHR UNTERSTÜTZT. Verwenden Sie stattdessen die neuen Felder „module_api_version“ und „hal_api_version“ in der keymaster_module-Initialisierung.

Definition in Zeile 41 der Datei keymaster1.h .

struct hw_device_t common

Gängige Methoden des Keymaster-Geräts. Dieser muss das erste Mitglied von „keymaster_device“ sein, da Nutzer dieser Struktur einen hw_device_t-Wert in einen „keymaster_device“-Zeiger umwandeln, wenn bekannt ist, dass hw_device_t auf ein „keymaster_device“ verweist.

Definition in Zeile 35 der Datei keymaster1.h .

void* context

Definition in Zeile 48 der Datei keymaster1.h .

int(* delete_all)(const struct keymaster1_device *dev)
Deprecated:
Alle Schlüssel im Hardware-Schlüsselspeicher werden gelöscht. Wird verwendet, wenn der Schlüsselspeicher vollständig zurückgesetzt wird.

Diese Funktion ist optional und sollte auf NULL gesetzt werden, wenn sie nicht implementiert ist.

Gibt bei Erfolg den Wert 0 oder einen Fehlercode kleiner als 0 zurück.

Definition in Zeile 100 der Datei keymaster1.h .

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

Alle Schlüssel im Hardware-Schlüsselspeicher werden gelöscht. Wird verwendet, wenn der Schlüsselspeicher vollständig zurückgesetzt wird. Nach dem Aufrufen dieser Funktion können zuvor generierte oder importierte Schlüssel-Blobs für keine Vorgänge mehr verwendet werden.

Diese Funktion ist optional und sollte auf NULL gesetzt werden, wenn sie nicht implementiert ist.

Parameter
[in] dev Die Keymaster-Gerätestruktur.

Definition in Zeile 407 der Datei keymaster1.h .

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

Löscht den Schlüssel oder das Schlüsselpaar, das mit dem Schlüssel-Blob verknüpft ist. Nach dem Aufrufen dieser Funktion kann der Schlüssel nicht mehr für andere Vorgänge verwendet werden. Kann auf Schlüssel aus fremden Stammvertrauensstellen angewendet werden (Schlüssel, die unter der aktuellen Stammvertrauensstelle nicht verwendet werden können).

Diese Funktion ist optional und sollte auf NULL gesetzt werden, wenn sie nicht implementiert ist.

Parameter
[in] dev Die Keymaster-Gerätestruktur.
[in] Schlüssel Der zu löschende Schlüssel.

Definition in Zeile 395 der Datei keymaster1.h .

int(* delete_keypair)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
Deprecated:
Löscht das Schlüsselpaar, das mit dem Schlüssel-Blob verknüpft ist.

Diese Funktion ist optional und sollte auf NULL gesetzt werden, wenn sie nicht implementiert ist.

Gibt bei Erfolg den Wert 0 oder einen Fehlercode kleiner als 0 zurück.

Definition in Zeile 88 der Datei 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)

Exportiert einen öffentlichen Schlüssel und gibt ein Byte-Array im angegebenen Format zurück.

Parameter
[in] dev Die Keymaster-Gerätestruktur.
[in] export_format Das Format, das für den Export des Schlüssels verwendet werden soll.
[in] key_to_export Der zu exportierende Schlüssel.
[out] export_data Das exportierte Schlüsselmaterial. Der Anrufer übernimmt die Verantwortung.
[out] export_data_length Die Länge von export_data .

Definition in Zeile 377 der Datei keymaster1.h .

Schließt einen kryptografischen Vorgang ab, der mit begin() begonnen wurde, und macht operation_handle ungültig.

Parameter
[in] dev Die Keymaster-Gerätestruktur.
[in] operation_handle Der Vorgangs-Handle, der von begin() zurückgegeben wird. Dieser Alias wird ungültig.
[in] params Zusätzliche Parameter für den Vorgang. Bei AEAD-Modi wird damit KM_TAG_ADDITIONAL_DATA angegeben, aber nur, wenn für update() keine Eingabedaten bereitgestellt wurden.
[in] Signatur Die Signatur, die überprüft werden soll, wenn der im Aufruf von begin() angegebene Zweck KM_PURPOSE_VERIFY war.
[out] output Die Ausgabedaten, falls vorhanden. Der Aufrufer übernimmt die Inhaberschaft des zugewiesenen Buffers.

Wenn der abgeschlossene Vorgang eine Signaturprüfung oder eine Entschlüsselung im AEAD-Modus ist und die Prüfung fehlschlägt, gibt finish() KM_ERROR_VERIFICATION_FAILED zurück.

Definition in Zeile 521 der Datei keymaster1.h .

uint32_t-Flags

Siehe Flags, die für keymaster0_devices::flags in keymaster_common.h definiert sind.

Definition in Zeile 46 der Datei keymaster1.h .

Generiert einen Schlüssel oder ein Schlüsselpaar und gibt einen Schlüssel-Blob und/oder eine Beschreibung des Schlüssels zurück.

Die Parameter für die Schlüsselgenerierung werden als Tag/Wert-Paare für den Keymaster definiert und in params angegeben. Eine vollständige Liste findest du unter „keymaster_tag_t“. Einige Werte, die für die Generierung nützlicher Schlüssel immer erforderlich sind:

  • KM_TAG_ALGORITHM;
  • KM_TAG_PURPOSE; und
  • (KM_TAG_USER_SECURE_ID und KM_TAG_USER_AUTH_TYPE) oder KM_TAG_NO_AUTH_REQUIRED

KM_TAG_AUTH_TIMEOUT sollte in der Regel angegeben werden, es sei denn, KM_TAG_NO_AUTH_REQUIRED ist vorhanden. Andernfalls muss sich der Nutzer bei jeder Verwendung authentifizieren.

KM_TAG_BLOCK_MODE, KM_TAG_PADDING, KM_TAG_MAC_LENGTH und KM_TAG_DIGEST müssen für Algorithmen angegeben werden, für die sie erforderlich sind.

Die folgenden Tags können nicht angegeben werden; ihre Werte werden von der Implementierung bereitgestellt.

  • KM_TAG_ORIGIN,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
Parameter
[in] dev Die Keymaster-Gerätestruktur.
[in] params Array von Parametern zur Schlüsselgenerierung.
[in] params_count Länge von params .
[out] key_blob gibt den generierten Schlüssel zurück. key_blob darf nicht NULL sein. Der Aufrufer übernimmt die Inhaberschaft von „key_blob“ -> „key_material“ und muss es mit „free()“ freigeben.
[out] Eigenschaften Gibt die Eigenschaften des generierten Schlüssels zurück, sofern er nicht NULL ist. Wenn der Wert nicht NULL ist, übernimmt der Aufrufer die Inhaberschaft und muss die Dealokalisierung mit keymaster_free_characteristics() vornehmen. Hinweis: KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID und KM_TAG_APPLICATION_DATA werden nie zurückgegeben.

Definition in Zeile 282 der Datei 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)
Deprecated:
Generiert einen öffentlichen und einen privaten Schlüssel. Der zurückgegebene Schlüssel-Blob ist undurchsichtig und muss anschließend zur Signatur und Überprüfung bereitgestellt werden.

Wird 0 zurückgegeben, wenn der Vorgang erfolgreich war, oder ein Fehlercode kleiner als 0.

Definition in Zeile 56 der Datei 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)

Gibt die Eigenschaften des angegebenen Schlüssels zurück oder KM_ERROR_INVALID_KEY_BLOB, wenn der Schlüssel-Blob ungültig ist. Implementierungen müssen die Integrität des Schlüssels vollständig prüfen. „client_id“ und „app_data“ müssen die ID und die Daten sein, die beim Generieren oder Importieren des Schlüssels angegeben wurden, oder leer, wenn KM_TAG_APPLICATION_ID und/oder KM_TAG_APPLICATION_DATA bei der Generierung nicht angegeben wurden. Diese Werte sind nicht in den zurückgegebenen Merkmalen enthalten. Der Aufrufer übernimmt die Inhaberschaft des zugewiesenen Characteristics-Objekts, das mit keymaster_free_characteristics() freigegeben werden muss.

Hinweis: KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID und KM_TAG_APPLICATION_DATA werden nie zurückgegeben.

Parameter
[in] dev Die Keymaster-Gerätestruktur.
[in] key_blob Der Schlüssel, von dem Merkmale abgerufen werden sollen.
[in] client_id Die Daten der Client-ID oder „NULL“, wenn keine verknüpft ist.
[in] app_id Die App-Daten oder NULL, wenn keine zugeordnet sind.
[out] Eigenschaften Die wichtigsten Merkmale.

Definition in Zeile 309 der Datei 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)
Deprecated:
Ruft den öffentlichen Schlüsselteil eines Schlüsselpaars ab. Der öffentliche Schlüssel muss ein Byte-Array im X.509-Format (Java-Standard) sein.

Wird 0 zurückgegeben, wenn der Vorgang erfolgreich war, oder ein Fehlercode kleiner als 0. Bei einem Fehler sollte x509_data nicht zugewiesen werden.

Definition in Zeile 76 der Datei keymaster1.h .

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

Ruft unterstützte Algorithmen ab.

Parameter
[in] dev Die Keymaster-Gerätestruktur.
[out] Algorithmen Unterstützte Algorithmen Der Aufrufer übernimmt die Inhaberschaft des Arrays und muss es mit free() freigeben.
[out] algorithms_length Länge von algorithms .

Definition in Zeile 133 der Datei 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)

Ruft die Blockmodi ab, die für den angegebenen Algorithmus unterstützt werden.

Parameter
[in] dev Die Keymaster-Gerätestruktur.
[in] Algorithmus Der Algorithmus, für den unterstützte Modi zurückgegeben werden.
[out] Modi Es werden mehrere Modi unterstützt. Der Aufrufer übernimmt die Inhaberschaft des Arrays und muss es mit free() freigeben.
[out] modes_length Länge von modes .

Definition in Zeile 149 der Datei 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)

Ruft die für den angegebenen Algorithmus unterstützten Hash-Werte ab. Der Aufrufer übernimmt die Inhaberschaft des zugewiesenen Arrays.

Parameter
[in] dev Die Keymaster-Gerätestruktur.
[in] Algorithmus Der Algorithmus, für den unterstützte Digests zurückgegeben werden.
[out] Zusammenfassungen Array von Digests wird unterstützt. Der Aufrufer übernimmt die Inhaberschaft des Arrays und muss es mit free() freigeben.
[out] digests_length Länge von digests .

Definition in Zeile 187 der Datei 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)

Ruft die Schlüsselexportformate ab, die für Schlüssel des angegebenen Algorithmus unterstützt werden. Der Aufrufer übernimmt die Inhaberschaft des zugewiesenen Arrays.

Parameter
[in] dev Die Keymaster-Gerätestruktur.
[in] Algorithmus Der Algorithmus, für den unterstützte Formate zurückgegeben werden.
[out] Formate Es werden verschiedene Formate unterstützt. Der Aufrufer übernimmt die Inhaberschaft des Arrays und muss es mit free() freigeben.
[out] formats_length Länge von formats .

Definition in Zeile 224 der Datei 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)

Ruft die Schlüsselimportformate ab, die für Schlüssel des angegebenen Algorithmus unterstützt werden. Der Aufrufer übernimmt die Inhaberschaft des zugewiesenen Arrays.

Parameter
[in] dev Die Keymaster-Gerätestruktur.
[in] Algorithmus Der Algorithmus, für den unterstützte Formate zurückgegeben werden.
[out] Formate Es werden verschiedene Formate unterstützt. Der Aufrufer übernimmt die Inhaberschaft des Arrays und muss es mit free() freigeben.
[out] formats_length Länge von formats .

Definition in Zeile 206 der Datei 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)

Ruft die für den angegebenen Algorithmus unterstützten Padding-Modi ab. Der Aufrufer übernimmt die Inhaberschaft des zugewiesenen Arrays.

Parameter
[in] dev Die Keymaster-Gerätestruktur.
[in] Algorithmus Der Algorithmus, für den unterstützte Padding-Modi zurückgegeben werden.
[out] Modi Array von unterstützten Padding-Modi. Der Aufrufer übernimmt die Inhaberschaft des Arrays und muss es mit free() freigeben.
[out] modes_length Länge von modes .

Definition in Zeile 168 der Datei keymaster1.h .

Importiert einen Schlüssel oder ein Schlüsselpaar und gibt einen Schlüssel-Blob und/oder eine Beschreibung des Schlüssels zurück.

Die meisten wichtigen Importparameter werden als Keymaster-Tag/Wert-Paare definiert und unter „params“ angegeben. Eine vollständige Liste findest du unter „keymaster_tag_t“. Für den Import nützlicher Schlüssel sind immer folgende Werte erforderlich:

  • KM_TAG_ALGORITHM;
  • KM_TAG_PURPOSE; und
  • (KM_TAG_USER_SECURE_ID und KM_TAG_USER_AUTH_TYPE) oder KM_TAG_NO_AUTH_REQUIRED

KM_TAG_AUTH_TIMEOUT sollte in der Regel angegeben werden. Wenn nicht angegeben, muss sich der Nutzer bei jeder Verwendung authentifizieren.

Für die folgenden Tags werden Standardwerte verwendet, wenn keine Angabe erfolgt:

  • KM_TAG_KEY_SIZE hat standardmäßig die Größe des bereitgestellten Schlüssels.
  • Für KM_TAG_RSA_PUBLIC_EXPONENT wird standardmäßig der Wert im angegebenen Schlüssel verwendet (für RSA-Schlüssel).

Die folgenden Tags können nicht angegeben werden; ihre Werte werden von der Implementierung bereitgestellt.

  • KM_TAG_ORIGIN,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
Parameter
[in] dev Die Keymaster-Gerätestruktur.
[in] params Parameter, die den importierten Schlüssel definieren.
[in] params_count Die Anzahl der Einträge in params .
[in] key_format Gibt das Format der Schlüsseldaten in „key_data“ an.
[out] key_blob Wird verwendet, um den opaken Schlüssel-Blob zurückzugeben. Darf nicht NULL sein. Der Aufrufer übernimmt die Inhaberschaft des enthaltenen Schlüsselmaterials.
[out] Eigenschaften Wird verwendet, um die Eigenschaften des importierten Schlüssels zurückzugeben. Kann NULL sein. In diesem Fall werden keine Merkmale zurückgegeben. Wenn der Wert nicht NULL ist, übernimmt der Aufrufer die Inhaberschaft und muss die Dealokalisierung mit keymaster_free_characteristics() vornehmen. Hinweis: KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID und KM_TAG_APPLICATION_DATA werden nie zurückgegeben.

Definition in Zeile 357 der Datei 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)
Deprecated:
Importiert ein Schlüsselpaar aus öffentlichem und privatem Schlüssel. Die importierten Schlüssel haben das PKCS#8-Format mit DER-Codierung (Java-Standard). Der zurückgegebene Schlüssel-Blob ist undurchsichtig und wird anschließend zur Signatur und Überprüfung bereitgestellt.

Wird 0 zurückgegeben, wenn der Vorgang erfolgreich war, oder ein Fehlercode, der kleiner als 0 ist.

Definition in Zeile 66 der Datei 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)
Deprecated:
Signiert Daten mit einem zuvor generierten Schlüssel-Blob. Dazu kann entweder ein asymmetrischer Schlüssel oder ein geheimer Schlüssel verwendet werden.

Wird 0 zurückgegeben, wenn der Vorgang erfolgreich war, oder ein Fehlercode kleiner als 0.

Definition in Zeile 108 der Datei 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)

Stellt Daten für einen laufenden kryptografischen Vorgang bereit und empfängt möglicherweise eine Ausgabe von diesem Vorgang, der mit begin() begonnen wurde.

Wenn „operation_handle“ ungültig ist, gibt update() den Fehler KM_ERROR_INVALID_OPERATION_HANDLE zurück.

update() verarbeitet möglicherweise nicht alle Daten im Datenpuffer. update() gibt die verbrauchte Menge in *data_consumed zurück. Der Aufrufer sollte die nicht verwendeten Daten in einem nachfolgenden Aufruf angeben.

Parameter
[in] dev Die Keymaster-Gerätestruktur.
[in] operation_handle Der Vorgangs-Handle, der von begin() zurückgegeben wird.
[in] in_params Zusätzliche Parameter für den Vorgang. Bei AEAD-Modi wird damit KM_TAG_ADDITIONAL_DATA angegeben. Zusätzliche Daten können in mehreren Aufrufen von update() bereitgestellt werden, aber nur, bis Eingabedaten vorhanden sind.
[in] Eingabe Zu verarbeitende Daten gemäß den Parametern, die im Aufruf von begin() festgelegt wurden. Hinweis: Bei update() werden möglicherweise nicht alle angegebenen Daten verwendet. Weitere Informationen finden Sie unter input_consumed .
[out] input_consumed Die Datenmenge, die durch update() verbraucht wurde. Wenn dieser Wert unter dem angegebenen Betrag liegt, sollte der Aufrufer den Rest in einem nachfolgenden Aufruf von update() angeben.
[out] out_params Ausgabeparameter Wird verwendet, um zusätzliche Daten aus dem Vorgang zurückzugeben. Der Aufrufer übernimmt die Inhaberschaft des Ausgabeparameter-Arrays und muss es mit keymaster_free_param_set() freigeben. „out_params“ kann auf „NULL“ gesetzt werden, wenn keine Ausgabeparameter erwartet werden. Wenn „out_params“ NULL ist und Ausgabeparameter generiert werden, gibt begin() den Fehlerwert „KM_ERROR_OUTPUT_PARAMETER_NULL“ zurück.
[out] output Die Ausgabedaten, falls vorhanden. Der Aufrufer übernimmt die Inhaberschaft des zugewiesenen Buffers. „output“ darf nicht NULL sein.

Hinweis: update() liefert möglicherweise keine Ausgabe. In diesem Fall ist output->data_length gleich null und output->data ist entweder NULL oder hat eine Länge von null. Der Aufrufer sollte es daher immer mit free() freigeben.

Definition in Zeile 495 der Datei 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)
Deprecated:
Prüft Daten, die mit einem Schlüssel-Blob signiert wurden. Dazu kann entweder ein asymmetrischer Schlüssel oder ein geheimer Schlüssel verwendet werden.

Wird 0 bei erfolgreicher Bestätigung oder ein Fehlercode kleiner als 0 zurückgegeben.

Definition in Zeile 118 der Datei keymaster1.h .


Die Dokumentation für diese Struktur wurde aus der folgenden Datei generiert: