Google is committed to advancing racial equity for Black communities. See how.
Эта страница переведена с помощью Cloud Translation API.
Switch to English

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

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 * signed_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 * signed_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 ** алгоритмы, size_t * алгоритмы_length)
keymaster_error_t (* get_supported_block_modes ) (Const структура keymaster1_device * DEV, keymaster_algorithm_t алгоритм, keymaster_purpose_t цель, keymaster_block_mode_t ** режимы, size_t * modes_length)
keymaster_error_t (* get_supported_padding_modes ) (Const структура keymaster1_device * DEV, keymaster_algorithm_t алгоритм, keymaster_purpose_t цель, keymaster_padding_t ** режимы, size_t * modes_length)
keymaster_error_t (* get_supported_digests ) (Const структура keymaster1_device * DEV, keymaster_algorithm_t алгоритм, keymaster_purpose_t цель, keymaster_digest_t ** дайджесты, size_t * digests_length)
keymaster_error_t (* get_supported_import_formats ) (Const структура keymaster1_device * DEV, keymaster_algorithm_t алгоритм, keymaster_key_format_t ** форматы, size_t * formats_length)
keymaster_error_t (* get_supported_export_formats ) (Const структура keymaster1_device * DEV, keymaster_algorithm_t алгоритм, keymaster_key_format_t ** форматы, 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 * ключ)
keymaster_error_t (* delete_all_keys ) ( константа 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 )
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)

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

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

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

Начинает криптографическую операцию с использованием указанного ключа. Если все в порядке, 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, если вызывается).

Параметры
[в] разработчик Структура устройства ключника.
[в] цель Цель операции: 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.

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

uint32_t client_version

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

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

struct hw_device_t общий

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

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

void * context

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

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

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

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

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

keymaster_error_t (* delete_all_keys) (константная структура keymaster1_device * dev)

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

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

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

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

keymaster_error_t (* delete_key) (const struct keymaster1_device * dev, const keymaster_key_blob_t * ключ)

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

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

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

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

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

Параметры
[в] разработчик Структура устройства ключника.
[в] экспорт_формат Формат, который будет использоваться для экспорта ключа.
[в] 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 * подпись, keymaster_key_param_set_t * out_params, keymaster_blob )

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

Параметры
[в] разработчик Структура устройства ключника.
[в] operation_handle Дескриптор операции, возвращаемый функцией 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 ** характеристики)

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

Параметры генерации ключей определяются как пары тег / значение 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_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 и должен освободить () его.
[вне] характеристики возвращает характеристики сгенерированного ключа, если не равно 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)
Не рекомендуется:
Создает открытый и закрытый ключ. Возвращенный ключевой объект является непрозрачным и впоследствии должен быть предоставлен для подписи и проверки.

Возвращает: 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 никогда не возвращаются.

Параметры
[в] разработчик Структура устройства ключника.
[в] 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 ** алгоритмы, size_t * алгоритмы_length)

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

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

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

keymaster_error_t (* get_supported_block_modes) (Const структура keymaster1_device * DEV, keymaster_algorithm_t алгоритм, keymaster_purpose_t цель, keymaster_block_mode_t ** режимы, size_t * modes_length)

Получает режимы блока, поддерживаемые для указанного алгоритма.

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

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

keymaster_error_t (* get_supported_digests) (Const структура keymaster1_device * DEV, keymaster_algorithm_t алгоритм, keymaster_purpose_t цель, keymaster_digest_t ** дайджесты, size_t * digests_length)

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

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

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

keymaster_error_t (* get_supported_export_formats) (Const структура keymaster1_device * DEV, keymaster_algorithm_t алгоритм, keymaster_key_format_t ** форматы, size_t * formats_length)

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

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

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

keymaster_error_t (* get_supported_import_formats) (Const структура keymaster1_device * DEV, keymaster_algorithm_t алгоритм, keymaster_key_format_t ** форматы, size_t * formats_length)

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

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

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

keymaster_error_t (* get_supported_padding_modes) (Const структура keymaster1_device * DEV, keymaster_algorithm_t алгоритм, keymaster_purpose_t цель, keymaster_padding_t ** режимы, size_t * modes_length)

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

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

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

keymaster_error_t (* import_key) (Const структура keymaster1_device * DEV, Const keymaster_key_param_set_t * Титулы, keymaster_key_format_t key_format, Const keymaster_blob_t * key_data, keymaster_key_blob_t * key_blob, keymaster_key_characteristics_t ** характеристики)

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

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

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

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

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

int (* sign_data) (const struct keymaster1_device * dev, const void * signed_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_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 * keymaster_key_param_set_t *

Предоставляет данные и, возможно, получает выходные данные для текущей криптографической операции, начатой ​​с 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 ()).

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

int (* verify_data) (const struct keymaster1_device * dev, const void * signed_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)
Не рекомендуется:
Проверяет данные, подписанные с помощью ключевого BLOB-объекта. Это может использовать либо асимметричный ключ, либо секретный ключ.

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

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


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