keymaster1_device স্ট্রাকট রেফারেন্স

keymaster1_device স্ট্রাকট রেফারেন্স

#include < keymaster1.h >

ডেটা ক্ষেত্র

struct 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 *ডেটা, const size_t data_length, uint8_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 const_signt_t_size, const signature_8)
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 অ্যালগরিদম, 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 **digests, size_t *digests_length)
keymaster_error_t (* get_supported_import_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t অ্যালগরিদম, keymaster_key_format_t **ফর্ম্যাট, size_t *ফর্ম্যাট_দৈর্ঘ্য)
keymaster_error_t (* get_supported_export_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t অ্যালগরিদম, keymaster_key_format_t **ফর্ম্যাট, size_t *ফর্ম্যাট_দৈর্ঘ্য)
keymaster_error_t (* add_rng_entropy )(const struct keymaster1_device *dev, const uint8_t *ডেটা, size_t ডেটা_দৈর্ঘ্য)
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 **
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 *
keymaster_error_t (* delete_key )(const struct keymaster1_device *dev, const keymaster_key_blob_t *কী)
keymaster_error_t (* delete_all_keys )(const struct keymaster1_device *dev)
keymaster_error_t (* শুরু )(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 (* আপডেট )(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *ইনপুট, size_t *input_consumed, keymaster_key_param_set_t *out_blobout কী ,
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 *স্বাক্ষর, keymaster_key_param_set_t *out_params, keymaster_blob_t *out)
keymaster_error_t (* abort )(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle)

বিস্তারিত বিবরণ

Keymaster1 ডিভাইসের সংজ্ঞা

ফাইল keymaster1.h এর 28 লাইনে সংজ্ঞা।

ফিল্ড ডকুমেন্টেশন

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

একটি ক্রিপ্টোগ্রাফিক ক্রিয়াকলাপ বাতিল করে যা begin() দিয়ে শুরু হয়, সমস্ত অভ্যন্তরীণ সংস্থান মুক্ত করে এবং operation_handle অবৈধ করে।

ফাইল keymaster1.h এর 531 লাইনে সংজ্ঞা।

keymaster_error_t (* add_rng_entropy)(const struct keymaster1_device *dev, const uint8_t *ডেটা, size_t ডেটা_দৈর্ঘ্য)

কীমাস্টার দ্বারা ব্যবহৃত RNG-তে এনট্রপি যোগ করে। এই পদ্ধতির মাধ্যমে যোগ করা এনট্রপি গ্যারান্টিযুক্ত যে ব্যবহৃত এনট্রপির একমাত্র উৎস নয়, এবং মিক্সিং ফাংশনটি সুরক্ষিত থাকা প্রয়োজন, এই অর্থে যে যদি RNG কোন তথ্যের সাথে (কোন উৎস থেকে) বীজযুক্ত হয় তবে আক্রমণকারী ভবিষ্যদ্বাণী করতে পারে না (বা নিয়ন্ত্রণ), তারপর আরএনজি আউটপুট এলোমেলো থেকে আলাদা করা যায় না। এইভাবে, কোনো উৎস থেকে এনট্রপি ভালো হলে আউটপুট ভালো হবে।

পরামিতি
[ভিতরে] দেব কীমাস্টার ডিভাইসের গঠন।
[ভিতরে] তথ্য এলোমেলো তথ্য মিশ্রিত করা হবে.
[ভিতরে] ডেটা_দৈর্ঘ্য data দৈর্ঘ্য।

ফাইল keymaster1.h এর 242 লাইনে সংজ্ঞা।

নির্দিষ্ট কী ব্যবহার করে একটি ক্রিপ্টোগ্রাফিক অপারেশন শুরু করে। সবকিছু ঠিক থাকলে, begin() KM_ERROR_OK ফেরত দেবে এবং একটি অপারেশন হ্যান্ডেল তৈরি করবে যা আপডেট() , finish() বা abort() করার জন্য পরবর্তী কলগুলিতে পাস করতে হবে।

এটা গুরুত্বপূর্ণ যে প্রতিটি কল to begin() পরবর্তী কল to finish() অথবা abort() এর সাথে যুক্ত করা হবে, যাতে কী-মাস্টার বাস্তবায়ন কোন অভ্যন্তরীণ অপারেশন অবস্থা পরিষ্কার করতে পারে। এটি করতে ব্যর্থ হলে অভ্যন্তরীণ স্টেট স্পেস বা অন্যান্য অভ্যন্তরীণ সংস্থান লিক হতে পারে এবং শেষ পর্যন্ত start() কে KM_ERROR_TOO_MANY_OPERATIONS ফেরত দিতে পারে যখন এটি অপারেশনের জন্য স্থান ফুরিয়ে যায়। KM_ERROR_OK থেকে শুরু () , 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 এর সাথে অপারেশন ব্যর্থ হবে৷ KM_TAG_CALLER_NONCE দিয়ে জেনারেট করা কীগুলির জন্য একটি ননস বা IV প্রয়োজন এমন অপারেশনগুলির জন্য, 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 প্রদান করবে।
[আউট] অপারেশন_হ্যান্ডেল নতুন-তৈরি অপারেশন হ্যান্ডেল যা আপডেট() , finish() বা abort() এ পাস করতে হবে। অপারেশন_হ্যান্ডেল শূন্য হলে, start() KM_ERROR_OUTPUT_PARAMETER_NULL ফেরত দেবে।

ফাইল keymaster1.h এর 451 লাইনে সংজ্ঞা।

uint32_t ক্লায়েন্ট_সংস্করণ

এটি অবরুদ্ধ করা হয়েছে। পরিবর্তে keymaster_module আরম্ভে নতুন "module_api_version" এবং "hal_api_version" ক্ষেত্রগুলি ব্যবহার করুন৷

ফাইল keymaster1.h এর 41 লাইনে সংজ্ঞা।

struct hw_device_t common

কীমাস্টার ডিভাইসের সাধারণ পদ্ধতি। এটি অবশ্যই keymaster_device-এর প্রথম সদস্য হতে হবে কারণ এই কাঠামোর ব্যবহারকারীরা একটি hw_device_t কে keymaster_device পয়েন্টারে কাস্ট করবে যেখানে এটি hw_device_t একটি keymaster_device উল্লেখ করে।

ফাইল keymaster1.h এর 35 লাইনে সংজ্ঞা।

অকার্যকর* প্রসঙ্গ

ফাইল keymaster1.h এর 48 লাইনে সংজ্ঞা।

int(* delete_all)(const struct keymaster1_device *dev)
অপ্রচলিত:
হার্ডওয়্যার কীস্টোরের সমস্ত কী মুছে দেয়। কীস্টোর সম্পূর্ণরূপে রিসেট হলে ব্যবহৃত হয়।

এই ফাংশনটি ঐচ্ছিক এবং এটি বাস্তবায়িত না হলে NULL এ সেট করা উচিত।

সাফল্যের উপর 0 বা 0-এর কম ত্রুটি কোড প্রদান করে।

ফাইল keymaster1.h এর 100 লাইনে সংজ্ঞা।

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

হার্ডওয়্যার কীস্টোরের সমস্ত কী মুছে দেয়। কীস্টোর সম্পূর্ণরূপে রিসেট হলে ব্যবহৃত হয়। এই ফাংশনটি কল করার পরে যেকোন অপারেশনের জন্য পূর্বে তৈরি করা বা আমদানি করা কী ব্লব ব্যবহার করা অসম্ভব হবে।

এই ফাংশনটি ঐচ্ছিক এবং এটি বাস্তবায়িত না হলে NULL এ সেট করা উচিত।

পরামিতি
[ভিতরে] দেব কীমাস্টার ডিভাইসের গঠন।

ফাইল keymaster1.h এর 407 লাইনে সংজ্ঞা।

keymaster_error_t (* delete_key)(const struct keymaster1_device *dev, const keymaster_key_blob_t *কী)

কী ব্লবের সাথে যুক্ত কী, বা কী জোড়া মুছে দেয়। এই ফাংশনটি কল করার পরে অন্য কোন ক্রিয়াকলাপের জন্য কী ব্যবহার করা অসম্ভব হবে। বিশ্বাসের বিদেশী মূল থেকে কীগুলিতে প্রয়োগ করা যেতে পারে (বিশ্বাসের বর্তমান মূলের অধীনে কীগুলি ব্যবহারযোগ্য নয়)।

এই ফাংশনটি ঐচ্ছিক এবং এটি বাস্তবায়িত না হলে NULL এ সেট করা উচিত।

পরামিতি
[ভিতরে] দেব কীমাস্টার ডিভাইসের গঠন।
[ভিতরে] চাবি মুছে ফেলার চাবি।

ফাইল keymaster1.h এর 395 লাইনে সংজ্ঞা।

int(* delete_keypair)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
অপ্রচলিত:
কী ব্লবের সাথে যুক্ত কী জোড়া মুছে দেয়।

এই ফাংশনটি ঐচ্ছিক এবং এটি বাস্তবায়িত না হলে NULL এ সেট করা উচিত।

সাফল্যের উপর 0 বা 0-এর কম ত্রুটি কোড প্রদান করে।

ফাইল keymaster1.h এর 88 লাইনে সংজ্ঞা।

keymaster_error_t (*export_key)(const struct keymaster1_device *dev, keymaster_key_format_t export_format, const keymaster_key_blob_t *key_to_export, const keymaster_blob_t *client_id, const keymaster_blob_t *app_data_data, keymaster_blob_t *app_blob_data*)

একটি পাবলিক কী রপ্তানি করে, নির্দিষ্ট বিন্যাসে একটি বাইট অ্যারে ফিরিয়ে দেয়।

পরামিতি
[ভিতরে] দেব কীমাস্টার ডিভাইসের গঠন।
[ভিতরে] এক্সপোর্ট_ফরম্যাট কী রপ্তানি করার জন্য যে বিন্যাসটি ব্যবহার করা হবে।
[ভিতরে] কী_রপ্তানি রপ্তানির চাবিকাঠি।
[আউট] রপ্তানি তথ্য রপ্তানি মূল উপাদান. কলকারী মালিকানা গ্রহণ করে।
[আউট] রপ্তানি_ডেটা_দৈর্ঘ্য export_data দৈর্ঘ্য।

ফাইল keymaster1.h এর 377 লাইনে সংজ্ঞা।

keymaster_error_t (* finish)(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *স্বাক্ষর, keymaster_key_param_set_t *out_blobout, keymaster_blob_t *

begin() দিয়ে শুরু হওয়া একটি ক্রিপ্টোগ্রাফিক অপারেশনকে চূড়ান্ত করে এবং operation_handle বাতিল করে।

পরামিতি
[ভিতরে] দেব কীমাস্টার ডিভাইসের গঠন।
[ভিতরে] অপারেশন_হ্যান্ডেল অপারেশন হ্যান্ডেল begin() দ্বারা ফিরে আসে। এই হ্যান্ডেল অবৈধ করা হবে.
[ভিতরে] params অপারেশন জন্য অতিরিক্ত পরামিতি. AEAD মোডের জন্য, এটি KM_TAG_ADDITIONAL_DATA নির্দিষ্ট করতে ব্যবহৃত হয়, কিন্তু শুধুমাত্র যদি আপডেট() করার জন্য কোনো ইনপুট ডেটা প্রদান করা না হয়।
[ভিতরে] স্বাক্ষর বিগিন() কলে উল্লেখ করা উদ্দেশ্যটি KM_PURPOSE_VERIFY হলে স্বাক্ষরটি যাচাই করতে হবে।
[আউট] আউটপুট আউটপুট ডেটা, যদি থাকে। কলকারী বরাদ্দকৃত বাফারের মালিকানা গ্রহণ করে।

যদি অপারেশনটি সমাপ্ত হয় তা একটি স্বাক্ষর যাচাই বা একটি AEAD-মোড ডিক্রিপশন এবং যাচাইকরণ ব্যর্থ হয় তাহলে finish() KM_ERROR_VERIFICATION_FAILED ফেরত দেবে৷

ফাইল keymaster1.h এর 521 লাইনে সংজ্ঞা।

uint32_t পতাকা

keymaster0_devices:: keymaster_common.h- এ পতাকাগুলির জন্য সংজ্ঞায়িত পতাকা দেখুন

ফাইল keymaster1.h এর 46 লাইনে সংজ্ঞা।

keymaster_error_t (* generate_key)(const struct keymaster1_device *dev, const keymaster_key_param_set_t *params, keymaster_key_blob_t *key_blob, keymaster_key_characteristics_t ** বৈশিষ্ট্য)

একটি কী, বা কী জোড়া তৈরি করে, একটি কী ব্লব এবং/অথবা কীটির একটি বিবরণ ফেরত দেয়।

কী জেনারেশন প্যারামিটারগুলিকে কীমাস্টার ট্যাগ/মান পেয়ার হিসাবে সংজ্ঞায়িত করা হয়, 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 কী জেনারেশন প্যারামিটারের অ্যারে।
[ভিতরে] params_count params দৈর্ঘ্য।
[আউট] কী_ব্লব উৎপন্ন কী ফেরত দেয়। key_blob অবশ্যই NULL হবে না। কলার মালিকানা key_blob->key_material ধরে নেয় এবং এটিকে অবশ্যই মুক্ত() করতে হবে।
[আউট] বৈশিষ্ট্য নন-নাল হলে কী-এর বৈশিষ্ট্যগুলি তৈরি করা হয়েছে। যদি NULL না থাকে, কলকারী মালিকানা গ্রহণ করে এবং তাকে অবশ্যই keymaster_free_characteristics() দিয়ে ডিললোকেট করতে হবে। মনে রাখবেন KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID এবং KM_TAG_APPLICATION_DATA কখনই ফেরত দেওয়া হয় না।

ফাইল keymaster1.h এর 282 লাইনে সংজ্ঞা।

int(* generate_keypair)(const struct keymaster1_device *dev, const keymaster_keypair_t key_type, const void *key_params, uint8_t **key_blob, size_t *key_blob_length)
অপ্রচলিত:
একটি সর্বজনীন এবং ব্যক্তিগত কী তৈরি করে। ফিরে আসা কী-ব্লবটি অস্বচ্ছ এবং পরবর্তীতে স্বাক্ষর ও যাচাইয়ের জন্য প্রদান করা আবশ্যক।

রিটার্ন: সফলতার উপর 0 বা 0-এর কম ত্রুটি কোড।

ফাইল keymaster1.h এর 56 লাইনে সংজ্ঞা।

keymaster_error_t (* get_key_characteristics)(const struct keymaster1_device *dev, const keymaster_key_blob_t *key_blob, const keymaster_blob_t *client_id, const keymaster_blob_t *app_data, keymaster_key_characteristics ****

কী_ব্লব অবৈধ হলে নির্দিষ্ট কী-এর বৈশিষ্ট্য বা KM_ERROR_INVALID_KEY_BLOB প্রদান করে (বাস্তবায়নগুলি অবশ্যই কীটির অখণ্ডতাকে সম্পূর্ণরূপে যাচাই করতে হবে)। ক্লায়েন্ট_আইডি এবং অ্যাপ_ডেটা অবশ্যই আইডি এবং ডেটা হতে হবে যখন কী তৈরি করা হয়েছিল বা আমদানি করা হয়েছিল, বা খালি যদি KM_TAG_APPLICATION_ID এবং/অথবা KM_TAG_APPLICATION_DATA জেনারেশনের সময় দেওয়া না হয়। সেই মানগুলি প্রত্যাবর্তিত বৈশিষ্ট্যগুলিতে অন্তর্ভুক্ত নয়৷ কলকারী বরাদ্দকৃত বৈশিষ্ট্যের বস্তুর মালিকানা গ্রহণ করে, যা অবশ্যই keymaster_free_characteristics() এর সাথে ডিলকেড করা উচিত।

মনে রাখবেন KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID এবং KM_TAG_APPLICATION_DATA কখনই ফেরত দেওয়া হয় না।

পরামিতি
[ভিতরে] দেব কীমাস্টার ডিভাইসের গঠন।
[ভিতরে] কী_ব্লব থেকে বৈশিষ্ট্য পুনরুদ্ধার চাবিকাঠি.
[ভিতরে] ক্লায়েন্ট_আইডি ক্লায়েন্ট আইডি ডেটা, অথবা যুক্ত না থাকলে NULL।
[ভিতরে] app_id অ্যাপ্লিকেশান ডেটা, বা শূন্য যুক্ত না থাকলে৷
[আউট] বৈশিষ্ট্য মূল বৈশিষ্ট্য।

ফাইল keymaster1.h এর 309 লাইনে সংজ্ঞা।

int(* get_keypair_public)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length, uint8_t **x509_data, size_t *x509_data_length)
অপ্রচলিত:
একটি কী জোড়ার সর্বজনীন কী অংশ পায়৷ পাবলিক কী অবশ্যই X.509 ফরম্যাটে (জাভা স্ট্যান্ডার্ড) এনকোডেড বাইট অ্যারে হতে হবে।

রিটার্ন: সফল হলে 0 বা 0-এর কম ত্রুটি কোড। ত্রুটি হলে, x509_data বরাদ্দ করা উচিত নয়।

ফাইল keymaster1.h এর 76 লাইনে সংজ্ঞা।

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

অ্যালগরিদম সমর্থিত পায়।

পরামিতি
[ভিতরে] দেব কীমাস্টার ডিভাইসের গঠন।
[আউট] অ্যালগরিদম অ্যালগরিদমের অ্যারে সমর্থিত। কলার অ্যারের মালিকানা নেয় এবং এটিকে অবশ্যই মুক্ত() করতে হবে।
[আউট] অ্যালগরিদম_দৈর্ঘ্য algorithms দৈর্ঘ্য।

ফাইল keymaster1.h এর 133 লাইনে সংজ্ঞা।

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)

নির্দিষ্ট অ্যালগরিদমের জন্য ব্লক মোড সমর্থিত পায়।

পরামিতি
[ভিতরে] দেব কীমাস্টার ডিভাইসের গঠন।
[ভিতরে] অ্যালগরিদম অ্যালগরিদম যার জন্য সমর্থিত মোডগুলি ফেরত দেওয়া হবে৷
[আউট] মোড মোড সমর্থিত অ্যারে. কলার অ্যারের মালিকানা নেয় এবং এটিকে অবশ্যই মুক্ত() করতে হবে।
[আউট] মোড_দৈর্ঘ্য modes দৈর্ঘ্য।

ফাইল keymaster1.h এর 149 লাইনে সংজ্ঞা।

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)

