Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

keymaster1_device Справочник по структуре

keymaster1_device Справочник по структуре

#include < keymaster1.h >

Поля данных

структура hw_device_t общий
uint32_t client_version
uint32_t флаги
пустота * контекст
интервал (* 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)
интервал (* 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)
интервал (* 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)
интервал (* delete_keypair )(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
интервал (* delete_all )(const struct keymaster1_device *dev)
интервал (* 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)
интервал (* 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 signal_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 , цель 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 , 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 **digests, 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 (* 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 цель, 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

Определение в строке 28 файла keymaster1.h .

Полевая документация

keymaster_error_t (* abort)(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle)

Прерывает криптографическую операцию, начатую с помощью begin() , освобождая все внутренние ресурсы и делая недействительной operation_handle .

Определение в строке 531 файла keymaster1.h .

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

Добавляет энтропию к ГСЧ, используемому мастером ключей. Энтропия, добавляемая с помощью этого метода, гарантированно не является единственным используемым источником энтропии, а функция смешивания должна быть безопасной в том смысле, что, если ГСЧ заполнен (из любого источника) какими-либо данными, которые злоумышленник не может предсказать (или управление), то выход ГСЧ неотличим от случайного. Таким образом, если энтропия из любого источника хорошая, результат будет хорошим.

Параметры
[в] разработчик Структура устройства keymaster.
[в] данные Случайные данные для смешивания.
[в] длина_данных Длина data .

Определение в строке 242 файла keymaster1.h .

keymaster_error_t (* begin)(const struct keymaster1_device *dev, keymaster_purpose_t цель, 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, когда закончится место для операций. Любой результат, отличный от KM_ERROR_OK от begin() , update() или finish() , неявно прерывает операцию, и в этом случае abort() не нужно вызывать (и вернет KM_ERROR_INVALID_OPERATION_HANDLE при вызове).

Параметры
[в] разработчик Структура устройства keymaster.
[в] цель Цель операции, одна из 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.
[вне] дескриптор_операции Дескриптор вновь созданной операции, который необходимо передать в update() , finish() или abort() . Если operation_handle имеет значение NULL, функция begin() вернет значение KM_ERROR_OUTPUT_PARAMETER_NULL.

Определение в строке 451 файла keymaster1.h .

uint32_t версия_клиента

ЭТО УСТАРЕЛО. Вместо этого используйте новые поля «module_api_version» и «hal_api_version» в инициализации keymaster_module.

Определение в строке 41 файла keymaster1.h .

общая структура hw_device_t

Распространенные способы работы ключевого устройства. Это должен быть первый элемент keymaster_device, так как пользователи этой структуры будут приводить hw_device_t к указателю keymaster_device в контекстах, где известно, что hw_device_t ссылается на keymaster_device.

Определение в строке 35 файла keymaster1.h .

пустой* контекст

Определение в строке 48 файла keymaster1.h .

int(* delete_all)(const struct keymaster1_device *dev)
Устарело:
Удаляет все ключи в аппаратном хранилище ключей. Используется при полном сбросе хранилища ключей.

Эта функция является необязательной и должна быть установлена ​​в NULL, если она не реализована.

Возвращает 0 в случае успеха или код ошибки меньше 0.

Определение в строке 100 файла keymaster1.h .

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

Удаляет все ключи в аппаратном хранилище ключей. Используется при полном сбросе хранилища ключей. После вызова этой функции будет невозможно использовать какие-либо ранее сгенерированные или импортированные ключевые блобы для каких-либо операций.

Эта функция является необязательной и должна быть установлена ​​в NULL, если она не реализована.

Параметры
[в] разработчик Структура устройства keymaster.

Определение в строке 407 файла keymaster1.h .

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

Удаляет ключ или пару ключей, связанную с большим двоичным объектом. После вызова этой функции ключ нельзя будет использовать для каких-либо других операций. Может применяться к ключам из иностранных корней доверия (ключи, которые нельзя использовать в рамках текущего корня доверия).

Эта функция является необязательной и должна быть установлена ​​в NULL, если она не реализована.

Параметры
[в] разработчик Структура устройства keymaster.
[в] ключ Ключ, который нужно удалить.

Определение в строке 395 файла keymaster1.h .

int(* delete_keypair)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
Устарело:
Удаляет пару ключей, связанную с большим двоичным объектом.

Эта функция является необязательной и должна быть установлена ​​в NULL, если она не реализована.

Возвращает 0 в случае успеха или код ошибки меньше 0.

Определение в строке 88 файла 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)

Экспортирует открытый ключ, возвращая массив байтов в указанном формате.

Параметры
[в] разработчик Структура устройства keymaster.
[в] экспорт_формат Формат, который будет использоваться для экспорта ключа.
[в] key_to_export Ключ для экспорта.
[вне] экспорт данных Экспортируемый ключевой материал. Вызывающий принимает право собственности.
[вне] export_data_length Длина export_data .

Определение в строке 377 файла keymaster1.h .

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 .

Параметры
[в] разработчик Структура устройства keymaster.
[в] дескриптор_операции Дескриптор операции, возвращаемый begin() . Этот дескриптор будет признан недействительным.
[в] параметры Дополнительные параметры операции. Для режимов AEAD это используется для указания KM_TAG_ADDITIONAL_DATA, но только в том случае, если для update() не были предоставлены входные данные.
[в] подпись Подпись, подлежащая проверке, если цель, указанная в вызове begin() , была KM_PURPOSE_VERIFY.
[вне] выход Выходные данные, если они есть. Вызывающий берет на себя владение выделенным буфером.

Если завершаемая операция является проверкой подписи или расшифровкой и проверкой в ​​режиме AEAD, завершается сбоем, то finish() вернет KM_ERROR_VERIFICATION_FAILED.

Определение в строке 521 файла keymaster1.h .

флаги uint32_t

См. флаги, определенные для keymaster0_devices::flags в keymaster_common.h

Определение в строке 46 файла keymaster1.h .

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 **характеристики)

Создает ключ или пару ключей, возвращая большой двоичный объект ключа и/или описание ключа.

Параметры генерации ключей определяются как пары тег/значение мастера ключей, указанные в 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
Параметры
[в] разработчик Структура устройства keymaster.
[в] параметры Массив параметров генерации ключей.
[в] 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 никогда не возвращаются.

Определение в строке 282 файла 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)
Устарело:
Генерирует открытый и закрытый ключи. Возвращенный ключевой BLOB-объект является непрозрачным и впоследствии должен быть предоставлен для подписи и проверки.

Возвращает: 0 в случае успеха или код ошибки меньше 0.

Определение в строке 56 файла 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 **характеристики)

