keymaster1_device 構造体リファレンス
#include <
keymaster1.h
>
データ フィールド |
|
struct hw_device_t | common |
uint32_t | client_version |
uint32_t | フラグ |
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) |
詳細な説明
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) |
Keymaster が使用する RNG にエントロピーを追加します。この方法で追加されたエントロピーが、使用されるエントロピーの唯一のソースではないことが保証され、混合関数は安全である必要があります。つまり、攻撃者が予測(または制御)できないデータで RNG がシードされた場合、RNG の出力はランダムと区別できない必要があります。したがって、任意のソースからのエントロピーが良好であれば、出力も良好になります。
- パラメータ
-
[in] dev Keymaster デバイス構造。 [in] data 混ぜ込むランダムなデータ。 [in] 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 が返されます)。
- パラメータ
-
[in] dev Keymaster デバイス構造。 [in] 目的 オペレーションの目的。KM_PURPOSE_ENCRYPT、KM_PURPOSE_DECRYPT、KM_PURPOSE_SIGN、KM_PURPOSE_VERIFY のいずれかです。AEAD モードの場合、暗号化と復号はそれぞれ署名と検証を意味しますが、KM_PURPOSE_ENCRYPT と KM_PURPOSE_DECRYPT として指定する必要があります。 [in] キー オペレーションに使用する鍵。 key
はpurpose
と互換性のある目的を持ち、その使用要件をすべて満たしている必要があります。そうしないと、 begin() は適切なエラーコードを返します。[in] 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 |
Keymaster デバイスの一般的なメソッド。この構造体のユーザーは、 hw_device_t が keymaster_device を参照していることが判明しているコンテキストで、 hw_device_t を keymaster_device ポインタにキャストするため、このメンバーは keymaster_device の最初のメンバーである必要があります。
ファイル keymaster1.h の 35 行の定義。
void* context |
ファイル 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) |
ハードウェア キーストア内のすべての鍵を削除します。キーストアが完全にリセットされた場合に使用されます。この関数を呼び出した後、以前に生成またはインポートされた鍵の blob をオペレーションに使用することはできなくなります。
この関数は省略可能で、実装されていない場合は NULL に設定する必要があります。
- パラメータ
-
[in] dev Keymaster デバイス構造。
ファイル keymaster1.h の 407 行の定義。
keymaster_error_t (* delete_key)(const struct keymaster1_device *dev, const keymaster_key_blob_t *key) |
鍵 BLOB に関連付けられている鍵または鍵ペアを削除します。この関数を呼び出した後、他のオペレーションで鍵を使用することはできません。外部ルート オブ トラスト(現在のルート オブ トラストで使用できない鍵)の鍵に適用できます。
この関数は省略可能で、実装されていない場合は NULL に設定する必要があります。
- パラメータ
-
[in] dev Keymaster デバイス構造。 [in] キー 削除するキー。
ファイル 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) |
公開鍵をエクスポートし、指定された形式のバイト配列を返します。
- パラメータ
-
[in] dev Keymaster デバイス構造。 [in] export_format 鍵のエクスポートに使用する形式。 [in] key_to_export エクスポートする鍵。 [公開] export_data エクスポートされた鍵マテリアル。呼び出し元が所有権を取得します。 [公開] 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
を無効にします。
- パラメータ
-
[in] dev Keymaster デバイス構造。 [in] operation_handle begin() によって返されるオペレーション ハンドル。このハンドルは無効になります。 [in] params オペレーションの追加パラメータ。AEAD モードでは、 update() に入力データが提供されていない場合にのみ、KM_TAG_ADDITIONAL_DATA を指定するために使用されます。 [in] signature begin() 呼び出しで指定された目的が KM_PURPOSE_VERIFY の場合に検証される署名。 [公開] 出力 出力データ(ある場合)。呼び出し元は、割り振られたバッファの所有権を取得します。
終了するオペレーションが署名検証または AEAD モードの復号で、検証が失敗した場合、 finish() は KM_ERROR_VERIFICATION_FAILED を返します。
ファイル keymaster1.h の 521 行の定義。
uint32_t flags |
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 のタグと値のペアとして定義されます。完全なリストについては、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_NO_AUTH_REQUIRED が存在する場合を除き、KM_TAG_AUTH_TIMEOUT を指定する必要があります。指定しない場合、ユーザーは使用のたびに認証する必要があります。
必要なアルゴリズムには、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
- パラメータ
-
[in] dev Keymaster デバイス構造。 [in] params 鍵生成パラメータの配列。 [in] 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) |
- 非推奨:
- 公開鍵と秘密鍵を生成します。返される鍵 blob は不透明であり、署名と検証のために後で提供する必要があります。
戻り値: 成功した場合は 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 は返されません。
- パラメータ
-
[in] dev Keymaster デバイス構造。 [in] key_blob 特性を取得するキー。 [in] client_id クライアント ID データ。関連付けられていない場合は NULL。 [in] 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 *algorithms_length) |
サポートされているアルゴリズムを取得します。
- パラメータ
-
[in] dev Keymaster デバイス構造。 [公開] アルゴリズム サポートされているアルゴリズムの配列。呼び出し元は配列の所有権を取得し、free() する必要があります。 [公開] algorithms_length algorithms
の長さ。
ファイル keymaster1.h の 133 行 の定義。
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) |
指定されたアルゴリズムでサポートされているブロックモードを取得します。
- パラメータ
-
[in] dev Keymaster デバイス構造。 [in] アルゴリズム サポートされているモードが返されるアルゴリズム。 [公開] modes サポートされているモードの配列。呼び出し元は配列の所有権を取得し、free() する必要があります。 [公開] modes_length modes
の長さ。
ファイル keymaster1.h の 149 行 の定義。
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) |
指定されたアルゴリズムでサポートされているダイジェストを取得します。呼び出し元が割り振られた配列の所有権を取得します。
- パラメータ
-
[in] dev Keymaster デバイス構造。 [in] アルゴリズム サポートされているダイジェストが返されるアルゴリズム。 [公開] ダイジェスト ダイジェストの配列がサポートされています。呼び出し元は配列の所有権を取得し、free() する必要があります。 [公開] digests_length digests
の長さ。
ファイル keymaster1.h の 187 行 の定義。
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) |
指定されたアルゴリズムの鍵でサポートされている鍵のエクスポート形式を取得します。呼び出し元が割り振られた配列の所有権を取得します。
- パラメータ
-
[in] dev Keymaster デバイス構造。 [in] アルゴリズム サポートされている形式が返されるアルゴリズム。 [公開] 形式 サポートされている形式の配列。呼び出し元は配列の所有権を取得し、free() する必要があります。 [公開] formats_length formats
の長さ。
ファイル keymaster1.h の 224 行 の定義。
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) |
指定されたアルゴリズムの鍵でサポートされている鍵のインポート形式を取得します。呼び出し元が割り振られた配列の所有権を取得します。
- パラメータ
-
[in] dev Keymaster デバイス構造。 [in] アルゴリズム サポートされている形式が返されるアルゴリズム。 [公開] 形式 サポートされている形式の配列。呼び出し元は配列の所有権を取得し、free() する必要があります。 [公開] formats_length formats
の長さ。
ファイル keymaster1.h の 206 行 の定義。
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) |
指定されたアルゴリズムでサポートされているパディング モードを取得します。呼び出し元が割り振られた配列の所有権を取得します。
- パラメータ
-
[in] dev Keymaster デバイス構造。 [in] アルゴリズム サポートされているパディング モードが返されるアルゴリズム。 [公開] modes サポートされているパディング モードの配列。呼び出し元は配列の所有権を取得し、free() する必要があります。 [公開] modes_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 **characteristics) |
鍵または鍵ペアをインポートし、鍵 blob や鍵の説明を返します。
ほとんどの鍵インポート パラメータは、Keymaster のタグと値のペアとして定義され、「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
- パラメータ
-
[in] dev Keymaster デバイス構造。 [in] params インポートされた鍵を定義するパラメータ。 [in] params_count params
内のエントリの数。[in] key_format key_data 内の鍵データの形式を指定します。 [公開] key_blob 不透明な鍵 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 エンコードの PKCS#8 形式(Java 標準)になります。返される鍵 blob は不透明で、署名と検証のために後で提供されます。
戻り値: 成功した場合は 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) |
- 非推奨:
- 前に生成された鍵 blob を使用してデータを署名します。非対称鍵または秘密鍵を使用できます。
戻り値: 成功した場合は 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_t *output) |
begin() で開始された進行中の暗号オペレーションにデータを提供します。また、出力を受け取ることもあります。
operation_handle が無効な場合、 update() は KM_ERROR_INVALID_OPERATION_HANDLE を返します。
update() は、データバッファで提供されたすべてのデータを消費しない場合があります。 update() は、*data_consumed で消費された量を返します。呼び出し元は、未使用のデータを後続の呼び出しで提供する必要があります。
- パラメータ
-
[in] dev Keymaster デバイス構造。 [in] operation_handle begin() によって返されるオペレーション ハンドル。 [in] in_params オペレーションの追加パラメータ。AEAD モードでは、KM_TAG_ADDITIONAL_DATA を指定するために使用されます。追加データを複数回 update() に指定できますが、入力データが指定されるまでです。 [in] 入力 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_t signed_data_length, const uint8_t *signature, const size_t signature_length) |
- 非推奨:
- key-blob で署名されたデータを検証します。非対称鍵または秘密鍵を使用できます。
戻り値: 検証が成功した場合は 0、それ以外の場合は 0 未満のエラーコード。
ファイル keymaster1.h の 118 行 で定義されています。
この構造体のドキュメントは、次のファイルから生成されました。
- hardware/libhardware/include/hardware/ keymaster1.h