নির্দিষ্ট অ্যালগরিদমের জন্য সমর্থিত ডাইজেস্ট পায়। কলার বরাদ্দকৃত অ্যারের মালিকানা গ্রহণ করে।

পরামিতি
[ভিতরে] দেব কীমাস্টার ডিভাইসের গঠন।
[ভিতরে] অ্যালগরিদম অ্যালগরিদম যার জন্য সমর্থিত ডাইজেস্টগুলি ফেরত দেওয়া হবে৷
[আউট] হজম করে সমর্থিত ডাইজেস্টের অ্যারে। কলার অ্যারের মালিকানা নেয় এবং এটিকে অবশ্যই মুক্ত() করতে হবে।
[আউট] পরিপাক_দৈর্ঘ্য digests দৈর্ঘ্য।

ফাইল keymaster1.h এর 187 লাইনে সংজ্ঞা।

keymaster_error_t (* get_supported_export_formats)(const struct keymaster1_device *dev, keymaster_algorithm_t অ্যালগরিদম, keymaster_key_format_t **formats, size_t *formats_length)

নির্দিষ্ট অ্যালগরিদমের কীগুলির জন্য সমর্থিত মূল রপ্তানি ফর্ম্যাটগুলি পায়৷ কলার বরাদ্দকৃত অ্যারের মালিকানা গ্রহণ করে।