Возвращает характеристики указанного ключа или KM_ERROR_INVALID_KEY_BLOB, если key_blob недействителен (реализации должны полностью проверять целостность ключа). client_id и app_data должны быть идентификатором и данными, предоставленными при генерации или импорте ключа, или пустыми, если KM_TAG_APPLICATION_ID и/или KM_TAG_APPLICATION_DATA не были предоставлены во время генерации. Эти значения не включаются в возвращаемые характеристики. Вызывающий объект принимает на себя владение выделенным объектом характеристик, который должен быть освобожден с помощью keymaster_free_characteristics() .

Обратите внимание, что KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID и KM_TAG_APPLICATION_DATA никогда не возвращаются.

Параметры
[в] разработчик Структура устройства keymaster.
[в] key_blob Ключ для получения характеристик.
[в] ID клиента Данные идентификатора клиента или NULL, если они не связаны.
[в] app_id Данные приложения или NULL, если они не связаны.
[вне] характеристики Ключевые характеристики.

Определение в строке 309 файла 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)
Устарело:
Получает открытый ключ из пары ключей. Открытый ключ должен быть в формате X.509 (стандарт Java) закодированном массиве байтов.

Возвраты: 0 в случае успеха или код ошибки меньше 0. В случае ошибки x509_data не должен выделяться.

Определение в строке 76 файла keymaster1.h .

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

Получает поддерживаемые алгоритмы.

Параметры
[в] разработчик Структура устройства keymaster.
[вне] алгоритмы Массив поддерживаемых алгоритмов. Вызывающий получает право собственности на массив и должен использовать функцию free().
[вне] алгоритмы_длина Длина algorithms .

Определение в строке 133 файла keymaster1.h .

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.
[в] алгоритм Алгоритм, для которого будут возвращены поддерживаемые режимы.
[вне] режимы Массив поддерживаемых режимов. Вызывающий получает право собственности на массив и должен использовать функцию free().
[вне] mode_length Длина modes .

