KeyMint (পূর্বে Keymaster) API অনুমোদন ট্যাগগুলির ব্যাপক ব্যবহার করে, যা নাম-মানের জোড়া। প্রতিটি সম্ভাব্য ট্যাগ আছে:
- সংশ্লিষ্ট মান সহ একটি enum নাম
- একটি যুক্ত প্রকার (উদাহরণস্বরূপ, পূর্ণসংখ্যা, বাইট, তারিখ, এনাম), যাতে একাধিক মান অনুমোদিত কিনা তার ইঙ্গিত অন্তর্ভুক্ত করে
উদাহরণস্বরূপ, Tag::BLOCK_MODE
নামের ট্যাগের একটি বেস enum মান 4
এবং একটি TagType::ENUM_REP
টাইপ মার্কার রয়েছে যা নির্দেশ করে যে সংশ্লিষ্ট মানটি একটি পুনরাবৃত্তিযোগ্য enum (এই ক্ষেত্রে, BlockMode
)।
ট্যাগগুলি API এ একটি দ্বৈত ফাংশন সম্পাদন করে:
- API এ সম্পাদিত একটি অপারেশনের পরামিতি হিসাবে, উদাহরণস্বরূপ, একটি HMAC সাইনিং অপারেশনে
Tag::MAC_LENGTH
অনুরোধ করা HMAC দৈর্ঘ্য নির্দেশ করে। - মূল বৈশিষ্ট্য হিসাবে, মানগুলি স্থায়ীভাবে একটি নির্দিষ্ট কী-এর সাথে আবদ্ধ থাকে (যেটি কী ব্লব-এ অন্তর্ভুক্ত), উদাহরণস্বরূপ,
Tag::EC_CURVE
নির্দেশ করে কোন কী উপবৃত্তাকার বক্ররেখার জন্য। প্রতিটি মূল বৈশিষ্ট্য একটি নিরাপত্তা স্তরের সাথে যুক্ত থাকে যা নির্দেশ করে যে সিস্টেমের কোন অংশটি বৈশিষ্ট্যটি অনুসরণ করে:- নিরাপত্তা স্তর
TRUSTED_ENVIRONMENT
বাSTRONGBOX
সহ একটি মূল বৈশিষ্ট্য সুরক্ষিত হার্ডওয়্যারে প্রয়োগ করা হয়েছে৷ - নিরাপত্তা স্তরের
SOFTWARE
বাKEYSTORE
একটি মূল বৈশিষ্ট্য শুধুমাত্রkeystore2
সিস্টেম পরিষেবা দ্বারা প্রয়োগ করা হয় (এবং এই ধরনের বৈশিষ্ট্য OS আপস করার জন্য স্থিতিস্থাপক নয়)।
- নিরাপত্তা স্তর
অনেক ট্যাগ মূল বৈশিষ্ট্য এবং পরামিতি উভয় হিসাবে কাজ করে:
- মূল বৈশিষ্ট্যগুলি একটি কী এর জন্য অনুমোদিত পরামিতিগুলির সেট নির্দেশ করে, উদাহরণস্বরূপ:
- একটি ECDSA কী-এর
Tag::PURPOSE
SIGN
এবংAGREE_KEY
উভয়ই অন্তর্ভুক্ত থাকতে পারে। - একটি AES কী-এর জন্য
Tag::BLOCK_MODE
ECB, CBC, এবং CTR মোড অন্তর্ভুক্ত হতে পারে।
- একটি ECDSA কী-এর
- একটি
begin()
অনুরোধ তারপর অপারেশনের জন্য একটি নির্দিষ্ট প্যারামিটার মান অন্তর্ভুক্ত করে, উদাহরণস্বরূপ:-
begin()
একটি সুস্পষ্ট উদ্দেশ্য প্যারামিটার রয়েছে যা অবশ্যই একটি মূল বৈশিষ্ট্যেরTag::PURPOSE
মানগুলির সাথে মেলে। -
begin()
একটি AES অপারেশনের জন্যparams
ফিল্ডেTag::BLOCK_MODE
জন্য একটি একক মান অন্তর্ভুক্ত করতে হবে, যা অবশ্যই মূল বৈশিষ্ট্যগুলির একটি মানগুলির সাথে মেলে।
-
এই দ্বৈত ফাংশনটি একটি কী প্রজন্ম বা আমদানি ক্রিয়াকলাপে keyParams
হিসাবে পাস করা ট্যাগগুলির সংগ্রহের জন্য বিশেষভাবে প্রাসঙ্গিক।
- কিছু ট্যাগ কী জেনারেশন অপারেশনের জন্য প্যারামিটার হিসেবে কাজ করে। উদাহরণস্বরূপ,
Tag::CERTIFICATE_SUBJECT
ট্যাগ শুধুমাত্র (অসমমিতিক) কী জেনারেশন প্রক্রিয়াকে প্রভাবিত করে, প্রত্যাবর্তিত X.509 শংসাপত্রের একটি ক্ষেত্র নিয়ন্ত্রণ করে। - অন্যান্য ট্যাগগুলি মূল বৈশিষ্ট্য হিসাবে সদ্য জেনারেট করা কী-এর সাথে আবদ্ধ থাকে এবং ফিরে আসা কীব্লব-এ এনক্যাপসুলেট করা হয় যাতে তারা স্থায়ীভাবে কীটির সাথে যুক্ত থাকে।
ট্যাগ মান সম্পর্কে বিস্তারিত তথ্য নিম্নলিখিত HAL ইন্টারফেস স্পেসিফিকেশনে পাওয়া যাবে:
- কীমিন্ট — সমস্ত ট্যাগ প্রাসঙ্গিক অ্যান্ড্রয়েড রিলিজ শাখায়
Tag.aidl
এ সংজ্ঞায়িত করা হয়েছে। - কীমাস্টার — ট্যাগগুলি প্রতিটি সংশ্লিষ্ট
keymaster-version
জন্যplatform/hardware/interfaces/keymaster/ keymaster-version /types.hal
এ সংজ্ঞায়িত করা হয়েছে, যেমন Keymaster 3-এর জন্য3.0/types.hal
এবং Keymaster 4-এর জন্য4.0/types.hal
কী-মাস্টার-এর জন্য, ডি-এ এবং 2-এর নীচে রয়েছেplatform/hardware/libhardware/include/hardware/keymaster_defs.h
.