পরামিতি
[ভিতরে] দেব কীমাস্টার ডিভাইসের গঠন।
[ভিতরে] অ্যালগরিদম অ্যালগরিদম যার জন্য সমর্থিত ফর্ম্যাটগুলি ফেরত দেওয়া হবে৷
[আউট] বিন্যাস বিন্যাস সমর্থিত অ্যারে. কলার অ্যারের মালিকানা নেয় এবং এটিকে অবশ্যই মুক্ত() করতে হবে।
[আউট] বিন্যাস_দৈর্ঘ্য formats দৈর্ঘ্য।

ফাইল keymaster1.h এর 224 লাইনে সংজ্ঞা।

keymaster_error_t (* get_supported_import_formats)(const struct keymaster1_device *dev, keymaster_algorithm_t অ্যালগরিদম, keymaster_key_format_t **formats, size_t *formats_length)

নির্দিষ্ট অ্যালগরিদমের কীগুলির জন্য সমর্থিত কী আমদানি ফর্ম্যাটগুলি পায়৷ কলার বরাদ্দকৃত অ্যারের মালিকানা গ্রহণ করে।

পরামিতি
[ভিতরে] দেব কীমাস্টার ডিভাইসের গঠন।
[ভিতরে] অ্যালগরিদম অ্যালগরিদম যার জন্য সমর্থিত ফর্ম্যাটগুলি ফেরত দেওয়া হবে৷
[আউট] বিন্যাস বিন্যাস সমর্থিত অ্যারে. কলার অ্যারের মালিকানা নেয় এবং এটিকে অবশ্যই মুক্ত() করতে হবে।
[আউট] বিন্যাস_দৈর্ঘ্য formats দৈর্ঘ্য।

