مرجع ساختار keymaster1_device

مرجع ساختار keymaster1_device

#include < keymaster1.h >

فیلدهای داده

ساخت hw_device_t مشترک
uint32_t client_version
uint32_t پرچم ها
خالی * متن نوشته
int(* gene_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_tang *signed_tang, size_t)
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 uintthungt, const uintaturet8)
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 **حالت ها، 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 **حالت ها, 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 *digest_length)
keymaster_error_t (* get_supported_import_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_key_format_t ** قالب ها, size_t * formats_length)
keymaster_error_t (* get_supported_export_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, 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 (* gene_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 **ویژگی ها)
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_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
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 (* شروع )(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 *عملیات
keymaster_error_t (* به‌روزرسانی _ _ _ _ _ _
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_blobt )_t
keymaster_error_t (* سقط کردن _

توصیف همراه با جزئیات

تعریف دستگاه Keymaster1

تعریف در خط 28 فایل keymaster1.h .

مستندات میدانی

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

عملیات رمزنگاری که با () شروع شده بود را لغو می کند، تمام منابع داخلی را آزاد می کند و operation_handle باطل می کند.

تعریف در خط 531 فایل keymaster1.h .

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

آنتروپی را به RNG مورد استفاده توسط keymaster اضافه می کند. آنتروپی اضافه شده از طریق این روش تضمین می‌شود که تنها منبع آنتروپی مورد استفاده نیست، و تابع اختلاط باید ایمن باشد، به این معنا که اگر RNG (از هر منبعی) با هر داده‌ای پیوند داده شود، مهاجم نمی‌تواند پیش‌بینی کند (یا کنترل)، سپس خروجی RNG از تصادفی قابل تشخیص نیست. بنابراین، اگر آنتروپی از هر منبع خوب باشد، خروجی خوب خواهد بود.

مولفه های
[که در] توسعه دهنده ساختار دستگاه کی مستر
[که در] داده ها داده های تصادفی برای مخلوط کردن
[که در] طول_داده طول data

تعریف در خط 242 فایل keymaster1.h .

keymaster_error_t (* start)(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 *_operhandle_dation)

یک عملیات رمزنگاری را با استفاده از کلید مشخص شده آغاز می کند. اگر همه چیز خوب باشد، begin() KM_ERROR_OK را برمی گرداند و یک دسته عملیات ایجاد می کند که باید به فراخوان های بعدی برای update() , finish() یا abort() ارسال شود.

بسیار مهم است که هر فراخوانی برای start() با یک فراخوان بعدی به finish() یا abort() جفت شود تا به پیاده سازی keymaster اجازه دهد تا هر حالت عملیات داخلی را پاک کند. در صورت عدم انجام این کار ممکن است فضای داخلی حالت یا سایر منابع داخلی نشت پیدا کند و در نهایت ممکن است باعث شود که start() 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 ناموفق خواهد بود. برای عملیاتی که نیاز به 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 را برمی گرداند.

تعریف در خط 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 .

متن خالی*

تعریف در خط 48 فایل keymaster1.h .

int(* delete_all)(const struct keymaster1_device *dev)
منسوخ:
تمام کلیدهای موجود در فروشگاه کلید سخت افزار را حذف می کند. زمانی استفاده می شود که ذخیره کلید به طور کامل بازنشانی شود.

این تابع اختیاری است و در صورت اجرا نشدن باید روی NULL تنظیم شود.

در صورت موفقیت 0 یا کد خطای کمتر از 0 را برمی گرداند.

تعریف در خط 100 فایل keymaster1.h .

keymaster_error_t (* delete_all_keys) (ساختار keymaster1_device *dev)

تمام کلیدهای موجود در فروشگاه کلید سخت افزار را حذف می کند. زمانی استفاده می شود که ذخیره کلید به طور کامل بازنشانی شود. پس از فراخوانی این تابع، استفاده از حباب های کلیدی که قبلاً تولید یا وارد شده اند برای هر عملیاتی غیرممکن خواهد بود.

این تابع اختیاری است و در صورت اجرا نشدن باید روی NULL تنظیم شود.

مولفه های
[که در] توسعه دهنده ساختار دستگاه کی مستر

تعریف در خط 407 فایل keymaster1.h .

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

کلید یا جفت کلید مرتبط با حباب کلید را حذف می کند. پس از فراخوانی این تابع، استفاده از کلید برای هر عملیات دیگری غیرممکن خواهد بود. ممکن است برای کلیدهایی از ریشه های اعتماد خارجی اعمال شود (کلیدهایی که تحت ریشه اعتماد فعلی قابل استفاده نیستند).

این تابع اختیاری است و در صورت اجرا نشدن باید روی 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 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 * maapp_export key_data_,

یک کلید عمومی را صادر می کند و یک آرایه بایت را در قالب مشخص شده برمی گرداند.

مولفه های
[که در] توسعه دهنده ساختار دستگاه کی مستر
[که در] فرمت_export قالب مورد استفاده برای صادرات کلید.
[که در] کلید_برای_صادرات کلید صادرات
[خارج] export_data مواد کلیدی صادر شده تماس گیرنده مالکیت را به عهده می گیرد.
[خارج] 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 * t_out_block ,

یک عملیات رمزنگاری که با () شروع شده است را نهایی می کند و operation_handle باطل می کند.

مولفه های
[که در] توسعه دهنده ساختار دستگاه کی مستر
[که در] عملیات_دسته دسته عملیات توسط start() برگردانده شد. این دسته باطل خواهد شد.
[که در] پارامترها پارامترهای اضافی برای عملیات برای حالت‌های AEAD، از این برای تعیین KM_TAG_ADDITIONAL_DATA استفاده می‌شود، اما تنها در صورتی که هیچ داده ورودی برای به‌روزرسانی () ارائه نشده باشد.
[که در] امضا اگر هدف مشخص شده در فراخوانی () fill 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 (*gene_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، ارائه شده در 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(*gene_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 )

ویژگی‌های کلید مشخص‌شده یا 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 کلید بازیابی ویژگی ها از.
[که در] شناسه مشتری داده‌های شناسه مشتری یا 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 (استاندارد جاوا) آرایه بایت کدگذاری شده باشد.

برمی گرداند: 0 در صورت موفقیت یا کد خطای کمتر از 0. در صورت خطا، x509_data نباید تخصیص داده شود.

تعریف در خط 76 فایل keymaster1.h .

keymaster_error_t (* get_supported_algorithms)(const struct keymaster1_device *dev, keymaster_algorithm_t **الگوریتم ها, size_t *الگوریتم ها_طول)

الگوریتم ها را پشتیبانی می کند.

مولفه های
[که در] توسعه دهنده ساختار دستگاه کی مستر
[خارج] الگوریتم ها آرایه ای از الگوریتم های پشتیبانی شده تماس گیرنده مالکیت آرایه را می گیرد و باید () آن را آزاد کند.
[خارج] الگوریتم ها_طول طول algorithms

تعریف در خط 133 فایل keymaster1.h .

keymaster_error_t (* get_supported_block_modes) (const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t key, keymaster_block_mode_t ** modes, size_t * modes_length)

حالت های بلوک را برای الگوریتم مشخص شده پشتیبانی می کند.

مولفه های
[که در] توسعه دهنده ساختار دستگاه کی مستر
[که در] الگوریتم الگوریتمی که حالت های پشتیبانی شده برای آن برگردانده می شود.
[خارج] حالت ها آرایه ای از حالت ها پشتیبانی می شود. تماس گیرنده مالکیت آرایه را می گیرد و باید () آن را آزاد کند.
[خارج] modes_length طول modes

تعریف در خط 149 فایل keymaster1.h .

keymaster_error_t (* get_supported_digests) (const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t target, keymaster_digest_t ** digests, size_t *digest_length)

خلاصه ها را برای الگوریتم مشخص شده پشتیبانی می کند. تماس گیرنده مالکیت آرایه اختصاص داده شده را به عهده می گیرد.

مولفه های
[که در] توسعه دهنده ساختار دستگاه کی مستر
[که در] الگوریتم الگوریتمی که خلاصه های پشتیبانی شده برای آن برگردانده می شود.
[خارج] هضم می کند آرایه ای از خلاصه ها پشتیبانی می شود. تماس گیرنده مالکیت آرایه را می گیرد و باید () آن را آزاد کند.
[خارج] digests_length طول digests

تعریف در خط 187 فایل keymaster1.h .

keymaster_error_t (*get_supported_export_formats)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_key_format_t ** قالب ها, size_t *formats_length)

فرمت‌های صادرات کلیدی را که برای کلیدهای الگوریتم مشخص‌شده پشتیبانی می‌شوند، دریافت می‌کند. تماس گیرنده مالکیت آرایه اختصاص داده شده را به عهده می گیرد.

مولفه های
[که در] توسعه دهنده ساختار دستگاه کی مستر
[که در] الگوریتم الگوریتمی که فرمت های پشتیبانی شده برای آن برگردانده می شود.
[خارج] فرمت ها آرایه ای از فرمت های پشتیبانی شده تماس گیرنده مالکیت آرایه را می گیرد و باید () آن را آزاد کند.
[خارج] formats_length طول formats

تعریف در خط 224 فایل keymaster1.h .

keymaster_error_t (* get_supported_import_formats)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_key_format_t ** قالب ها, size_t *formats_length)

فرمت‌های واردات کلیدی را که برای کلیدهای الگوریتم مشخص‌شده پشتیبانی می‌شوند، دریافت می‌کند. تماس گیرنده مالکیت آرایه اختصاص داده شده را به عهده می گیرد.

مولفه های
[که در] توسعه دهنده ساختار دستگاه کی مستر
[که در] الگوریتم الگوریتمی که فرمت های پشتیبانی شده برای آن برگردانده می شود.
[خارج] فرمت ها آرایه ای از فرمت های پشتیبانی شده تماس گیرنده مالکیت آرایه را می گیرد و باید () آن را آزاد کند.
[خارج] formats_length طول formats

تعریف در خط 206 فایل keymaster1.h .

keymaster_error_t (* get_supported_padding_modes) (const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t target, keymaster_padding_t ** modes, size_t * modes_length)

حالت های padding را برای الگوریتم مشخص شده پشتیبانی می کند. تماس گیرنده مالکیت آرایه اختصاص داده شده را به عهده می گیرد.

مولفه های
[که در] توسعه دهنده ساختار دستگاه کی مستر
[که در] الگوریتم الگوریتمی که حالت های padding پشتیبانی شده برای آن برگردانده می شود.
[خارج] حالت ها آرایه ای از حالت های padding پشتیبانی می شود. تماس گیرنده مالکیت آرایه را می گیرد و باید () آن را آزاد کند.
[خارج] modes_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__istics, key_character )acter

یک کلید یا جفت کلید را وارد می کند و یک حباب کلید و/یا شرحی از کلید را برمی گرداند.

اکثر پارامترهای وارد کردن کلید به عنوان جفت برچسب/مقدار 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_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 (استاندارد جاوا) خواهند بود. کلید بازگردانده شده مات است و متعاقباً برای امضا و تأیید ارائه خواهد شد.

برمی گرداند: 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 **_dat_signed, uint8_t **_dat_signed)ta
منسوخ:
داده ها را با استفاده از حفره کلیدی که قبلاً ایجاد شده بود امضا می کند. این می تواند از یک کلید نامتقارن یا یک کلید مخفی استفاده کند.

