keymaster1_device構造体リファレンス
#include < keymaster1.h >
データフィールド | |
struct hw_device_t | 一般 |
uint32_t | client_version |
uint32_t | フラグ |
空所 * | 環境 |
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_tsigned_data_length、const uint8_t * signature、const size_tsignature_length) |
keymaster_error_t (* | get_supported_algorithms )(const struct keymaster1_device * dev、 keymaster_algorithm_t ** alarmithms、size_t * alarmithms_length) |
keymaster_error_t (* | get_supported_block_modes )(const struct keymaster1_device * dev、 keymaster_algorithm_tアルゴリズム、 keymaster_purpose_t目的、 keymaster_block_mode_t ** modes、size_t * modes_length) |
keymaster_error_t (* | get_supported_padding_modes )(const struct keymaster1_device * dev、 keymaster_algorithm_tアルゴリズム、 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アルゴリズム、 keymaster_purpose_t目的、 keymaster_digest_t **ダイジェスト、size_t * digests_length) |
keymaster_error_t (* | get_supported_import_formats )(const struct keymaster1_device * dev、 keymaster_algorithm_tアルゴリズム、 keymaster_key_format_t ** format、size_t * format_length) |
keymaster_error_t (* | get_supported_export_formats )(const struct keymaster1_device * dev、 keymaster_algorithm_tアルゴリズム、 keymaster_key_format_t ** format、size_t * format_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 **特性) |
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 (* | 中止)(const struct keymaster1_device * dev、 keymaster_operation_handle_t operation_handle) |
詳細な説明
Keymaster1デバイス定義
keymaster1.hファイルの28行で定義されています。
フィールドドキュメント
keymaster_error_t (* abort)(const struct keymaster1_device * dev、 keymaster_operation_handle_t operation_handle) |
begin()で開始された暗号化操作を中止し、すべての内部リソースを解放して、 operation_handle
を無効にします。
keymaster1.hファイルの531行で定義されています。
keymaster_error_t (* add_rng_entropy)(const struct keymaster1_device * dev、const uint8_t * data、size_t data_length) |
キーマスターが使用するRNGにエントロピーを追加します。この方法で追加されたエントロピーは、使用されるエントロピーの唯一のソースではないことが保証され、RNGが(任意のソースから)シードされた場合、攻撃者が予測できない(または制御)、RNG出力はランダムと区別できません。したがって、任意のソースからのエントロピーが良好であれば、出力も良好になります。
- パラメーター
[の] 開発者 キーマスターデバイスの構造。 [の] データ 混合するランダムデータ。 [の] data_length data
の長さ。
keymaster1.hファイルの242行で定義されています。
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) |
指定されたキーを使用して暗号化操作を開始します。すべてが順調である場合、 begin()はKM_ERROR_OKを返し、 update() 、 finish() 、またはabort()への後続の呼び出しに渡す必要がある操作ハンドルを作成します。
キーマスター実装が内部操作状態をクリーンアップできるように、 begin()の各呼び出しをfinish()またはabort()の後続の呼び出しとペアにすることが重要です。これを行わないと、内部状態空間またはその他の内部リソースがリークし、操作用のスペースが不足したときに、 begin()が最終的にKM_ERROR_TOO_MANY_OPERATIONSを返す可能性があります。 begin() 、 update() 、 finish()からのKM_ERROR_OK以外の結果は、暗黙的に操作を中止します。この場合、 abort()を呼び出す必要はありません(呼び出された場合はKM_ERROR_INVALID_OPERATION_HANDLEを返します)。
- パラメーター
[の] 開発者 キーマスターデバイスの構造。 [の] 目的 操作の目的は、KM_PURPOSE_ENCRYPT、KM_PURPOSE_DECRYPT、KM_PURPOSE_SIGN、またはKM_PURPOSE_VERIFYのいずれかです。 AEADモードの場合、暗号化と復号化はそれぞれ署名と検証を意味しますが、KM_PURPOSE_ENCRYPTおよびKM_PURPOSE_DECRYPTとして指定する必要があることに注意してください。 [の] 鍵 操作に使用するキー。 key
にはpurpose
と互換性のある目的があり、その使用要件がすべて満たされている必要があります。そうでない場合、 begin()は適切なエラーコードを返します。[の] in_params 操作の追加パラメーター。これは通常、KM_TAG_AUTH_TOKENを使用して認証データを提供するために使用されます。生成中にKM_TAG_APPLICATION_IDまたはKM_TAG_APPLICATION_DATAが指定された場合は、ここで指定する必要があります。指定しないと、KM_ERROR_INVALID_KEY_BLOBで操作が失敗します。ナンスまたはIVを必要とする操作の場合、KM_TAG_CALLER_NONCEで生成されたキーでは、in_paramsにタグKM_TAG_NONCEが含まれる場合があります。 AEAD操作の場合、KM_TAG_CHUNK_SIZEがここで指定されます。 [アウト] out_params 出力パラメータ。操作の初期化から追加のデータを返すために使用されます。特に、IVまたはナンスを生成する操作からIVまたはナンスを返すために使用されます。呼び出し元は出力パラメーター配列の所有権を取得し、 keymaster_free_param_set()を使用してそれを解放する必要があります。出力パラメータが予期されていない場合は、out_paramsをNULLに設定できます。 out_paramsがNULLで、出力パラメーターが生成された場合、 begin()はKM_ERROR_OUTPUT_PARAMETER_NULLを返します。 [アウト] operation_handle update() 、 finish() 、またはabort()に渡す必要がある新しく作成された操作ハンドル。 operation_handleがNULLの場合、 begin()はKM_ERROR_OUTPUT_PARAMETER_NULLを返します。
keymaster1.hファイルの451行で定義されています。
uint32_t client_version |
これは非推奨です。代わりに、keymaster_moduleの初期化で新しい「module_api_version」フィールドと「hal_api_version」フィールドを使用してください。
keymaster1.hファイルの41行で定義されています。
struct hw_device_t common |
キーマスターデバイスの一般的な方法。この構造のユーザーは、hw_device_tがkeymaster_deviceを参照していることがわかっているコンテキストで、 hw_device_tをkeymaster_deviceポインターにキャストするため、これはkeymaster_deviceの最初のメンバーである必要があります。
keymaster1.hファイルの35行で定義されています。
void*コンテキスト |
keymaster1.hファイルの48行で定義されています。
int(* delete_all)(const struct keymaster1_device * dev) |
- 非推奨:
- ハードウェアキーストア内のすべてのキーを削除します。キーストアが完全にリセットされたときに使用されます。
この関数はオプションであり、実装されていない場合はNULLに設定する必要があります。
成功した場合は0を返し、0未満のエラーコードを返します。
keymaster1.hファイルの100行で定義されています。
keymaster_error_t (* delete_all_keys)(const struct keymaster1_device * dev) |
ハードウェアキーストア内のすべてのキーを削除します。キーストアが完全にリセットされたときに使用されます。この関数を呼び出した後、以前に生成またはインポートされたキーブロブを操作に使用することはできなくなります。
この関数はオプションであり、実装されていない場合はNULLに設定する必要があります。
- パラメーター
[の] 開発者 キーマスターデバイスの構造。
keymaster1.hファイルの407行で定義されています。
keymaster_error_t (* delete_key)(const struct keymaster1_device * dev、const keymaster_key_blob_t * key) |
キーBLOBに関連付けられているキーまたはキーペアを削除します。この関数を呼び出した後、他の操作にキーを使用することはできなくなります。外部の信頼のルートからのキーに適用される場合があります(現在の信頼のルートでは使用できないキー)。
この関数はオプションであり、実装されていない場合はNULLに設定する必要があります。
- パラメーター
[の] 開発者 キーマスターデバイスの構造。 [の] 鍵 削除するキー。
keymaster1.hファイルの395行で定義されています。
int(* delete_keypair)(const struct keymaster1_device * dev、const uint8_t * key_blob、const size_t key_blob_length) |
- 非推奨:
- キーBLOBに関連付けられているキーペアを削除します。
この関数はオプションであり、実装されていない場合はNULLに設定する必要があります。
成功した場合は0を返し、0未満のエラーコードを返します。
keymaster1.hファイルの88行で定義されています。
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) |
公開鍵をエクスポートし、指定された形式でバイト配列を返します。
- パラメーター
[の] 開発者 キーマスターデバイスの構造。 [の] export_format キーのエクスポートに使用される形式。 [の] key_to_export エクスポートするための鍵。 [アウト] データのエクスポート エクスポートされたキーマテリアル。発信者が所有権を引き継ぎます。 [アウト] export_data_length export_data
の長さ。
keymaster1.hファイルの377行で定義されています。
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) |
begin()で開始された暗号化操作を終了し、 operation_handle
を無効にします。
- パラメーター
[の] 開発者 キーマスターデバイスの構造。 [の] operation_handle begin()によって返される操作ハンドル。このハンドルは無効になります。 [の] パラメータ 操作の追加パラメーター。 AEADモードの場合、これはKM_TAG_ADDITIONAL_DATAを指定するために使用されますが、 update()に入力データが提供されなかった場合に限ります。 [の] サイン begin()呼び出しで指定された目的がKM_PURPOSE_VERIFYであった場合に検証される署名。 [アウト] 出力 出力データ(ある場合)。呼び出し元は、割り当てられたバッファーの所有権を引き継ぎます。
終了する操作が署名検証またはAEADモードの復号化であり、検証が失敗した場合、 finish()はKM_ERROR_VERIFICATION_FAILEDを返します。
keymaster1.hファイルの521行で定義されています。
uint32_tフラグ |
keymaster_common.hのkeymaster0_devices ::flagsに定義されているフラグを参照してください
keymaster1.hファイルの46行で定義されています。
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) |
キーまたはキーペアを生成し、キーBLOBおよび/またはキーの説明を返します。
キー生成パラメーターは、 params
で提供されるキーマスタータグ/値のペアとして定義されます。完全なリストについては、keymaster_tag_tを参照してください。有用なキーの生成に常に必要ないくつかの値は次のとおりです。
- KM_TAG_ALGORITHM;
- KM_TAG_PURPOSE;と
- (KM_TAG_USER_SECURE_IDおよびKM_TAG_USER_AUTH_TYPE)またはKM_TAG_NO_AUTH_REQUIRED。
KM_TAG_AUTH_TIMEOUTは、KM_TAG_NO_AUTH_REQUIREDが存在しない限り、通常は指定する必要があります。存在しない場合、ユーザーは使用するたびに認証する必要があります。
KM_TAG_BLOCK_MODE、KM_TAG_PADDING、KM_TAG_MAC_LENGTH、およびKM_TAG_DIGESTは、それらを必要とするアルゴリズムに指定する必要があります。
以下のタグは指定できません。それらの値は実装によって提供されます。
- KM_TAG_ORIGIN、
- KM_TAG_ROLLBACK_RESISTANT、
- KM_TAG_CREATION_DATETIME
- パラメーター
[の] 開発者 キーマスターデバイスの構造。 [の] パラメータ キー生成パラメーターの配列。 [の] params_count params
の長さ。[アウト] key_blob 生成されたキーを返します。 key_blob
はNULLであってはなりません。呼び出し元は所有権key_blob->key_materialを想定し、それをfree()する必要があります。[アウト] 特徴 NULL以外の場合、生成されたキーの特性を返します。 NULL以外の場合、呼び出し元は所有権を引き継ぎ、 keymaster_free_characteristics()の割り当てを解除する必要があります。 KM_TAG_ROOT_OF_TRUST、KM_TAG_APPLICATION_ID、およびKM_TAG_APPLICATION_DATAが返されることはないことに注意してください。
keymaster1.hファイルの282行で定義されています。
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) |
- 非推奨:
- 公開鍵と秘密鍵を生成します。返されたキーブロブは不透明であり、後で署名と検証のために提供する必要があります。
戻り値:成功した場合は0、または0未満のエラーコード。
keymaster1.hファイルの56行で定義されています。
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) |
指定されたキーの特性を返します。key_blobが無効な場合はKM_ERROR_INVALID_KEY_BLOBを返します(実装ではキーの整合性を完全に検証する必要があります)。 client_idとapp_dataは、キーが生成またはインポートされたときに提供されたIDとデータである必要があります。生成中に、KM_TAG_APPLICATION_IDやKM_TAG_APPLICATION_DATAが提供されなかった場合は、空である必要があります。これらの値は、返される特性には含まれていません。呼び出し元は、割り当てられた特性オブジェクトの所有権を引き継ぎます。このオブジェクトは、 keymaster_free_characteristics()で割り当てを解除する必要があります。
KM_TAG_ROOT_OF_TRUST、KM_TAG_APPLICATION_ID、およびKM_TAG_APPLICATION_DATAが返されることはないことに注意してください。
- パラメーター
[の] 開発者 キーマスターデバイスの構造。 [の] key_blob から特性を取得するための鍵。 [の] クライアントID クライアントIDデータ。関連付けられていない場合はNULL。 [の] app_id アプリデータ。関連付けられていない場合はNULL。 [アウト] 特徴 主な特徴。
keymaster1.hファイルの309行で定義されています。
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) |
- 非推奨:
- キーペアの公開キー部分を取得します。公開鍵は、X.509形式(Java標準)でエンコードされたバイト配列である必要があります。
戻り値:成功した場合は0、または0未満のエラーコード。エラーの場合、x509_dataは割り当てられません。
keymaster1.hファイルの76行で定義されています。
keymaster_error_t (* get_supported_algorithms)(const struct keymaster1_device * dev、 keymaster_algorithm_t ** Algorithms、size_t * alarmithms_length) |
サポートされているアルゴリズムを取得します。
- パラメーター
[の] 開発者 キーマスターデバイスの構造。 [アウト] アルゴリズム サポートされているアルゴリズムの配列。呼び出し元は配列の所有権を取得し、それをfree()する必要があります。 [アウト] Algorithms_length algorithms
の長さ。
keymaster1.hファイルの133行で定義されています。
keymaster_error_t (* get_supported_block_modes)(const struct keymaster1_device * dev、 keymaster_algorithm_tアルゴリズム、 keymaster_purpose_t Purpose 、 keymaster_block_mode_t ** modes、size_t * modes_length) |
指定されたアルゴリズムでサポートされているブロックモードを取得します。
- パラメーター
[の] 開発者 キーマスターデバイスの構造。 [の] アルゴリズム サポートされているモードが返されるアルゴリズム。 [アウト] モード サポートされているモードの配列。呼び出し元は配列の所有権を取得し、それをfree()する必要があります。 [アウト] mode_length modes
の長さ。
keymaster1.hファイルの149行で定義されています。
keymaster_error_t (* get_supported_digests)(const struct keymaster1_device * dev、 keymaster_algorithm_tアルゴリズム、 keymaster_purpose_t目的、 keymaster_digest_t **ダイジェスト、size_t * digests_length) |
指定されたアルゴリズムでサポートされているダイジェストを取得します。呼び出し元は、割り当てられたアレイの所有権を引き継ぎます。
- パラメーター
[の] 開発者 キーマスターデバイスの構造。 [の] アルゴリズム サポートされているダイジェストが返されるアルゴリズム。 [アウト] ダイジェスト サポートされているダイジェストの配列。呼び出し元は配列の所有権を取得し、それをfree()する必要があります。 [アウト] digests_length digests
の長さ。
keymaster1.hファイルの187行で定義されています。
keymaster_error_t (* get_supported_export_formats)(const struct keymaster1_device * dev、 keymaster_algorithm_tアルゴリズム、 keymaster_key_format_t ** format、size_t * format_length) |
指定されたアルゴリズムのキーでサポートされているキーエクスポート形式を取得します。呼び出し元は、割り当てられたアレイの所有権を引き継ぎます。
- パラメーター
[の] 開発者 キーマスターデバイスの構造。 [の] アルゴリズム サポートされている形式が返されるアルゴリズム。 [アウト] フォーマット サポートされているフォーマットの配列。呼び出し元は配列の所有権を取得し、それをfree()する必要があります。 [アウト] format_length formats
の長さ。
keymaster1.hファイルの224行で定義されています。
keymaster_error_t (* get_supported_import_formats)(const struct keymaster1_device * dev、 keymaster_algorithm_tアルゴリズム、 keymaster_key_format_t ** format、size_t * format_length) |
指定されたアルゴリズムのキーでサポートされているキーインポート形式を取得します。呼び出し元は、割り当てられたアレイの所有権を引き継ぎます。
- パラメーター
[の] 開発者 キーマスターデバイスの構造。 [の] アルゴリズム サポートされている形式が返されるアルゴリズム。 [アウト] フォーマット サポートされているフォーマットの配列。呼び出し元は配列の所有権を取得し、それをfree()する必要があります。 [アウト] format_length formats
の長さ。
keymaster1.hファイルの206行で定義されています。
keymaster_error_t (* get_supported_padding_modes)(const struct keymaster1_device * dev、 keymaster_algorithm_tアルゴリズム、 keymaster_purpose_t Purpose 、 keymaster_padding_t ** modes、size_t * modes_length) |
指定されたアルゴリズムでサポートされているパディングモードを取得します。呼び出し元は、割り当てられたアレイの所有権を引き継ぎます。
- パラメーター
[の] 開発者 キーマスターデバイスの構造。 [の] アルゴリズム サポートされているパディングモードが返されるアルゴリズム。 [アウト] モード サポートされているパディングモードの配列。呼び出し元は配列の所有権を取得し、それをfree()する必要があります。 [アウト] mode_length modes
の長さ。
keymaster1.hファイルの168行で定義されています。
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 **特性) |
キーまたはキーペアをインポートし、キーBLOBおよび/またはキーの説明を返します。
ほとんどのキーインポートパラメータは、「params」で提供されるキーマスタータグ/値のペアとして定義されます。完全なリストについては、keymaster_tag_tを参照してください。有用なキーのインポートに常に必要な値は次のとおりです。
- KM_TAG_ALGORITHM;
- KM_TAG_PURPOSE;と
- (KM_TAG_USER_SECURE_IDおよびKM_TAG_USER_AUTH_TYPE)またはKM_TAG_NO_AUTH_REQUIRED。
通常、KM_TAG_AUTH_TIMEOUTを指定する必要があります。指定しない場合、ユーザーは使用するたびに認証する必要があります。
次のタグは、指定されていない場合、デフォルト値を取ります。
- KM_TAG_KEY_SIZEは、デフォルトで提供されたキーのサイズになります。
- KM_TAG_RSA_PUBLIC_EXPONENTは、デフォルトで、提供されたキーの値になります(RSAキーの場合)。
以下のタグは指定できません。それらの値は実装によって提供されます。
- KM_TAG_ORIGIN、
- KM_TAG_ROLLBACK_RESISTANT、
- KM_TAG_CREATION_DATETIME
- パラメーター
[の] 開発者 キーマスターデバイスの構造。 [の] パラメータ インポートされたキーを定義するパラメーター。 [の] params_count params
のエントリ数。[の] key_format key_dataのキーデータの形式を指定します。 [アウト] key_blob 不透明なキーブロブを返すために使用されます。 NULL以外である必要があります。呼び出し元は、含まれているkey_materialの所有権を引き継ぎます。 [アウト] 特徴 インポートされたキーの特性を返すために使用されます。 NULLの場合があります。その場合、特性は返されません。 NULL以外の場合、呼び出し元は所有権を引き継ぎ、 keymaster_free_characteristics()の割り当てを解除する必要があります。 KM_TAG_ROOT_OF_TRUST、KM_TAG_APPLICATION_ID、およびKM_TAG_APPLICATION_DATAが返されることはないことに注意してください。
keymaster1.hファイルの357行で定義されています。
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) |
- 非推奨:
- 公開鍵と秘密鍵のペアをインポートします。インポートされたキーは、DERエンコーディング(Java標準)を使用したPKCS#8形式になります。返されたキーブロブは不透明であり、その後、署名と検証のために提供されます。
戻り値:成功した場合は0、または0未満のエラーコード。
keymaster1.hファイルの66行で定義されています。
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) |
- 非推奨:
- 以前に生成されたキーブロブを使用してデータに署名します。これは、非対称鍵または秘密鍵のいずれかを使用できます。
戻り値:成功した場合は0、または0未満のエラーコード。
keymaster1.hファイルの108行で定義されています。
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_ |
begin()で開始される進行中の暗号化操作にデータを提供し、場合によってはそこから出力を受け取ります。
operation_handleが無効な場合、 update()はKM_ERROR_INVALID_OPERATION_HANDLEを返します。
update()は、データバッファで提供されるすべてのデータを消費しない場合があります。 update()は、*data_consumedで消費された量を返します。呼び出し元は、後続の呼び出しで未消費のデータを提供する必要があります。
- パラメーター
[の] 開発者 キーマスターデバイスの構造。 [の] operation_handle begin()によって返される操作ハンドル。 [の] in_params 操作の追加パラメーター。 AEADモードの場合、これはKM_TAG_ADDITIONAL_DATAを指定するために使用されます。 update()への複数の呼び出しで追加のデータが提供される場合がありますが、入力データが提供されるまでのみであることに注意してください。 [の] 入力 begin()の呼び出しで確立されたパラメーターに従って、処理されるデータ。 update()は、提供されたすべてのデータを消費する場合としない場合があることに注意してください。 input_consumed
を参照してください。[アウト] input_consumed update()によって消費されたデータの量。これが提供された量より少ない場合、呼び出し元はupdate()への後続の呼び出しで残りを提供する必要があります。 [アウト] out_params 出力パラメータ。操作から追加のデータを返すために使用されます。呼び出し元は出力パラメーター配列の所有権を取得し、 keymaster_free_param_set()で解放する必要があります。出力パラメータが予期されていない場合は、out_paramsをNULLに設定できます。 out_paramsがNULLで、出力パラメーターが生成された場合、 begin()はKM_ERROR_OUTPUT_PARAMETER_NULLを返します。 [アウト] 出力 出力データ(ある場合)。呼び出し元は、割り当てられたバッファーの所有権を引き継ぎます。出力はNULLであってはなりません。
update()は出力を提供しない場合があることに注意してください。この場合、output-> data_lengthはゼロになり、output-> dataはNULLまたはゼロ長になります(したがって、呼び出し元は常にfree()する必要があります)。
keymaster1.hファイルの495行で定義されています。
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_tsigned_data_length、const uint8_t * signature、const size_t |
- 非推奨:
- キーブロブで署名されたデータを検証します。これは、非対称鍵または秘密鍵のいずれかを使用できます。
戻り値:検証が成功した場合は0、エラーコードは0未満。
keymaster1.hファイルの118行で定義されています。
この構造体のドキュメントは、次のファイルから生成されました。