ফাইল keymaster1.h এর 206 লাইনে সংজ্ঞা।

keymaster_error_t (* get_supported_padding_modes)(const struct keymaster1_device *dev, keymaster_algorithm_t অ্যালগরিদম, keymaster_purpose_t উদ্দেশ্য, keymaster_padding_t **মোড, size_t *modes_length)

নির্দিষ্ট অ্যালগরিদমের জন্য প্যাডিং মোড সমর্থিত পায়। কলার বরাদ্দকৃত অ্যারের মালিকানা গ্রহণ করে।

পরামিতি
[ভিতরে] দেব কীমাস্টার ডিভাইসের গঠন।
[ভিতরে] অ্যালগরিদম যে অ্যালগরিদমটির জন্য সমর্থিত প্যাডিং মোডগুলি ফেরত দেওয়া হবে৷
[আউট] মোড প্যাডিং মোড সমর্থিত অ্যারে. কলার অ্যারের মালিকানা নেয় এবং এটিকে অবশ্যই মুক্ত() করতে হবে।
[আউট] মোড_দৈর্ঘ্য modes দৈর্ঘ্য।

ফাইল keymaster1.h এর 168 লাইনে সংজ্ঞা।

keymaster_error_t (* import_key)(const struct keymaster1_device *dev, const keymaster_key_param_set_t *params, keymaster_key_format_t key_format, const keymaster_blob_t *key_data, keymaster_key_blob_t *key_blob, key_blob, keymaster_charistic_charistic )