برمی گرداند: 0 در صورت موفقیت یا کد خطای کمتر از 0.

تعریف در خط 108 فایل keymaster1.h .

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 *input, size_t *input_consumed, keymaster_out, keymaster_out , keymaster_out, keymaster_out

داده ها را برای یک عملیات رمزنگاری در حال انجام که با start() آغاز شده است، ارائه می دهد و احتمالاً خروجی را از آن دریافت می کند.

اگر operation_handle نامعتبر باشد، update() KM_ERROR_INVALID_OPERATION_HANDLE را برمی گرداند.

update() ممکن است تمام داده های ارائه شده در بافر داده را مصرف نکند. update() مقدار مصرف شده در *data_consumed را برمی گرداند. تماس گیرنده باید داده های مصرف نشده را در تماس بعدی ارائه دهد.

مولفه های
[که در] توسعه دهنده ساختار دستگاه کی مستر
[که در] عملیات_دسته دسته عملیات توسط start() برگردانده شد.
[که در] in_params پارامترهای اضافی برای عملیات برای حالت‌های AEAD، از این برای تعیین KM_TAG_ADDITIONAL_DATA استفاده می‌شود. توجه داشته باشید که ممکن است داده های اضافی در چندین تماس برای به روز رسانی() ارائه شود، اما فقط تا زمانی که داده های ورودی ارائه شود.
[که در] ورودی داده هایی که باید پردازش شوند، بر اساس پارامترهای ایجاد شده در فراخوانی () start . توجه داشته باشید که 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 صفر خواهد بود و output->data ممکن است NULL یا صفر طول داشته باشد (بنابراین تماس گیرنده باید همیشه آن را آزاد کند).

تعریف در خط 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 size_t signed_data_length,const size_t signed_data_length,const size_t signed_data_length,const size_t signed_data_length, const size_t, const uint8_t *key_blob
منسوخ:
داده‌های امضا شده با کلید حباب را تأیید می‌کند. این می تواند از یک کلید نامتقارن یا یک کلید مخفی استفاده کند.

برمی گرداند: 0 در تأیید موفقیت آمیز یا کد خطای کمتر از 0.

تعریف در خط 118 فایل keymaster1.h .


مستندات این ساختار از فایل زیر تولید شده است: