অনুমোদন ট্যাগ

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 মোড অন্তর্ভুক্ত হতে পারে।
  • একটি 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 .