একটি কী, বা কী জোড়া আমদানি করে, একটি কী ব্লব এবং/অথবা কীটির বিবরণ ফেরত দেয়।

বেশিরভাগ মূল আমদানি পরামিতিগুলিকে কীমাস্টার ট্যাগ/মান জোড়া হিসাবে সংজ্ঞায়িত করা হয়, "প্যারামে" প্রদান করা হয়। সম্পূর্ণ তালিকার জন্য 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 আমদানি করা কী সংজ্ঞায়িত পরামিতি।
[ভিতরে] params_count params এন্ট্রির সংখ্যা।
[ভিতরে] key_format key_data এ কী ডেটার বিন্যাস নির্দিষ্ট করে।
[আউট] কী_ব্লব অস্বচ্ছ কী ব্লব ফেরত দিতে ব্যবহৃত হয়। নন-নাল হতে হবে। কলকারী অন্তর্ভুক্ত key_material এর মালিকানা গ্রহণ করে৷
[আউট] বৈশিষ্ট্য আমদানি করা কী-এর বৈশিষ্ট্য ফেরত দিতে ব্যবহৃত হয়। NULL হতে পারে, এই ক্ষেত্রে কোনো বৈশিষ্ট্য ফেরত দেওয়া হবে না। যদি NULL না থাকে, কলকারী মালিকানা গ্রহণ করে এবং তাকে অবশ্যই keymaster_free_characteristics() দিয়ে ডিললোকেট করতে হবে। মনে রাখবেন KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID এবং KM_TAG_APPLICATION_DATA কখনই ফেরত দেওয়া হয় না।