Определение в строке 149 файла keymaster1.h .

keymaster_error_t (* get_supported_digests) (const struct keymaster1_device *dev, алгоритм keymaster_algorithm_t , цель keymaster_purpose_t , keymaster_digest_t **digests, size_t *digests_length)

Получает дайджесты, поддерживаемые для указанного алгоритма. Вызывающий объект становится владельцем выделенного массива.

Параметры
[в] разработчик Структура устройства keymaster.
[в] алгоритм Алгоритм, для которого будут возвращены поддерживаемые дайджесты.
[вне] переваривает Поддерживается массив дайджестов. Вызывающий получает право собственности на массив и должен использовать функцию free().
[вне] дайджесты_длина Длина digests .

Определение в строке 187 файла keymaster1.h .

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.
[в] алгоритм Алгоритм, для которого будут возвращены поддерживаемые форматы.
[вне] форматы Массив поддерживаемых форматов. Вызывающий получает право собственности на массив и должен использовать функцию free().
[вне] форматы_длина Длина formats .

Определение в строке 224 файла keymaster1.h .

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.
[в] алгоритм Алгоритм, для которого будут возвращены поддерживаемые форматы.
[вне] форматы Массив поддерживаемых форматов. Вызывающий получает право собственности на массив и должен использовать функцию free().
[вне] форматы_длина Длина formats .

Определение в строке 206 файла keymaster1.h .

keymaster_error_t (* get_supported_padding_modes) (const struct keymaster1_device *dev, алгоритм keymaster_algorithm_t , назначение keymaster_purpose_t , keymaster_padding_t **modes, size_t *modes_length)

Получает режимы заполнения, поддерживаемые для указанного алгоритма. Вызывающий объект становится владельцем выделенного массива.

Параметры
[в] разработчик Структура устройства keymaster.
[в] алгоритм Алгоритм, для которого будут возвращены поддерживаемые режимы заполнения.
[вне] режимы Массив поддерживаемых режимов заполнения. Вызывающий получает право собственности на массив и должен использовать функцию free().
[вне] mode_length Длина modes .

Определение в строке 168 файла keymaster1.h .

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 **характеристики)

Импортирует ключ или пару ключей, возвращая большой двоичный объект ключа и/или описание ключа.

Большинство ключевых параметров импорта определяются как пары тег/значение мастера ключей, указанные в «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
Параметры
[в] разработчик Структура устройства keymaster.
[в] параметры Параметры, определяющие импортируемый ключ.
[в] 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 никогда не возвращаются.

Определение в строке 357 файла 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)
Устарело:
Импортирует пару открытого и закрытого ключей. Импортированные ключи будут в формате PKCS#8 с кодировкой DER (стандарт Java). Возвращенный ключевой BLOB-объект является непрозрачным и впоследствии будет предоставлен для подписи и проверки.

Возвращает: 0 в случае успеха или код ошибки меньше 0.

Определение в строке 66 файла 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)
Устарело:
Подписывает данные с помощью созданного ранее ключевого блоба. Это может использовать либо асимметричный ключ, либо секретный ключ.

Возвращает: 0 в случае успеха или код ошибки меньше 0.

Определение в строке 108 файла 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)

Предоставляет данные и, возможно, получает выходные данные для текущей криптографической операции, начатой ​​с помощью begin() .

Если operation_handle недействителен, update() вернет KM_ERROR_INVALID_OPERATION_HANDLE.

update() может не использовать все данные, представленные в буфере данных. update() вернет количество, потребленное в *data_consumed. Вызывающий должен предоставить неиспользованные данные при последующем вызове.

Параметры
[в] разработчик Структура устройства keymaster.
[в] дескриптор_операции Дескриптор операции, возвращаемый 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()).

Определение в строке 495 файла 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 signal_length)
Устарело:
Проверяет данные, подписанные с помощью ключевого блоба. Это может использовать либо асимметричный ключ, либо секретный ключ.

Возвращает: 0 при успешной проверке или код ошибки меньше 0.

Определение в строке 118 файла keymaster1.h .


Документация для этой структуры была сгенерирована из следующего файла:
  • оборудование/libhardware/include/оборудование/ keymaster1.h