keymaster1_device 構造体のリファレンス

keymaster1_device 構造体のリファレンス

#include < keymaster1.h >

データフィールド

構造体 hw_device_t一般
uint32_tクライアントのバージョン
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_t signed_data_length, const uint8_t *signature, const size_t signed_length)
keymaster_error_t (* get_supported_algorithms )(const struct keymaster1_device *dev, keymaster_algorithm_t **アルゴリズム, size_t *algorithms_length)
keymaster_error_t (* get_supported_block_modes )(const struct keymaster1_device *dev, keymaster_algorithm_tアルゴリズム, keymaster_Purpose_t目的, keymaster_block_mode_t **モード, size_t *modes_length)
keymaster_error_t (* get_supported_pa​​dding_modes )(const struct keymaster1_device *dev, keymaster_algorithm_tアルゴリズム, keymaster_Purpose_t目的, keymaster_padding_t **モード, 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 **formats, size_t *formats_length)
keymaster_error_t (* get_supported_export_formats )(const struct keymaster1_device *dev, keymaster_algorithm_tアルゴリズム, 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 **特性)
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 **特性)
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 (* import_key )(const struct keymaster1_device *dev, keymaster_key_format_t import_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 purposes, 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 (*終了)(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.h28行目の定義。

フィールドドキュメント

keymaster_error_t (* 中止)(const struct keymaster1_device *dev, keymaster_operation_handle_t操作ハンドル)

begin()で始まる暗号化操作を中止し、すべての内部リソースを解放し、 operation_handleを無効にします。

ファイルkeymaster1.h531行目の定義。

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

キーマスターによって使用される RNG にエントロピーを追加します。この方法で追加されたエントロピーが、使用されるエントロピーの唯一のソースではないことが保証されており、RNG に (任意のソースから) データがシードされている場合、攻撃者が予測できない (またはコントロール)の場合、RNG 出力はランダムと区別できなくなります。したがって、いずれかのソースからのエントロピーが良好であれば、出力も良好になります。

パラメーター
[で]開発者キーマスターデバイスの構造。
[で]データランダムなデータが混入します。
[で]データの長さdataの長さ。

ファイルkeymaster1.h242行目の定義。

keymaster_error_t (* begin)(const struct keymaster1_device *dev, keymaster_Purpose_t purposes, 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 として指定する必要があることに注意してください。
[で]操作に使用するキー。 keypurposeと互換性のある目的が必要であり、その使用要件がすべて満たされている必要があり、満たされていない場合、 begin()は適切なエラー コードを返します。
[で] in_params操作の追加パラメータ。これは通常、KM_TAG_AUTH_TOKEN を使用して認証データを提供するために使用されます。 KM_TAG_APPLICATION_ID または KM_TAG_APPLICATION_DATA が生成中に指定された場合は、ここで指定する必要があります。そうしないと、操作は KM_ERROR_INVALID_KEY_BLOB で失敗します。 nonce または IV を必要とする操作の場合、KM_TAG_CALLER_NONCE で生成されたキーの in_params にタグ KM_TAG_NONCE が含まれる場合があります。 AEAD 操作の場合、ここで KM_TAG_CHUNK_SIZE を指定します。
[外] out_params出力パラメータ。オペレーションの初期化から追加データを返すために使用されます。特に、IV または nonce を生成するオペレーションから IV または nonce を返すために使用されます。呼び出し元は出力パラメーター配列の所有権を取得し、 keymaster_free_param_set()を使用して解放する必要があります。出力パラメータが予期されない場合は、out_params を NULL に設定できます。 out_params が NULL で、出力パラメーターが生成された場合、 begin()は KM_ERROR_OUTPUT_PARAMETER_NULL を返します。
[外]操作ハンドル新しく作成された操作ハンドル。 update()finish()またはabort()に渡す必要があります。 Operation_handle が NULL の場合、 begin() はKM_ERROR_OUTPUT_PARAMETER_NULL を返します。

ファイルkeymaster1.h451行目の定義。

uint32_t クライアントのバージョン

これは非推奨です。代わりに、keymaster_module の初期化で新しい「module_api_version」フィールドと「hal_api_version」フィールドを使用してください。

ファイルkeymaster1.h41行目の定義。

構造体 hw_device_t共通

キーマスターデバイスの一般的なメソッド。この構造体のユーザーは、 hw_device_tkeymaster_device を参照することがわかっているコンテキストで hw_device_t を keymaster_device ポインターにキャストするため、これは keymaster_device の最初のメンバーである必要があります

ファイルkeymaster1.h35行目の定義。

void* コンテキスト

ファイルkeymaster1.h48行目の定義。

int(* delete_all)(const struct keymaster1_device *dev)
非推奨:
ハードウェア キーストア内のすべてのキーを削除します。キーストアが完全にリセットされる場合に使用されます。

この関数はオプションであり、実装されていない場合は NULL に設定する必要があります。

成功した場合は 0 を返すか、0 未満のエラー コードを返します。

ファイルkeymaster1.h100行目の定義。

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

ハードウェア キーストア内のすべてのキーを削除します。キーストアが完全にリセットされる場合に使用されます。この関数を呼び出した後は、以前に生成またはインポートされたキー BLOB をどの操作にも使用できなくなります。

この関数はオプションであり、実装されていない場合は NULL に設定する必要があります。

パラメーター
[で]開発者キーマスターデバイスの構造。

ファイルkeymaster1.h407行目の定義。

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

キー BLOB に関連付けられたキーまたはキー ペアを削除します。この関数を呼び出した後は、そのキーを他の操作に使用することはできなくなります。外部の信頼のルートからのキー (現在の信頼のルートでは使用できないキー) に適用される可能性があります。

この関数はオプションであり、実装されていない場合は NULL に設定する必要があります。

パラメーター
[で]開発者キーマスターデバイスの構造。
[で]削除するキー。

ファイルkeymaster1.h395行目の定義。

int(* delete_keypair)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
非推奨:
キー BLOB に関連付けられたキー ペアを削除します。

この関数はオプションであり、実装されていない場合は NULL に設定する必要があります。

成功した場合は 0 を返すか、0 未満のエラー コードを返します。

ファイルkeymaster1.h88行目の定義。

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_dataの長さ。

ファイルkeymaster1.h377行目の定義。

keymaster_error_t (* 終了)(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無効にします。

パラメーター
[で]開発者キーマスターデバイスの構造。
[で]操作ハンドルbegin()によって返される操作ハンドル。このハンドルは無効になります。
[で]パラメータ操作の追加パラメータ。 AEAD モードの場合、これは KM_TAG_ADDITIONAL_DATA を指定するために使用されますが、これはupdate()に入力データが提供されなかった場合に限ります。
[で]サインbegin()呼び出しで指定された目的が KM_PURPOSE_VERIFY であった場合に検証される署名。
[外]出力出力データ (存在する場合)。呼び出し元は、割り当てられたバッファの所有権を引き受けます。

終了中の操作が署名検証または AEAD モード復号化であり、検証が失敗した場合、 finish()は KM_ERROR_VERIFICATION_FAILED を返します。

ファイルkeymaster1.h521行目の定義。

uint32_t フラグ

keymaster_common.hの keymaster0_devices::flags に定義されているフラグを参照してください。

ファイルkeymaster1.h46行目の定義。

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 **特性)

キーまたはキー ペアを生成し、キー 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
パラメーター
[で]開発者キーマスターデバイスの構造。
[で]パラメータ鍵生成パラメータの配列。
[で] params_count paramsの長さ。
[外]キーブロブ生成されたキーを返します。 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.h282行目の定義。

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.h56行目の定義。

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 **特性)

指定されたキーの特性を返すか、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 は返されないことに注意してください。

パラメーター
[で]開発者キーマスターデバイスの構造。
[で]キーブロブ特性を取得するためのキー。
[で]クライアントIDクライアント ID データ、または関連付けられていない場合は NULL。
[で]アプリIDアプリデータ、または関連付けられていない場合は NULL。
[外]特徴主な特徴。

ファイルkeymaster1.h309行目の定義。

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.h76行目の定義。

keymaster_error_t (* get_supported_algorithms)(const struct keymaster1_device *dev, keymaster_algorithm_t **アルゴリズム, size_t *algorithms_length)

サポートされているアルゴリズムを取得します。

パラメーター
[で]開発者キーマスターデバイスの構造。
[外]アルゴリズムサポートされるアルゴリズムの配列。呼び出し元は配列の所有権を取得し、それを free() する必要があります。
[外]アルゴリズムの長さalgorithmsの長さ。

ファイルkeymaster1.h133行目の定義。

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)

指定されたアルゴリズムでサポートされているブロック モードを取得します。

パラメーター
[で]開発者キーマスターデバイスの構造。
[で]アルゴリズムサポートされているモードが返されるアルゴリズム。
[外]モードサポートされるモードの配列。呼び出し元は配列の所有権を取得し、それを free() する必要があります。
[外]モードの長さmodesの長さ。

ファイルkeymaster1.h149行目の定義。

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の長さ。

ファイルkeymaster1.h187行目の定義。

keymaster_error_t (* get_supported_export_formats)(const struct keymaster1_device *dev, keymaster_algorithm_tアルゴリズム, keymaster_key_format_t **formats, size_t *formats_length)

指定されたアルゴリズムのキーでサポートされているキーのエクスポート形式を取得します。呼び出し元は、割り当てられた配列の所有権を引き受けます。

パラメーター
[で]開発者キーマスターデバイスの構造。
[で]アルゴリズムサポートされている形式が返されるアルゴリズム。
[外]フォーマットサポートされている形式の配列。呼び出し元は配列の所有権を取得し、それを free() する必要があります。
[外]フォーマットの長さformatsの長さ。

ファイルkeymaster1.h224行目の定義。

keymaster_error_t (* get_supported_import_formats)(const struct keymaster1_device *dev, keymaster_algorithm_tアルゴリズム, keymaster_key_format_t **formats, size_t *formats_length)

指定されたアルゴリズムのキーでサポートされているキーのインポート形式を取得します。呼び出し元は、割り当てられた配列の所有権を引き受けます。

パラメーター
[で]開発者キーマスターデバイスの構造。
[で]アルゴリズムサポートされている形式が返されるアルゴリズム。
[外]フォーマットサポートされている形式の配列。呼び出し元は配列の所有権を取得し、それを free() する必要があります。
[外]フォーマットの長さformatsの長さ。

ファイルkeymaster1.h206行目の定義。

keymaster_error_t (* get_supported_pa​​dding_modes)(const struct keymaster1_device *dev, keymaster_algorithm_tアルゴリズム, keymaster_Purpose_t目的, keymaster_padding_t **modes, size_t *modes_length)

指定されたアルゴリズムでサポートされているパディング モードを取得します。呼び出し元は、割り当てられた配列の所有権を引き受けます。

パラメーター
[で]開発者キーマスターデバイスの構造。
[で]アルゴリズムサポートされているパディング モードが返されるアルゴリズム。
[外]モードパディングモードの配列がサポートされています。呼び出し元は配列の所有権を取得し、それを free() する必要があります。
[外]モードの長さmodesの長さ。

ファイルkeymaster1.h168行目の定義。

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 タグと値のペアとして定義されます。完全なリストについては、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_data でキーデータの形式を指定します。
[外]キーブロブ不透明なキー BLOB を返すために使用されます。 NULL 以外でなければなりません。呼び出し元は、含まれている key_material の所有権を想定します。
[外]特徴インポートされたキーの特性を返すために使用されます。 NULL の場合もあり、その場合は特性は返されません。 NULL 以外の場合、呼び出し元は所有権を引き継ぎ、 keymaster_free_characteristics()で割り当てを解除する必要があります。 KM_TAG_ROOT_OF_TRUST、KM_TAG_APPLICATION_ID、および KM_TAG_APPLICATION_DATA は返されないことに注意してください。

ファイルkeymaster1.h357行目の定義。

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 形式になります。返されたキー BLOB は不透明であり、後で署名と検証のために提供されます。

戻り値: 成功した場合は 0、または 0 未満のエラー コード。

ファイルkeymaster1.h66行目の定義。

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.h108行目の定義。

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 で消費された量を返します。呼び出し元は、後続の呼び出しで未消費のデータを提供する必要があります。

パラメーター
[で]開発者キーマスターデバイスの構造。
[で]操作ハンドルbegin()によって返される操作ハンドル。
[で] in_params操作の追加パラメータ。 AEAD モードの場合、これは KM_TAG_ADDITIONAL_DATA を指定するために使用されます。追加データはupdate()への複数回の呼び出しで提供される可能性がありますが、それは入力データが提供されるまでであることに注意してください。
[で]入力begin()の呼び出しで確立されたパラメータごとに処理されるデータ。 update() は、提供されたデータをすべて消費する場合と消費しない場合があることに注意してください。 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 は 0 になり、output->data は NULL または長さ 0 のいずれかになります (したがって、呼び出し元は常に free() する必要があります)。

ファイルkeymaster1.h495行目の定義。

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 signed_length)
非推奨:
キー BLOB で署名されたデータを検証します。これには、非対称キーまたは秘密キーのいずれかを使用できます。

戻り値: 検証が成功した場合は 0、または 0 未満のエラー コード。

ファイルkeymaster1.h118行目の定義。


この構造体のドキュメントは次のファイルから生成されました。