ফাইল keymaster1.h এর 357 লাইনে সংজ্ঞা।

int(* import_keypair)(const struct keymaster1_device *dev, const uint8_t *key, const size_t key_length, uint8_t **key_blob, size_t *key_blob_length)
অপ্রচলিত:
একটি সর্বজনীন এবং ব্যক্তিগত কী জোড়া আমদানি করে। আমদানি করা কীগুলি DER এনকোডিং (জাভা স্ট্যান্ডার্ড) সহ PKCS#8 ফর্ম্যাটে হবে৷ ফিরে আসা কী-ব্লবটি অস্বচ্ছ এবং পরবর্তীতে স্বাক্ষর ও যাচাইয়ের জন্য সরবরাহ করা হবে।

রিটার্ন: সফলতার উপর 0 বা 0-এর কম ত্রুটি কোড।

ফাইল keymaster1.h এর লাইন 66 এ সংজ্ঞা।

int(* sign_data)(const struct keymaster1_device *dev, const void *signing_params, const uint8_t *key_blob, const size_t key_blob_length, const uint8_t *ডেটা, const size_t data_length, uint8_t ** signed_tang_tang_signed)
অপ্রচলিত:
আগে তৈরি করা কী-ব্লব ব্যবহার করে ডেটা সাইন করে। এটি একটি অপ্রতিসম কী বা একটি গোপন কী ব্যবহার করতে পারে।

রিটার্ন: সফলতার উপর 0 বা 0-এর কম ত্রুটি কোড।

ফাইল keymaster1.h এর 108 লাইনে সংজ্ঞা।

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 *ইনপুট, size_t *input_consumed, keymaster_key_paramout *_blobout, keymaster_key_paramout

begin() দিয়ে শুরু হওয়া একটি চলমান ক্রিপ্টোগ্রাফিক অপারেশনকে ডেটা প্রদান করে এবং সম্ভবত এর থেকে আউটপুট গ্রহণ করে।

অপারেশন_হ্যান্ডেল অবৈধ হলে, আপডেট() KM_ERROR_INVALID_OPERATION_HANDLE ফেরত দেবে।

update() ডেটা বাফারে প্রদত্ত সমস্ত ডেটা গ্রাস করতে পারে না। update() *data_consumed-এ ব্যবহৃত পরিমাণ ফেরত দেবে। কলকারীকে পরবর্তী কলে অব্যবহৃত ডেটা সরবরাহ করতে হবে।

পরামিতি
[ভিতরে] দেব কীমাস্টার ডিভাইসের গঠন।
[ভিতরে] অপারেশন_হ্যান্ডেল অপারেশন হ্যান্ডেল begin() দ্বারা ফিরে আসে।
[ভিতরে] in_params অপারেশন জন্য অতিরিক্ত পরামিতি. AEAD মোডের জন্য, এটি KM_TAG_ADDITIONAL_DATA নির্দিষ্ট করতে ব্যবহৃত হয়। মনে রাখবেন যে আপডেট() করার জন্য একাধিক কলে অতিরিক্ত ডেটা প্রদান করা হতে পারে, কিন্তু শুধুমাত্র ইনপুট ডেটা প্রদান না করা পর্যন্ত।
[ভিতরে] ইনপুট শুরু করার জন্য কলে প্রতিষ্ঠিত পরামিতি অনুসারে ডেটা প্রক্রিয়া করা হবে। মনে রাখবেন যে আপডেট() প্রদত্ত সমস্ত ডেটা ব্যবহার করতে পারে বা নাও পারে। input_consumed দেখুন।
[আউট] input_consumed আপডেট() দ্বারা ব্যবহৃত ডেটার পরিমাণ। যদি এটি প্রদত্ত পরিমাণের চেয়ে কম হয়, তাহলে কলকারীকে আপডেট() করার জন্য পরবর্তী কলে অবশিষ্টটি প্রদান করতে হবে।
[আউট] out_params আউটপুট পরামিতি। অপারেশন থেকে অতিরিক্ত ডেটা ফেরত দিতে ব্যবহৃত হয় কলার আউটপুট প্যারামিটার অ্যারের মালিকানা নেয় এবং এটিকে keymaster_free_param_set() দিয়ে মুক্ত করতে হবে। কোনো আউটপুট পরামিতি প্রত্যাশিত না হলে out_params NULL এ সেট করা হতে পারে। যদি out_params NULL হয়, এবং আউটপুট প্যারামেটার তৈরি করা হয়, begin() KM_ERROR_OUTPUT_PARAMETER_NULL প্রদান করবে।
[আউট] আউটপুট আউটপুট ডেটা, যদি থাকে। কলকারী বরাদ্দকৃত বাফারের মালিকানা গ্রহণ করে। আউটপুট NULL হওয়া উচিত নয়।

মনে রাখবেন যে আপডেট() কোনো আউটপুট প্রদান নাও করতে পারে, এই ক্ষেত্রে আউটপুট->ডেটা_লেংথ শূন্য হবে এবং আউটপুট->ডেটা শূন্য বা শূন্য-দৈর্ঘ্য হতে পারে (তাই কলারের সর্বদা এটি মুক্ত করা উচিত)।

ফাইল keymaster1.h এর 495 লাইনে সংজ্ঞা।

int(* verify_data)(const struct keymaster1_device *dev, const void *signing_params, const uint8_t *key_blob, const size_t key_blob_length, const uint8_t *signed_data, const size_t signed_data_length, const_int সাইজ, const_int_8_t স্বাক্ষর
অপ্রচলিত:
একটি কী-ব্লব দিয়ে স্বাক্ষরিত ডেটা যাচাই করে। এটি একটি অপ্রতিসম কী বা একটি গোপন কী ব্যবহার করতে পারে।

রিটার্ন: সফল যাচাইকরণে 0 বা 0-এর কম ত্রুটি কোড।

ফাইল keymaster1.h এর 118 লাইনে সংজ্ঞা।


এই কাঠামোর জন্য ডকুমেন্টেশন নিম্নলিখিত ফাইল থেকে তৈরি করা হয়েছিল: