কীমাস্টার ফাংশন

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

সাধারণ বাস্তবায়ন নির্দেশিকা

নিম্নলিখিত নির্দেশিকাগুলি API-এর সমস্ত ফাংশনে প্রযোজ্য৷

ইনপুট পয়েন্টার পরামিতি

সংস্করণ : 1, 2

ইনপুট পয়েন্টার পরামিতি যা প্রদত্ত কলের জন্য ব্যবহৃত হয় না তা NULL হতে পারে। কলারকে স্থানধারক প্রদান করার প্রয়োজন নেই। উদাহরণস্বরূপ, কিছু কী প্রকার এবং মোড inParams আর্গুমেন্ট থেকে শুরু করার জন্য কোনো মান ব্যবহার নাও করতে পারে, তাই কলার inParams NULL এ সেট করতে পারে বা একটি খালি প্যারামিটার সেট প্রদান করতে পারে। কলাররা অব্যবহৃত পরামিতিও প্রদান করতে পারে এবং কীমাস্টার পদ্ধতিতে ত্রুটি প্রকাশ করা উচিত নয়।

যদি একটি প্রয়োজনীয় ইনপুট পরামিতি NULL হয়, তাহলে কীমাস্টার পদ্ধতিগুলি ErrorCode::UNEXPECTED_NULL_POINTER ফেরত দেবে।

Keymaster 3 থেকে শুরু করে, কোন পয়েন্টার প্যারামিটার নেই। সমস্ত পরামিতি মান বা const রেফারেন্স দ্বারা পাস করা হয়.

আউটপুট পয়েন্টার পরামিতি

সংস্করণ : 1, 2

ইনপুট পয়েন্টার প্যারামিটারের মতো, অব্যবহৃত আউটপুট পয়েন্টার প্যারামিটার NULL হতে পারে। যদি একটি পদ্ধতির একটি আউটপুট প্যারামিটারে ডেটা ফেরত দিতে হয় যা NULL বলে পাওয়া যায়, তাহলে এটি ErrorCode::OUTPUT_PARAMETER_NULL প্রদান করবে।

Keymaster 3 থেকে শুরু করে, কোন পয়েন্টার প্যারামিটার নেই। সমস্ত পরামিতি মান বা const রেফারেন্স দ্বারা পাস করা হয়.

API অপব্যবহার

সংস্করণ : 1, 2, 3

কলকারীরা এমন অনেক উপায়ে অনুরোধ করতে পারে যা অর্থহীন বা বোকা কিন্তু প্রযুক্তিগতভাবে ভুল নয়। এই ধরনের ক্ষেত্রে ব্যর্থ হওয়ার জন্য বা ডায়াগনস্টিক ইস্যু করার জন্য কীমাস্টার বাস্তবায়নের প্রয়োজন নেই। খুব ছোট কীগুলির ব্যবহার, অপ্রাসঙ্গিক ইনপুট প্যারামিটারের স্পেসিফিকেশন, IV বা ননসেসের পুনঃব্যবহার, কোন উদ্দেশ্য ছাড়াই কী তৈরি করা (অতএব অকেজো) এবং এই জাতীয়গুলি বাস্তবায়ন দ্বারা নির্ণয় করা উচিত নয়। প্রয়োজনীয় পরামিতি বাদ দেওয়া, অবৈধ প্রয়োজনীয় পরামিতিগুলির স্পেসিফিকেশন এবং অনুরূপ ত্রুটিগুলি নির্ণয় করা আবশ্যক।

কীমাস্টার মডিউলগুলিতে কলগুলি বুদ্ধিমান এবং দরকারী তা নিশ্চিত করা অ্যাপস, ফ্রেমওয়ার্ক এবং অ্যান্ড্রয়েড কীস্টোরের দায়িত্ব৷

ফাংশন

হার্ডওয়্যার বৈশিষ্ট্যগুলি পান

সংস্করণ : 3

নতুন getHardwareFeatures পদ্ধতি ক্লায়েন্টদের কাছে অন্তর্নিহিত সুরক্ষিত হার্ডওয়্যারের কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য প্রকাশ করে। পদ্ধতিটি কোন আর্গুমেন্ট নেয় না এবং চারটি মান প্রদান করে, সমস্ত বুলিয়ান:

  • isSecure true যদি কীগুলি সুরক্ষিত হার্ডওয়্যারে (TEE, ইত্যাদি) সংরক্ষণ করা হয় এবং কখনই এটি ছেড়ে না যায়।
  • supportsEllipticCurve true যদি হার্ডওয়্যার NIST বক্ররেখা (P-224, P-256, P-384, এবং P-521) সহ উপবৃত্তাকার কার্ভ ক্রিপ্টোগ্রাফি সমর্থন করে।
  • supportsSymmetricCryptography true করে যদি হার্ডওয়্যার AES এবং HMAC সহ সিমেট্রিক ক্রিপ্টোগ্রাফি সমর্থন করে।
  • supportsAttestation true যদি হার্ডওয়্যার কিমাস্টার পাবলিক কী প্রত্যয়ন শংসাপত্র তৈরি করে, একটি সুরক্ষিত পরিবেশে ইনজেকশন করা কী দিয়ে স্বাক্ষরিত।

এই পদ্ধতিটি যে ত্রুটির কোডগুলি ফেরত দিতে পারে তা হল ErrorCode:OK , ErrorCode::KEYMASTER_NOT_CONFIGURED বা একটি ত্রুটি কোড যা সুরক্ষিত হার্ডওয়্যারের সাথে যোগাযোগ করতে ব্যর্থতার ইঙ্গিত দেয়।

getHardwareFeatures()
    generates(bool isSecure, bool supportsEllipticCurve, bool supportsSymmetricCryptography,
              bool supportsAttestation, bool supportsAllDigests, string keymasterName,
              string keymasterAuthorName);

সজ্জিত করা

সংস্করণ : 2

এই ফাংশনটি Keymaster 2-এ চালু করা হয়েছিল এবং Keymaster 3-এ অবমুক্ত করা হয়েছিল, কারণ এই তথ্য সিস্টেমের বৈশিষ্ট্য ফাইলগুলিতে পাওয়া যায়, এবং প্রস্তুতকারক বাস্তবায়ন স্টার্টআপের সময় সেই ফাইলগুলি পড়ে।

কীমাস্টার কনফিগার করে। এই পদ্ধতিটি ডিভাইসটি খোলার পরে এবং এটি ব্যবহার করার আগে একবার বলা হয়। এটি কীমাস্টারকে KM_TAG_OS_VERSION এবং KM_TAG_OS_PATCHLEVEL প্রদান করতে ব্যবহৃত হয়। এই পদ্ধতিটি বলা না হওয়া পর্যন্ত, অন্যান্য সমস্ত পদ্ধতি KM_ERROR_KEYMASTER_NOT_CONFIGURED প্রদান করে। এই পদ্ধতি দ্বারা প্রদত্ত মানগুলি শুধুমাত্র প্রতি বুটে একবার কীমাস্টার দ্বারা গৃহীত হয়। পরবর্তী কলগুলি ফিরে আসে KM_ERROR_OK , কিন্তু কিছুই করে না৷

যদি কীমাস্টার বাস্তবায়ন সুরক্ষিত হার্ডওয়্যারে হয় এবং প্রদত্ত OS সংস্করণ এবং প্যাচ স্তরের মানগুলি বুটলোডার দ্বারা সুরক্ষিত হার্ডওয়্যারের সাথে প্রদত্ত মানগুলির সাথে মেলে না (অথবা যদি বুটলোডার মান প্রদান না করে), তবে এই পদ্ধতিটি KM_ERROR_INVALID_ARGUMENT , এবং অন্য সবগুলি প্রদান করে পদ্ধতিগুলি KM_ERROR_KEYMASTER_NOT_CONFIGURED ফেরত দেওয়া অব্যাহত রাখে।

keymaster_error_t (*configure)(const struct keymaster2_device* dev,
                               const keymaster_key_param_set_t* params);

addRngEntropy

সংস্করণ : 1, 2, 3

এই ফাংশনটি Keymaster 1-এ add_rng_entropy হিসাবে চালু করা হয়েছিল এবং Keymaster 3 তে নামকরণ করা হয়েছিল।

কী, IV, ইত্যাদির জন্য এলোমেলো সংখ্যা তৈরি করার জন্য Keymaster 1 বাস্তবায়ন দ্বারা ব্যবহৃত পুলে কলার-প্রদত্ত এনট্রপি যোগ করে।

কীমাস্টার বাস্তবায়নের জন্য তাদের পুলে প্রদত্ত এনট্রপি সুরক্ষিতভাবে মিশ্রিত করতে হবে, এতে অবশ্যই একটি হার্ডওয়্যার র্যান্ডম নম্বর জেনারেটর থেকে অভ্যন্তরীণভাবে জেনারেট করা এনট্রপি থাকতে হবে। মিক্সিং পরিচালনা করা উচিত যাতে একজন আক্রমণকারী যার হয় addRngEntropy প্রদত্ত বিট বা হার্ডওয়্যার-উত্পাদিত বিটগুলির সম্পূর্ণ নিয়ন্ত্রণ রয়েছে, তবে উভয়ই নয়, এনট্রপি পুল থেকে উৎপন্ন বিটগুলির পূর্বাভাস দেওয়ার ক্ষেত্রে কোনও অ-নগণ্য সুবিধা নেই৷

কীমাস্টার বাস্তবায়ন যেগুলি তাদের অভ্যন্তরীণ পুলে এনট্রপি অনুমান করার চেষ্টা করে অনুমান করে যে addRngEntropy দ্বারা প্রদত্ত ডেটাতে কোনও এনট্রপি নেই। কীমাস্টার বাস্তবায়ন ErrorCode::INVALID_INPUT_LENGTH ফেরত দিতে পারে যদি তাদের একটি কলে 2 KiB-এর বেশি ডেটা দেওয়া হয়।

কী তৈরি করুন

সংস্করণ : 1, 2, 3

এই ফাংশনটি Keymaster 1-এ generate_key হিসাবে চালু করা হয়েছিল এবং Keymaster 3-এ নামকরণ করা হয়েছিল।

একটি নতুন ক্রিপ্টোগ্রাফিক কী তৈরি করে, যুক্ত অনুমোদনগুলি নির্দিষ্ট করে, যা স্থায়ীভাবে কীটির সাথে আবদ্ধ। কীমাস্টার বাস্তবায়নের ফলে প্রজন্মের সময়ে নির্দিষ্ট করা অনুমোদনের সাথে অসামঞ্জস্যপূর্ণ কোনো কী ব্যবহার করা অসম্ভব হয়ে পড়ে। অনুমোদনের ক্ষেত্রে যেগুলি সুরক্ষিত হার্ডওয়্যার প্রয়োগ করতে পারে না, সুরক্ষিত হার্ডওয়্যারের বাধ্যবাধকতা নিশ্চিত করার জন্য সীমাবদ্ধ যে কী এর সাথে যুক্ত অপ্রয়োগযোগ্য অনুমোদনগুলি সংশোধন করা যাবে না, যাতে getKeyCharacteristics- এর প্রতিটি কল আসল মান ফিরিয়ে দেয়। উপরন্তু, generateKey দ্বারা প্রত্যাবর্তিত বৈশিষ্ট্যগুলি হার্ডওয়্যার-প্রবর্তিত এবং সফ্টওয়্যার-প্রবর্তিত তালিকার মধ্যে সঠিকভাবে অনুমোদন বরাদ্দ করে। আরও বিস্তারিত জানার জন্য getKey বৈশিষ্ট্য দেখুন।

generateKey এর জন্য প্রদত্ত পরামিতিগুলি কী ধরনের তৈরি করা হচ্ছে তার উপর নির্ভর করে। এই বিভাগে প্রতিটি ধরনের কী-এর জন্য প্রয়োজনীয় এবং ঐচ্ছিক ট্যাগগুলির সংক্ষিপ্ত বিবরণ দেওয়া হয়েছে। ট্যাগ::টাইপ নির্দিষ্ট করার জন্য অ্যালগোরিদম সর্বদা প্রয়োজনীয়।

RSA কী

নিম্নলিখিত পরামিতিগুলি একটি RSA কী তৈরি করতে প্রয়োজনীয়৷

  • ট্যাগ::KEY_SIZE বিটগুলিতে, পাবলিক মডুলাসের আকার নির্দিষ্ট করে। যদি বাদ দেওয়া হয়, পদ্ধতিটি ErrorCode::UNSUPPORTED_KEY_SIZE প্রদান করে। সমর্থিত মানগুলি হল 1024, 2048, 3072 এবং 4096৷ প্রস্তাবিত মানগুলি হল সমস্ত কী মাপ যা 8 এর গুণিতক৷
  • ট্যাগ::RSA_PUBLIC_EXPONENT RSA পাবলিক এক্সপোনেন্ট মান নির্দিষ্ট করে। যদি বাদ দেওয়া হয়, পদ্ধতিটি ErrorCode::INVALID_ARGUMENT প্রদান করে। সমর্থিত মানগুলি হল 3 এবং 65537৷ প্রস্তাবিত মানগুলি হল 2^64 পর্যন্ত সমস্ত প্রধান মান৷

নিম্নলিখিত পরামিতিগুলি একটি RSA কী তৈরি করার জন্য প্রয়োজনীয় নয়, তবে সেগুলি ছাড়া একটি RSA কী তৈরি করা একটি কী তৈরি করে যা ব্যবহারযোগ্য নয়৷ যাইহোক, generateKey ফাংশন কোনো ত্রুটি ফেরত দেয় না যদি এই প্যারামিটারগুলি বাদ দেওয়া হয়।

  • ট্যাগ:: উদ্দেশ্য অনুমোদিত উদ্দেশ্য নির্দিষ্ট করে। সমস্ত উদ্দেশ্য RSA কীগুলির জন্য সমর্থিত হতে হবে, যেকোনো সংমিশ্রণে।
  • ট্যাগ::ডাইজেস্ট ডাইজেস্ট অ্যালগরিদম নির্দিষ্ট করে যা নতুন কী দিয়ে ব্যবহার করা যেতে পারে। সমস্ত ডাইজেস্ট অ্যালগরিদমকে সমর্থন করে না এমন ইমপ্লিমেন্টগুলিকে কী জেনারেশনের অনুরোধগুলিকে গ্রহণ করতে হবে যাতে অসমর্থিত ডাইজেস্ট অন্তর্ভুক্ত থাকে। অসমর্থিত ডাইজেস্টগুলি ফিরিয়ে দেওয়া মূল বৈশিষ্ট্যগুলির মধ্যে "সফ্টওয়্যার-প্রবর্তিত" তালিকায় স্থাপন করা উচিত। এর কারণ হল কী সেই অন্যান্য ডাইজেস্টের সাথে ব্যবহারযোগ্য, কিন্তু হজম করা সফ্টওয়্যারে সঞ্চালিত হয়। তারপর হার্ডওয়্যারকে Digest::NONE দিয়ে অপারেশন করতে বলা হয়।
  • ট্যাগ::প্যাডিং প্যাডিং মোডগুলি নির্দিষ্ট করে যা নতুন কী দিয়ে ব্যবহার করা যেতে পারে। সমস্ত ডাইজেস্ট অ্যালগরিদমকে সমর্থন করে না এমন ইমপ্লিমেন্টেশনগুলিকে PaddingMode::RSA_PSS এবং PaddingMode::RSA_OAEP মূল বৈশিষ্ট্যগুলির সফ্টওয়্যার-প্রবর্তিত তালিকায় রাখতে হবে যদি কোনও অসমর্থিত ডাইজেস্ট অ্যালগরিদম নির্দিষ্ট করা থাকে।

ECDSA কী

শুধুমাত্র ট্যাগ::KEY_SIZE একটি ECDSA কী তৈরি করতে প্রয়োজনীয়৷ এটি ইসি গ্রুপ নির্বাচন করতে ব্যবহৃত হয়। সমর্থিত মানগুলি হল 224, 256, 384 এবং 521, যা যথাক্রমে NIST p-224, p-256, p-384 এবং p521 বক্ররেখা নির্দেশ করে৷

ট্যাগ::ডাইজেস্ট একটি দরকারী ECDSA কী-এর জন্যও প্রয়োজনীয়, কিন্তু প্রজন্মের জন্য প্রয়োজনীয় নয়।

AES কী

একটি AES কী তৈরি করতে শুধুমাত্র Tag::KEY_SIZE প্রয়োজন। যদি বাদ দেওয়া হয়, পদ্ধতিটি ErrorCode::UNSUPPORTED_KEY_SIZE প্রদান করে। সমর্থিত মান হল 128 এবং 256, 192-বিট AES কীগুলির জন্য ঐচ্ছিক সমর্থন সহ।

নিম্নলিখিত পরামিতিগুলি AES কীগুলির জন্য বিশেষভাবে প্রাসঙ্গিক, তবে একটি তৈরি করার জন্য প্রয়োজনীয় নয়:

  • Tag::BLOCK_MODE ব্লক মোডগুলি নির্দিষ্ট করে যার সাথে নতুন কী ব্যবহার করা যেতে পারে।
  • Tag::PADDING ব্যবহার করা যেতে পারে এমন প্যাডিং মোডগুলি নির্দিষ্ট করে৷ এটি শুধুমাত্র ECB এবং CBC মোডের জন্য প্রাসঙ্গিক।

যদি GCM ব্লক মোড নির্দিষ্ট করা থাকে, তাহলে ট্যাগ প্রদান করুন::MIN_MAC_LENGTH । যদি বাদ দেওয়া হয়, পদ্ধতিটি ErrorCode::MISSING_MIN_MAC_LENGTH প্রদান করে। ট্যাগের মান 8 এর গুণিতক এবং 96 এবং 128 এর মধ্যে।

HMAC কী

HMAC কী জেনারেশনের জন্য নিম্নলিখিত প্যারামিটারগুলি প্রয়োজন:

  • ট্যাগ::KEY_SIZE বিটগুলিতে কী আকার নির্দিষ্ট করে। 64-এর থেকে ছোট মান এবং 8-এর গুণিতক নয় এমন মানগুলি সমর্থিত নয়৷ 64 থেকে 512 পর্যন্ত 8 এর সমস্ত গুণিতক সমর্থিত। বড় মান সমর্থিত হতে পারে.
  • ট্যাগ::MIN_MAC_LENGTH MAC-এর ন্যূনতম দৈর্ঘ্য নির্দিষ্ট করে যা এই কী দিয়ে তৈরি বা যাচাই করা যেতে পারে। মানটি 8 এর গুণিতক এবং কমপক্ষে 64।
  • ট্যাগ::ডাইজেস্ট কীটির জন্য ডাইজেস্ট অ্যালগরিদম নির্দিষ্ট করে। ঠিক একটি ডাইজেস্ট নির্দিষ্ট করা হয়েছে, অন্যথায় ErrorCode::UNSUPPORTED_DIGEST ফেরত দিন। যদি ডাইজেস্ট ট্রাস্টলেট দ্বারা সমর্থিত না হয়, তাহলে ErrorCode::UNSUPPORTED_DIGEST ফেরত দিন।

মূল বৈশিষ্ট্য

যদি বৈশিষ্ট্যের আর্গুমেন্ট অ-NULL হয়, তাহলে generateKey নতুন জেনারেট হওয়া কী-এর বৈশিষ্ট্যগুলিকে সঠিকভাবে হার্ডওয়্যার-প্রবর্তিত এবং সফ্টওয়্যার-প্রবর্তিত তালিকায় বিভক্ত করে। কোন বৈশিষ্ট্য কোন তালিকায় যায় তার বর্ণনার জন্য getKeyCharacteristics দেখুন। ট্যাগ::APPLICATION_ID এবং Tag::APPLICATION_DATA ব্যতীত, কী জেনারেশনের জন্য নির্দিষ্ট করা সমস্ত প্যারামিটারগুলি ফেরত দেওয়া বৈশিষ্ট্যগুলি অন্তর্ভুক্ত করে। যদি এই ট্যাগগুলি কী প্যারামিটারের মধ্যে অন্তর্ভুক্ত করা হয়, তবে সেগুলি প্রত্যাবর্তিত বৈশিষ্ট্যগুলি থেকে সরানো হয় যাতে ফিরে আসা কী ব্লব পরীক্ষা করে তাদের মানগুলি খুঁজে পাওয়া সম্ভব না হয়। যাইহোক, এগুলি ক্রিপ্টোগ্রাফিকভাবে কী ব্লবের সাথে আবদ্ধ থাকে, যাতে কী ব্যবহার করার সময় সঠিক মান প্রদান করা না হলে, ব্যবহার ব্যর্থ হয়। একইভাবে, Tag::ROOT_OF_TRUST কী ক্রিপ্টোগ্রাফিকভাবে আবদ্ধ, কিন্তু এটি কী তৈরি বা আমদানির সময় নির্দিষ্ট নাও হতে পারে এবং ফেরত দেওয়া হয় না।

প্রদত্ত ট্যাগগুলি ছাড়াও, ট্রাস্টলেট Tag::ORIGIN , KeyOrigin::GENERATED মান সহ যোগ করে এবং যদি কী রোলব্যাক প্রতিরোধী হয়,

ট্যাগ::ROLLBACK_RESISTANT

রোলব্যাক প্রতিরোধ

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

একটি কী রোলব্যাক প্রতিরোধী হয় যদি সুরক্ষিত হার্ডওয়্যার গ্যারান্টি দেয় যে মুছে ফেলা কীগুলি পরে পুনরুদ্ধার করা যাবে না। এটি সাধারণত একটি বিশ্বস্ত অবস্থানে অতিরিক্ত কী মেটাডেটা সংরক্ষণ করে করা হয় যা আক্রমণকারী দ্বারা ম্যানিপুলেট করা যায় না। মোবাইল ডিভাইসে, এর জন্য ব্যবহৃত প্রক্রিয়াটি সাধারণত রিপ্লে প্রোটেক্টেড মেমরি ব্লক (RPMB)। কারণ তৈরি করা কীগুলির সংখ্যা মূলত সীমাহীন এবং রোলব্যাক প্রতিরোধের জন্য ব্যবহৃত বিশ্বস্ত স্টোরেজটি আকারে সীমিত হতে পারে, এই পদ্ধতিটি সফল হওয়া দরকার এমনকি যদি নতুন কীটির জন্য রোলব্যাক প্রতিরোধ না দেওয়া যায়। সেক্ষেত্রে, Tag::ROLLBACK_RESISTANT মূল বৈশিষ্ট্যের সাথে যোগ করা উচিত নয়।

GetKey বৈশিষ্ট্য

সংস্করণ : 1, 2, 3

এই ফাংশনটি কীমাস্টার 1-এ get_key_characteristics হিসাবে চালু করা হয়েছিল এবং কীমাস্টার 3-এ পুনঃনামকরণ করা হয়েছিল।

প্রদত্ত কী-এর সাথে সম্পর্কিত পরামিতি এবং অনুমোদন ফেরত দেয়, দুটি সেটে বিভক্ত: হার্ডওয়্যার-প্রবর্তিত এবং সফ্টওয়্যার-প্রবর্তিত। এখানে বর্ণনাটি generateKey এবং importKey দ্বারা প্রত্যাবর্তিত মূল বৈশিষ্ট্যের তালিকায় সমানভাবে প্রযোজ্য।

যদি Tag::APPLICATION_ID কী তৈরি বা আমদানির সময় প্রদান করা হয়, তাহলে clientId আর্গুমেন্টে এই পদ্ধতিতে একই মান প্রদান করা হয়। অন্যথায়, পদ্ধতিটি ErrorCode::INVALID_KEY_BLOB প্রদান করে। একইভাবে, যদি Tag::APPLICATION_DATA জেনারেশন বা আমদানির সময় প্রদান করা হয়, তাহলে appData আর্গুমেন্টে এই পদ্ধতিতে একই মান প্রদান করা হয়।

এই পদ্ধতি দ্বারা প্রত্যাবর্তিত বৈশিষ্ট্যগুলি নির্দিষ্ট কীটির ধরন এবং ব্যবহার সম্পূর্ণরূপে বর্ণনা করে।

একটি প্রদত্ত ট্যাগ হার্ডওয়্যার-প্রবর্তিত বা সফ্টওয়্যার-প্রবর্তিত তালিকার অন্তর্গত কিনা তা নির্ধারণের সাধারণ নিয়ম হল যে ট্যাগের অর্থ যদি সুরক্ষিত হার্ডওয়্যার দ্বারা সম্পূর্ণরূপে নিশ্চিত করা হয় তবে এটি হার্ডওয়্যার প্রয়োগ করা হয়। অন্যথায়, এটি সফ্টওয়্যার প্রয়োগ করা হয়েছে। নীচে নির্দিষ্ট ট্যাগের একটি তালিকা রয়েছে যার সঠিক বরাদ্দ অস্পষ্ট হতে পারে:

  • Tag::ALGORITHM , Tag::KEY_SIZE , এবং Tag::RSA_PUBLIC_EXPONENT হল কীটির অন্তর্নিহিত বৈশিষ্ট্য। হার্ডওয়্যার দ্বারা সুরক্ষিত যে কোনও কীর জন্য, এই ট্যাগগুলি হার্ডওয়্যার-প্রবর্তিত তালিকায় থাকবে।
  • ট্যাগ::ডাইজেস্ট মানগুলি যা সুরক্ষিত হার্ডওয়্যার দ্বারা সমর্থিত হয় হার্ডওয়্যার-সমর্থিত তালিকায় রাখা হয়। অসমর্থিত ডাইজেস্টগুলি সফ্টওয়্যার-সমর্থিত তালিকায় যায়৷
  • ট্যাগ::প্যাডিং মানগুলি সাধারণত হার্ডওয়্যার-সমর্থিত তালিকায় যায়, যদি না এমন একটি সম্ভাবনা থাকে যে একটি নির্দিষ্ট প্যাডিং মোড সফ্টওয়্যার দ্বারা সঞ্চালিত হতে পারে৷ সেই ক্ষেত্রে, তারা সফ্টওয়্যার-প্রবর্তিত তালিকায় যায়। এই ধরনের একটি সম্ভাবনা RSA কীগুলির জন্য উদ্ভূত হয় যা নিরাপদ হার্ডওয়্যার দ্বারা সমর্থিত নয় এমন ডাইজেস্ট অ্যালগরিদমগুলির সাথে PSS বা OAEP প্যাডিংকে অনুমতি দেয়৷
  • ট্যাগ::USER_SECURE_ID এবং Tag::USER_AUTH_TYPE শুধুমাত্র হার্ডওয়্যার-প্রবর্তিত হয় যদি ব্যবহারকারীর প্রমাণীকরণ হার্ডওয়্যার প্রয়োগ করা হয়। এটি সম্পন্ন করার জন্য, কীমাস্টার ট্রাস্টলেট এবং প্রাসঙ্গিক প্রমাণীকরণ ট্রাস্টলেট উভয়কেই সুরক্ষিত থাকতে হবে এবং প্রমাণীকরণ টোকেনগুলি স্বাক্ষর ও যাচাই করতে ব্যবহৃত একটি গোপন HMAC কী শেয়ার করতে হবে। বিস্তারিত জানার জন্য প্রমাণীকরণ পৃষ্ঠা দেখুন।
  • Tag::ACTIVE_DATETIME , Tag::ORIGINATION_EXPIRE_DATETIME , এবং Tag::USAGE_EXPIRE_DATETIME ট্যাগগুলির জন্য একটি যাচাইযোগ্যভাবে সঠিক প্রাচীর ঘড়িতে অ্যাক্সেস প্রয়োজন৷ সর্বাধিক সুরক্ষিত হার্ডওয়্যারের শুধুমাত্র অ-সুরক্ষিত OS দ্বারা প্রদত্ত সময়ের তথ্যে অ্যাক্সেস থাকে, যার অর্থ ট্যাগগুলি সফ্টওয়্যার প্রয়োগ করা হয়৷
  • Tag::ORIGIN সবসময় হার্ডওয়্যার-বাউন্ড কীগুলির জন্য হার্ডওয়্যার তালিকায় থাকে। সেই তালিকায় এর উপস্থিতি হল যেভাবে উচ্চ স্তরগুলি নির্ধারণ করে যে একটি কী হার্ডওয়্যার-সমর্থিত।

importKey

সংস্করণ : 1, 2, 3

এই ফাংশনটি কীমাস্টার 1-এ import_key হিসাবে চালু করা হয়েছিল এবং কীমাস্টার 3-এ নামকরণ করা হয়েছিল।

Keymaster হার্ডওয়্যারে মূল উপাদান আমদানি করে। কী সংজ্ঞা পরামিতি এবং আউটপুট বৈশিষ্ট্যগুলি নিম্নলিখিত ব্যতিক্রমগুলি সহ generateKey এর মতোই পরিচালনা করা হয়:

  • ট্যাগ::KEY_SIZE এবং ট্যাগ::RSA_PUBLIC_EXPONENT (শুধুমাত্র RSA কীগুলির জন্য) ইনপুট পরামিতিগুলিতে প্রয়োজনীয় নয়৷ যদি প্রদান না করা হয়, ট্রাস্টলেট প্রদত্ত মূল উপাদান থেকে মান নির্ণয় করে এবং মূল বৈশিষ্ট্যগুলিতে উপযুক্ত ট্যাগ এবং মান যোগ করে। যদি পরামিতি প্রদান করা হয়, তাহলে ট্রাস্টলেট মূল উপাদানের বিরুদ্ধে তাদের যাচাই করে। অমিলের ক্ষেত্রে, পদ্ধতিটি ErrorCode::IMPORT_PARAMETER_MISMATCH প্রদান করে।
  • ফেরত দেওয়া Tag::ORIGIN-এর KeyOrigin::IMPORTED এর মতই মান রয়েছে।

রপ্তানি কী

সংস্করণ : 1, 2, 3

এই ফাংশনটি কীমাস্টার 1-এ export_key হিসাবে চালু করা হয়েছিল এবং কীমাস্টার 3-এ নাম পরিবর্তন করা হয়েছিল।

একটি কীমাস্টার RSA বা EC কী জোড়া থেকে একটি সর্বজনীন কী রপ্তানি করে।

যদি Tag::APPLICATION_ID কী তৈরি বা আমদানির সময় প্রদান করা হয়, তাহলে clientId আর্গুমেন্টে এই পদ্ধতিতে একই মান প্রদান করা হয়। অন্যথায়, পদ্ধতিটি ErrorCode::INVALID_KEY_BLOB প্রদান করে। একইভাবে, যদি Tag::APPLICATION_DATA জেনারেশন বা আমদানির সময় প্রদান করা হয়, তাহলে appData আর্গুমেন্টে এই পদ্ধতিতে একই মান প্রদান করা হয়।

ডিলিট কী

সংস্করণ : 1, 2, 3

এই ফাংশনটি Keymaster 1-এ delete_key হিসাবে চালু করা হয়েছিল এবং Keymaster 3-এ নামকরণ করা হয়েছিল।

প্রদত্ত কী মুছে দেয়। এই পদ্ধতিটি ঐচ্ছিক, এবং এটি শুধুমাত্র কীমাস্টার মডিউল দ্বারা প্রয়োগ করা হয় যা রোলব্যাক প্রতিরোধ প্রদান করে।

ডিলিট সব কী

সংস্করণ : 1, 2, 3

এই ফাংশনটি Keymaster 1-এ delete_all_keys হিসাবে চালু করা হয়েছিল এবং Keymaster 3-এ পুনঃনামকরণ করা হয়েছিল।

সমস্ত কী মুছে দেয়। এই পদ্ধতিটি ঐচ্ছিক, এবং এটি শুধুমাত্র কীমাস্টার মডিউল দ্বারা প্রয়োগ করা হয় যা রোলব্যাক প্রতিরোধ প্রদান করে।

প্রমাণীকরণ আইডি ধ্বংস করুন

সংস্করণ : 3

destroyAttestationIds() পদ্ধতিটি স্থায়ীভাবে নতুন (ঐচ্ছিক, কিন্তু অত্যন্ত প্রস্তাবিত) আইডি প্রত্যয়ন বৈশিষ্ট্যটি নিষ্ক্রিয় করতে ব্যবহৃত হয়। এই পদ্ধতিটি কল করার পরে যদি TEE-এর কাছে নিশ্চিত করার কোন উপায় না থাকে যে আইডি প্রত্যয়ন স্থায়ীভাবে অক্ষম করা হয়েছে, তাহলে আইডি প্রত্যয়নটি মোটেই কার্যকর করা উচিত নয়, এই ক্ষেত্রে এই পদ্ধতিটি কিছুই করে না এবং ErrorCode::UNIMPLEMENTED প্রদান করে। আইডি প্রত্যয়ন সমর্থিত হলে, এই পদ্ধতিটি প্রয়োগ করা প্রয়োজন এবং ভবিষ্যতের সমস্ত আইডি প্রত্যয়ন প্রচেষ্টা স্থায়ীভাবে অক্ষম করতে হবে। পদ্ধতিটি যে কোনো সংখ্যক বার বলা যেতে পারে। যদি আইডি প্রত্যয়ন ইতিমধ্যেই স্থায়ীভাবে অক্ষম করা থাকে, তবে পদ্ধতিটি কিছুই করে না এবং ErrorCode::OK প্রদান করে।

এই পদ্ধতিটি যে ত্রুটির কোডগুলি ফেরত দিতে পারে তা হল ErrorCode::UNIMPLEMENTED (যদি আইডি প্রত্যয়ন সমর্থিত না হয়), ErrorCode:OK , ErrorCode::KEYMASTER_NOT_CONFIGURED বা নিরাপদ হার্ডওয়্যারের সাথে যোগাযোগ করতে ব্যর্থতার ইঙ্গিত করে ত্রুটি কোডগুলির একটি।

শুরু

সংস্করণ : 1, 2, 3

একটি ক্রিপ্টোগ্রাফিক অপারেশন শুরু করে, নির্দিষ্ট কী ব্যবহার করে, নির্দিষ্ট উদ্দেশ্যের জন্য, নির্দিষ্ট পরামিতিগুলির সাথে (যথাযথ হিসাবে), এবং একটি অপারেশন হ্যান্ডেল ফেরত দেয় যা অপারেশন সম্পূর্ণ করতে আপডেট এবং ফিনিস সহ ব্যবহৃত হয়। অপারেশন হ্যান্ডেলটি প্রমাণীকৃত ক্রিয়াকলাপে "চ্যালেঞ্জ" টোকেন হিসাবেও ব্যবহৃত হয় এবং এই জাতীয় ক্রিয়াকলাপগুলির জন্য প্রমাণীকরণ টোকেনের challenge ক্ষেত্রে অন্তর্ভুক্ত করা হয়।

একটি কীমাস্টার বাস্তবায়ন কমপক্ষে 16টি সমসাময়িক ক্রিয়াকলাপ সমর্থন করে। কীস্টোর 15 পর্যন্ত ব্যবহার করে, একটি পাসওয়ার্ড এনক্রিপশনের জন্য ব্যবহার করার জন্য ভল্ডের জন্য রেখে দেয়। যখন কীস্টোরে 15টি অপারেশন চলছে ( begin বলা হয়েছে, কিন্তু finish বা abort এখনও বলা হয়নি) এবং এটি একটি 16 তম শুরু করার জন্য একটি অনুরোধ পায়, এটি সক্রিয় ক্রিয়াকলাপগুলির সংখ্যা কমাতে সম্প্রতি ব্যবহৃত অপারেশনটিকে abort বলে। কল করার আগে 14 থেকে নতুন অনুরোধ করা অপারেশন শুরু করতে begin

যদি Tag::APPLICATION_ID বা Tag::APPLICATION_DATA কী তৈরি বা আমদানির সময় নির্দিষ্ট করা হয়, তাহলে এই পদ্ধতিতে inParams আর্গুমেন্টে মূলভাবে নির্দিষ্ট করা মান সহ সেই ট্যাগগুলিকে অন্তর্ভুক্ত করার জন্য কল begin

অনুমোদন প্রয়োগ

এই পদ্ধতির সময়, নিম্নলিখিত কী অনুমোদন ট্রাস্টলেট দ্বারা প্রয়োগ করা হয় যদি বাস্তবায়ন তাদের "হার্ডওয়্যার-প্রবর্তিত" বৈশিষ্ট্যগুলিতে রাখে এবং যদি অপারেশনটি একটি সর্বজনীন কী অপারেশন না হয়। পাবলিক কী অপারেশন, যার অর্থ KeyPurpose::ENCRYPT এবং KeyPurpose::VERIFY , RSA বা EC কী সহ, অনুমোদনের প্রয়োজনীয়তা পূরণ না হলেও সফল হতে দেওয়া হয়।

  • ট্যাগ::উদ্দেশ্য : begin() কলে উল্লিখিত উদ্দেশ্যটিকে মূল অনুমোদনের উদ্দেশ্যগুলির একটির সাথে মিলতে হবে, যদি না অনুরোধকৃত অপারেশনটি একটি সর্বজনীন কী অপারেশন হয়। যদি নির্দিষ্ট উদ্দেশ্য মেলে না এবং অপারেশনটি একটি সর্বজনীন কী অপারেশন না হয়, begin ফেরত দেবে ErrorCode::UNSUPPORTED_PURPOSE । পাবলিক কী ক্রিয়াকলাপগুলি অসমমিত এনক্রিপশন বা যাচাইকরণ ক্রিয়াকলাপ।
  • ট্যাগ::ACTIVE_DATETIME শুধুমাত্র একটি বিশ্বস্ত UTC সময় উৎস উপলব্ধ হলেই প্রয়োগ করা যেতে পারে৷ যদি বর্তমান তারিখ এবং সময় ট্যাগ মানের আগে হয়, তাহলে পদ্ধতিটি ErrorCode::KEY_NOT_YET_VALID প্রদান করে।
  • ট্যাগ::ORIGINATION_EXPIRE_DATETIME শুধুমাত্র তখনই প্রয়োগ করা যেতে পারে যদি একটি বিশ্বস্ত UTC সময় উৎস উপলব্ধ থাকে৷ যদি বর্তমান তারিখ এবং সময় ট্যাগ মানের চেয়ে পরে হয় এবং উদ্দেশ্যটি হয় KeyPurpose::ENCRYPT বা KeyPurpose::SIGN , পদ্ধতিটি ErrorCode::KEY_EXPIRED প্রদান করে।
  • ট্যাগ::USAGE_EXPIRE_DATETIME শুধুমাত্র একটি বিশ্বস্ত UTC সময় উৎস উপলব্ধ হলেই প্রয়োগ করা যেতে পারে৷ যদি বর্তমান তারিখ এবং সময় ট্যাগ মানের চেয়ে পরে হয় এবং উদ্দেশ্যটি হয় KeyPurpose::DECRYPT বা KeyPurpose::VERIFY , পদ্ধতিটি ErrorCode::KEY_EXPIRED প্রদান করে।
  • ট্যাগ::MIN_SECONDS_BETWEEN_OPS কে একটি বিশ্বস্ত আপেক্ষিক টাইমারের সাথে তুলনা করা হয় যা কীটির শেষ ব্যবহার নির্দেশ করে। যদি শেষ ব্যবহারের সময় এবং ট্যাগ মান বর্তমান সময়ের চেয়ে কম হয়, তবে পদ্ধতিটি ErrorCode::KEY_RATE_LIMIT_EXCEEDED প্রদান করে। গুরুত্বপূর্ণ বাস্তবায়ন বিবরণের জন্য ট্যাগ বিবরণ দেখুন.
  • ট্যাগ::MAX_USES_PER_BOOT একটি সুরক্ষিত কাউন্টারের সাথে তুলনা করা হয় যা বুট সময় থেকে কীটির ব্যবহার ট্র্যাক করে। যদি পূর্ববর্তী ব্যবহারের গণনা ট্যাগ মান অতিক্রম করে, পদ্ধতিটি ErrorCode::KEY_MAX_OPS_EXCEEDED প্রদান করে।
  • ট্যাগ::USER_SECURE_ID এই পদ্ধতি দ্বারা প্রয়োগ করা হয় শুধুমাত্র যদি কীটিতে ট্যাগ::AUTH_TIMEOUT থাকে। যদি কীটিতে উভয়ই থাকে, তাহলে এই পদ্ধতিটি অবশ্যই একটি বৈধ Tag::AUTH_TOKEN inParams এ পাবে। প্রমাণীকরণ টোকেনটি বৈধ হওয়ার জন্য, নিম্নলিখিতগুলিকে সত্য হতে হবে:
    • HMAC ক্ষেত্র সঠিকভাবে যাচাই করে।
    • কী থেকে ট্যাগ::USER_SECURE_ID মানগুলির মধ্যে অন্তত একটি টোকেনের সুরক্ষিত ID মানগুলির মধ্যে অন্তত একটির সাথে মেলে৷
    • কীটিতে একটি Tag::USER_AUTH_TYPE আছে যা টোকেনের প্রমাণ প্রকারের সাথে মেলে।

    যদি এই শর্তগুলির মধ্যে কোনটি পূরণ না হয় তবে পদ্ধতিটি ErrorCode::KEY_USER_NOT_AUTHENTICATED প্রদান করে।

  • ট্যাগ::CALLER_NONCE কলকারীকে একটি ননস বা ইনিশিয়ালাইজেশন ভেক্টর (IV) নির্দিষ্ট করার অনুমতি দেয়। যদি কীটিতে এই ট্যাগ না থাকে, কিন্তু কলকারী এই পদ্ধতিতে ট্যাগ::NONCE প্রদান করে, ErrorCode::CALLER_NONCE_PROHIBITED ফেরত দেওয়া হয়।
  • ট্যাগ::BOOTLOADER_ONLY নির্দিষ্ট করে যে শুধুমাত্র বুটলোডার কী ব্যবহার করতে পারে। বুটলোডার চালানো শেষ হওয়ার পরে যদি এই পদ্ধতিটিকে একটি বুটলোডার-কেবল কী দিয়ে ডাকা হয়, তাহলে এটি ErrorCode::INVALID_KEY_BLOB প্রদান করে।

RSA কী

সমস্ত RSA কী ক্রিয়াকলাপগুলি inParams এ ঠিক একটি প্যাডিং মোড নির্দিষ্ট করে৷ অনির্দিষ্ট বা একাধিকবার নির্দিষ্ট করা হলে, পদ্ধতিটি ErrorCode::UNSUPPORTED_PADDING_MODE প্রদান করে।

RSA সাইনিং এবং ভেরিফিকেশন অপারেশনের জন্য একটি ডাইজেস্ট প্রয়োজন, যেমনটি OAEP প্যাডিং মোডের সাথে RSA এনক্রিপশন এবং ডিক্রিপশন অপারেশন করে। এই ক্ষেত্রে, কলার inParams এ ঠিক একটি ডাইজেস্ট নির্দিষ্ট করে। অনির্দিষ্ট বা একাধিকবার নির্দিষ্ট করা হলে, পদ্ধতিটি ErrorCode::UNSUPPORTED_DIGEST প্রদান করে।

ব্যক্তিগত কী ক্রিয়াকলাপ ( KeyPurpose::DECYPT এবং KeyPurpose::SIGN ) এর জন্য ডাইজেস্ট এবং প্যাডিংয়ের অনুমোদন প্রয়োজন, যার অর্থ হল মূল অনুমোদনগুলিতে নির্দিষ্ট মান থাকতে হবে। যদি তা না হয়, পদ্ধতিটি যথাযথভাবে ErrorCode::INCOMPATIBLE_DIGEST বা ErrorCode::INCOMPATIBLE_PADDING প্রদান করে। অননুমোদিত ডাইজেস্ট বা প্যাডিং সহ সর্বজনীন কী ক্রিয়াকলাপ ( KeyPurpose::ENCRYPT এবং KeyPurpose::VERIFY ) অনুমোদিত।

PaddingMode::NONE বাদ দিয়ে, সমস্ত RSA প্যাডিং মোড শুধুমাত্র কিছু নির্দিষ্ট উদ্দেশ্যে প্রযোজ্য। বিশেষভাবে, PaddingMode::RSA_PKCS1_1_5_SIGN এবং PaddingMode::RSA_PSS শুধুমাত্র স্বাক্ষর এবং যাচাইকরণ সমর্থন করে, যখন PaddingMode::RSA_PKCS1_1_1_5_ENCRYPT এবং PaddingMode::RSA_OAEP শুধুমাত্র এনক্রিপশন এবং ডিক্রিপশন সমর্থন করে। পদ্ধতিটি ErrorCode::UNSUPPORTED_PADDING_MODE প্রদান করে যদি নির্দিষ্ট মোড নির্দিষ্ট উদ্দেশ্য সমর্থন না করে।

প্যাডিং মোড এবং ডাইজেস্টের মধ্যে কিছু গুরুত্বপূর্ণ মিথস্ক্রিয়া রয়েছে:

  • PaddingMode::NONE নির্দেশ করে যে একটি "raw" RSA অপারেশন করা হয়েছে। স্বাক্ষর বা যাচাই করা হলে, Digest::NONE নির্দিষ্ট করা নেই। আনপ্যাডেড এনক্রিপশন বা ডিক্রিপশনের জন্য কোন ডাইজেস্টের প্রয়োজন নেই।
  • PaddingMode::RSA_PKCS1_1_5_SIGN প্যাডিংয়ের জন্য একটি ডাইজেস্ট প্রয়োজন। ডাইজেস্ট হতে পারে Digest::NONE , এই ক্ষেত্রে কীমাস্টার বাস্তবায়ন একটি সঠিক PKCS#1 v1.5 স্বাক্ষর কাঠামো তৈরি করতে পারে না, কারণ এটি DigestInfo কাঠামো যোগ করতে পারে না। পরিবর্তে, বাস্তবায়ন 0x00 || 0x01 || PS || 0x00 || M , যেখানে M হল প্রদত্ত বার্তা এবং PS হল প্যাডিং স্ট্রিং। RSA কী-এর আকার বার্তার চেয়ে কমপক্ষে 11 বাইট বড় হতে হবে, অন্যথায় পদ্ধতিটি ErrorCode::INVALID_INPUT_LENGTH প্রদান করে।
  • PaddingMode::RSA_PKCS1_1_1_5_ENCRYPT প্যাডিংয়ের জন্য ডাইজেস্টের প্রয়োজন হয় না।
  • PaddingMode::RSA_PSS প্যাডিংয়ের জন্য একটি ডাইজেস্ট প্রয়োজন, যা Digest::NONE নাও হতে পারে। Digest::NONE নির্দিষ্ট না থাকলে, পদ্ধতিটি ErrorCode::INCOMPATIBLE_DIGEST প্রদান করে। উপরন্তু, RSA কী-এর আকার ডাইজেস্টের আউটপুট আকারের চেয়ে কমপক্ষে 2 + D বাইট বড় হতে হবে, যেখানে D হল ডাইজেস্টের আকার, বাইটে। অন্যথায় পদ্ধতিটি ErrorCode::INCOMPATIBLE_DIGEST প্রদান করে। লবণের আকার ডি।
  • PaddingMode::RSA_OAEP প্যাডিংয়ের জন্য একটি ডাইজেস্ট প্রয়োজন, যা Digest::NONE নাও হতে পারে। Digest::NONE নির্দিষ্ট না থাকলে, পদ্ধতিটি ErrorCode::INCOMPATIBLE_DIGEST প্রদান করে।

ইসি কী

ইসি কী অপারেশনগুলি inParams ঠিক একটি প্যাডিং মোড নির্দিষ্ট করে। অনির্দিষ্ট বা একাধিকবার নির্দিষ্ট করা হলে, পদ্ধতিটি ErrorCode::UNSUPPORTED_PADDING_MODE প্রদান করে।

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

AES কী

AES কী অপারেশনগুলি inParams ঠিক একটি ব্লক মোড এবং একটি প্যাডিং মোড নির্দিষ্ট করে৷ যদি উভয় মান অনির্দিষ্ট হয় বা একাধিকবার নির্দিষ্ট করা হয়, তাহলে ErrorCode::UNSUPPORTED_BLOCK_MODE বা ErrorCode::UNSUPPORTED_PADDING_MODE ফেরত দিন। নির্দিষ্ট মোডগুলিকে কী দ্বারা অনুমোদিত হতে হবে, অন্যথায় পদ্ধতিটি ErrorCode::INCOMPATIBLE_BLOCK_MODE বা ErrorCode::INCOMPATIBLE_PADDING_MODE প্রদান করে।

যদি ব্লক মোড BlockMode::GCM হয়, inParams Tag::MAC_LENGTH নির্দিষ্ট করে, এবং নির্দিষ্ট মান হল 8-এর একটি গুণিতক যা মূল অনুমোদনগুলিতে Tag::MIN_MAC_LENGTH এর মানের থেকে 128-এর বেশি বা কম নয়। MAC দৈর্ঘ্য 128-এর বেশি বা 8-এর বেশি নয়, ErrorCode::UNSUPPORTED_MAC_LENGTH ফেরত দিন। কীটির ন্যূনতম দৈর্ঘ্যের চেয়ে কম মানগুলির জন্য, ErrorCode::INVALID_MAC_LENGTH ফেরত দিন।

যদি ব্লক মোড BlockMode::GCM বা BlockMode::CTR হয়, তাহলে নির্দিষ্ট প্যাডিং মোডটি PaddingMode::NONE হতে হবে। BlockMode::ECB বা BlockMode::CBC এর জন্য, মোডটি PaddingMode::NONE বা PaddingMode::PKCS7 হতে পারে। যদি প্যাডিং মোড এই শর্তগুলি পূরণ না করে, তাহলে ErrorCode::INCOMPATIBLE_PADDING_MODE ফেরত দিন।

যদি ব্লক মোড BlockMode::CBC , BlockMode::CTR , বা BlockMode::GCM হয়, তাহলে একটি ইনিশিয়ালাইজেশন ভেক্টর বা ননস প্রয়োজন। বেশির ভাগ ক্ষেত্রেই, কলকারীদের IV বা ননস প্রদান করা উচিত নয়। সেক্ষেত্রে, কীমাস্টার ইমপ্লিমেন্টেশন একটি র্যান্ডম IV বা nonce তৈরি করে এবং Tag::NONCE-outParams এর মাধ্যমে ফেরত দেয়। CBC এবং CTR IV হল 16 বাইট। GCM nonces হল 12 বাইট। যদি মূল অনুমোদনগুলিতে Tag::CALLER_NONCE থাকে, তাহলে কলকারী ট্যাগ::NONCE- এর সাথে একটি IV/nonce প্রদান করতে পারে inParams এ। যদি ট্যাগ::CALLER_NONCE অনুমোদিত না থাকা অবস্থায় একটি নন্স প্রদান করা হয়, তাহলে ErrorCode::CALLER_NONCE_PROHIBITED ফেরত দিন। ট্যাগ::CALLER_NONCE অনুমোদিত হওয়ার সময় যদি একটি নন্স প্রদান না করা হয়, তাহলে একটি এলোমেলো IV/nonce তৈরি করুন।

HMAC কী

HMAC কী অপারেশন Tag::MAC_LENGTH inParams এ নির্দিষ্ট করে। নির্দিষ্ট মান অবশ্যই 8 এর একটি গুণিতক হতে হবে যা ডাইজেস্ট দৈর্ঘ্যের চেয়ে বেশি নয় বা মূল অনুমোদনগুলিতে Tag::MIN_MAC_LENGTH এর মানের থেকে কম নয়৷ ডাইজেস্ট দৈর্ঘ্যের চেয়ে বেশি MAC দৈর্ঘ্যের জন্য বা 8-এর বহুগুণ নয়, ErrorCode::UNSUPPORTED_MAC_LENGTH ফেরত দিন। কীটির ন্যূনতম দৈর্ঘ্যের চেয়ে কম মানগুলির জন্য, ErrorCode::INVALID_MAC_LENGTH ফেরত দিন।

হালনাগাদ

সংস্করণ : 1, 2, 3

বিগ দিয়ে শুরু হওয়া চলমান অপারেশনে প্রক্রিয়া করার জন্য ডেটা প্রদান করে। অপারেশন operationHandle প্যারামিটার দ্বারা অপারেশন নির্দিষ্ট করা হয়।

বাফার হ্যান্ডলিংয়ের জন্য আরও নমনীয়তা প্রদান করতে, এই পদ্ধতির বাস্তবায়নে সরবরাহ করা হয়েছে তার চেয়ে কম ডেটা ব্যবহার করার বিকল্প রয়েছে। পরবর্তী কলগুলিতে বাকি ডেটা ফিড করার জন্য কলার দায়বদ্ধ। inputConsumed প্যারামিটারে ইনপুট খাওয়ার পরিমাণ ফেরত দেওয়া হয়। বাস্তবায়ন সর্বদা কমপক্ষে একটি বাইট ব্যবহার করে, যদি না অপারেশনটি আর গ্রহণ করতে না পারে; যদি শূন্য বাইটের বেশি প্রদান করা হয় এবং শূন্য বাইট ব্যবহার করা হয়, কলকারীরা এটিকে একটি ত্রুটি বিবেচনা করে এবং অপারেশন বাতিল করে।

আপডেটের ফলে কতটা ডেটা ফেরত দিতে হবে তা বাস্তবায়নও বেছে নিতে পারে। এটি শুধুমাত্র এনক্রিপশন এবং ডিক্রিপশন ক্রিয়াকলাপের জন্য প্রাসঙ্গিক, কারণ স্বাক্ষর এবং যাচাইকরণ শেষ না হওয়া পর্যন্ত কোনও ডেটা ফেরত দেয় না। যত তাড়াতাড়ি সম্ভব ডেটা ফেরত দিন, বাফার না করে।

ত্রুটি পরিচালনা

যদি এই পদ্ধতিটি ErrorCode::OK ব্যতীত একটি ত্রুটি কোড ফেরত দেয়, তাহলে অপারেশনটি বাতিল করা হয় এবং অপারেশন হ্যান্ডেলটি অবৈধ হয়ে যায়। হ্যান্ডেলের যেকোন ভবিষ্যত ব্যবহার, এই পদ্ধতির সাথে, শেষ করুন বা বাতিল করুন , ErrorCode::INVALID_OPERATION_HANDLE প্রদান করে।

অনুমোদন প্রয়োগ

মূল অনুমোদন প্রয়োগ প্রাথমিকভাবে শুরুতে সঞ্চালিত হয়। একটি ব্যতিক্রম হল সেই ক্ষেত্রে যেখানে কী আছে:

এই ক্ষেত্রে, কীটির জন্য অপারেশন প্রতি একটি অনুমোদনের প্রয়োজন, এবং আপডেট পদ্ধতিটি inParams আর্গুমেন্টে একটি Tag::AUTH_TOKEN পায়। HMAC যাচাই করে যে টোকেনটি বৈধ এবং এতে একটি মিলে যাওয়া সুরক্ষিত ব্যবহারকারী আইডি রয়েছে, কী এর ট্যাগ::USER_AUTH_TYPE এর সাথে মেলে এবং চ্যালেঞ্জ ক্ষেত্রের বর্তমান অপারেশনের অপারেশন হ্যান্ডেল রয়েছে৷ যদি এই শর্তগুলি পূরণ না হয়, তাহলে ErrorCode::KEY_USER_NOT_AUTHENTICATED ফেরত দিন।

কলকারী প্রতিটি কল আপডেট এবং শেষ করার জন্য প্রমাণীকরণ টোকেন প্রদান করে। বাস্তবায়নের জন্য শুধুমাত্র একবার টোকেন যাচাই করতে হবে যদি এটি পছন্দ করে।

RSA কী

Digest::NONE এর সাথে সাইনিং এবং যাচাইকরণ ক্রিয়াকলাপগুলির জন্য, এই পদ্ধতিটি একটি একক আপডেটে স্বাক্ষরিত বা যাচাই করা সম্পূর্ণ ব্লককে গ্রহণ করে। এটি ব্লকের শুধুমাত্র একটি অংশ গ্রাস করতে পারে না। যাইহোক, যদি কলকারী একাধিক আপডেটে ডেটা প্রদান করতে পছন্দ করে, এই পদ্ধতিটি তা গ্রহণ করে। যদি কলকারী সাইন করার জন্য ব্যবহার করার চেয়ে বেশি ডেটা প্রদান করে (ডেটার দৈর্ঘ্য RSA কী আকারের চেয়ে বেশি), তবে ErrorCode::INVALID_INPUT_LENGTH ফেরত দিন।

ECDSA কী

Digest::NONE এর সাথে সাইনিং এবং যাচাইকরণ ক্রিয়াকলাপগুলির জন্য, এই পদ্ধতিটি একটি একক আপডেটে স্বাক্ষরিত বা যাচাই করা সম্পূর্ণ ব্লককে গ্রহণ করে। এই পদ্ধতিটি ব্লকের শুধুমাত্র একটি অংশ গ্রাস করতে পারে না।

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

AES কী

AES GCM মোড inParams আর্গুমেন্টে ট্যাগ::ASSOCIATED_DATA ট্যাগের মাধ্যমে প্রদত্ত "সম্পর্কিত প্রমাণীকরণ ডেটা" সমর্থন করে। সংশ্লিষ্ট ডেটা বারবার কলে প্রদান করা যেতে পারে (একটি ব্লকে পাঠানোর জন্য ডেটা খুব বড় হলে গুরুত্বপূর্ণ) কিন্তু সর্বদা ডেটা এনক্রিপ্ট বা ডিক্রিপ্ট করার আগে থাকে। একটি আপডেট কল এনক্রিপ্ট/ডিক্রিপ্ট করার জন্য সংশ্লিষ্ট ডেটা এবং ডেটা উভয়ই গ্রহণ করতে পারে, কিন্তু পরবর্তী আপডেটগুলিতে সংশ্লিষ্ট ডেটা অন্তর্ভুক্ত নাও হতে পারে। যদি কলকারী একটি কলের পরে একটি আপডেট কলে সম্পর্কিত ডেটা সরবরাহ করে যাতে এনক্রিপ্ট/ডিক্রিপ্ট করার ডেটা অন্তর্ভুক্ত থাকে, তবে ErrorCode::INVALID_TAG ফেরত দিন।

GCM এনক্রিপশনের জন্য, ট্যাগটি শেষ করে সাইফারটেক্সটে যুক্ত করা হয়। ডিক্রিপশনের সময়, শেষ আপডেট কলে দেওয়া ডেটার শেষ Tag::MAC_LENGTH বাইট হল ট্যাগ। যেহেতু আপডেটের একটি প্রদত্ত আহ্বান জানাতে পারে না যে এটি শেষ আহ্বান কিনা, তাই এটি ট্যাগ দৈর্ঘ্য ছাড়া সব প্রক্রিয়া করে এবং ফিনিশের সময় সম্ভাব্য ট্যাগ ডেটা বাফার করে।

শেষ

সংস্করণ : 1, 2, 3

আপডেট (গুলি) দ্বারা প্রদত্ত সমস্ত এখনও-প্রক্রিয়াহীন ডেটা প্রক্রিয়াকরণ করে, begin এর সাথে শুরু হওয়া একটি চলমান অপারেশন শেষ করে।

এই পদ্ধতিটি একটি অপারেশনে বলা শেষ পদ্ধতি, তাই সমস্ত প্রক্রিয়াকৃত ডেটা ফেরত দেওয়া হয়।

এটি সফলভাবে সম্পূর্ণ হয় বা কোনও ত্রুটি ফিরিয়ে দেয়, এই পদ্ধতিটি অপারেশনটিকে চূড়ান্ত করে এবং তাই সরবরাহিত অপারেশন হ্যান্ডেলটিকে অবৈধ করে। এই পদ্ধতি বা আপডেট বা বাতিল সহ হ্যান্ডেলটির কোনও ভবিষ্যতের ব্যবহার ErrorCode::INVALID_OPERATION_HANDLE

সাইনিং অপারেশনগুলি আউটপুট হিসাবে স্বাক্ষরটি ফিরিয়ে দেয়। যাচাইকরণ অপারেশনগুলি signature প্যারামিটারে স্বাক্ষর গ্রহণ করে এবং কোনও আউটপুট ফেরত দেয় না।

অনুমোদন প্রয়োগ

মূল অনুমোদনের প্রয়োগটি প্রাথমিকভাবে শুরুতে সম্পাদিত হয়। একটি ব্যতিক্রম হ'ল কেস যেখানে কী রয়েছে:

এই ক্ষেত্রে, কীটির জন্য অপারেশন প্রতি একটি অনুমোদনের প্রয়োজন, এবং আপডেট পদ্ধতিটি inParams যুক্তিতে একটি ট্যাগ :: auth_token গ্রহণ করে। এইচএমএসি যাচাই করে যে টোকেনটি বৈধ এবং এতে একটি মিলে যাওয়া সুরক্ষিত ব্যবহারকারী আইডি রয়েছে, কী এর ট্যাগ :: ব্যবহারকারী_আউথ_ টাইপের সাথে মেলে এবং চ্যালেঞ্জ ক্ষেত্রে বর্তমান অপারেশনের অপারেশন হ্যান্ডেল রয়েছে। যদি এই শর্তগুলি পূরণ না করা হয় তবে ErrorCode::KEY_USER_NOT_AUTHENTICATED

কলার আপডেট এবং শেষ করতে প্রতিটি কলকে প্রমাণীকরণ টোকেন সরবরাহ করে। বাস্তবায়নের প্রয়োজন যদি এটি পছন্দ হয় তবে একবার টোকেনকে বৈধতা দেওয়া দরকার।

RSA কী

প্যাডিং মোডের উপর নির্ভর করে কিছু অতিরিক্ত প্রয়োজনীয়তা:

  • PaddingMode::NONE । আনপ্যাডেড স্বাক্ষর এবং এনক্রিপশন অপারেশনগুলির জন্য, যদি সরবরাহিত ডেটা কীগুলির চেয়ে কম হয় তবে সাইনিং/এনক্রিপশন আগে ডেটা বাম দিকে শূন্য-প্যাড করা হয়। যদি ডেটা কী হিসাবে একই দৈর্ঘ্য হয় তবে সংখ্যাগতভাবে বৃহত্তর হয় তবে ErrorCode::INVALID_ARGUMENT রিটার্ন করুন। যাচাইকরণ এবং ডিক্রিপশন অপারেশনগুলির জন্য, ডেটা অবশ্যই কী হিসাবে ঠিক ততক্ষণ হতে হবে। অন্যথায়, ErrorCode::INVALID_INPUT_LENGTH.
  • PaddingMode::RSA_PSS । পিএসএস-প্যাডেড স্বাক্ষর ক্রিয়াকলাপের জন্য, পিএসএস লবণ বার্তা ডাইজেস্টের আকার এবং এলোমেলোভাবে উত্পন্ন। ট্যাগ :: ডাইজেস্টের সাথে নির্দিষ্ট ডাইজেস্ট inputParams ডাইজেস্টের সাথে পিএসএস ডাইজেস্ট অ্যালগরিদম এবং এমজিএফ 1 ডাইজেস্ট অ্যালগরিদম হিসাবে ব্যবহৃত হয়।
  • PaddingMode::RSA_OAEPট্যাগ :: ডাইজেস্টের সাথে নির্দিষ্ট ডাইজেস্ট inputParams ডাইজেস্টের সাথে ওএইপি ডাইজেস্ট অ্যালগরিদম হিসাবে ব্যবহৃত হয় এবং SHA1 এমজিএফ 1 ডাইজেস্ট অ্যালগরিদম হিসাবে ব্যবহৃত হয়।

ইসিডিএসএ কী

যদি আনপ্যাডেড স্বাক্ষর বা যাচাইয়ের জন্য সরবরাহ করা ডেটা খুব দীর্ঘ হয় তবে এটি ছাঁটাই করুন।

এইএস কীগুলি

ব্লক মোডের উপর নির্ভর করে কিছু অতিরিক্ত শর্তাদি:

  • BlockMode::ECB বা BlockMode::CBC । যদি প্যাডিং PaddingMode::NONE এবং ডেটা দৈর্ঘ্য এইএস ব্লকের আকারের একাধিক নয়, রিটার্ন ErrorCode::INVALID_INPUT_LENGTH । যদি প্যাডিং PaddingMode::PKCS7 হয় তবে পিকেসিএস#7 স্পেসিফিকেশন অনুযায়ী ডেটা প্যাড করুন। নোট করুন যে পিকেসিএস#7 যদি ডেটা ব্লকের দৈর্ঘ্যের একাধিক হয় তবে একটি অতিরিক্ত প্যাডিং ব্লক যুক্ত করার পরামর্শ দেয়।
  • BlockMode::GCM । এনক্রিপশন চলাকালীন, সমস্ত প্লেইনটেক্সট প্রক্রিয়াজাতকরণের পরে, ট্যাগটি গণনা করুন ( ট্যাগ :: ম্যাক_ল্যাথ বাইট) এবং এটি প্রত্যাবর্তিত সাইফারেক্সটে যুক্ত করুন। ডিক্রিপশন চলাকালীন, শেষ ট্যাগটি প্রক্রিয়া করুন :: ম্যাক_ল্যাথ বাইটগুলি ট্যাগ হিসাবে। যদি ট্যাগ যাচাইকরণ ব্যর্থ হয়, তবে ErrorCode::VERIFICATION_FAILED

গর্ভপাত

সংস্করণ : 1, 2, 3

অগ্রগতি অপারেশন বাতিল করে। বাতিল হওয়ার পরে, ErrorCode::INVALID_OPERATION_HANDLE আপডেট , ফিনিস বা গর্ভপাত সহ সরবরাহিত অপারেশন হ্যান্ডেলটির পরবর্তী কোনও ব্যবহারের জন্য অবৈধ_অরেশন_হ্যান্ডেল।

get_supported_algoorithms

সংস্করণ : 1

কিমাস্টার হার্ডওয়্যার বাস্তবায়ন দ্বারা সমর্থিত অ্যালগরিদমের তালিকা প্রদান করে। একটি সফ্টওয়্যার বাস্তবায়ন একটি খালি তালিকা ফেরত দেয়; একটি হাইব্রিড বাস্তবায়ন হার্ডওয়্যার দ্বারা সমর্থিত কেবলমাত্র অ্যালগরিদমযুক্ত একটি তালিকা ফেরত দেয়।

কিমাস্টার 1 বাস্তবায়ন আরএসএ, ইসি, এইএস এবং এইচএমএসি সমর্থন করে।

get_supported_block_modes

সংস্করণ : 1

একটি নির্দিষ্ট অ্যালগরিদম এবং উদ্দেশ্যটির জন্য কীমাস্টার হার্ডওয়্যার বাস্তবায়নের দ্বারা সমর্থিত এইএস ব্লক মোডগুলির তালিকাটি ফেরত দেয়।

আরএসএ, ইসি এবং এইচএমএসি, যা ব্লক সিফার নয়, পদ্ধতিটি সমস্ত বৈধ উদ্দেশ্যে খালি তালিকা ফেরত দেয়। অবৈধ উদ্দেশ্যগুলির ফলে পদ্ধতিটি ErrorCode::INVALID_PURPOSE

কিমাস্টার 1 বাস্তবায়নগুলি এইএস এনক্রিপশন এবং ডিক্রিপশনের জন্য ইসিবি, সিবিসি, সিটিআর এবং জিসিএম সমর্থন করে।

get_supported_padding_modes

সংস্করণ : 1

একটি নির্দিষ্ট অ্যালগরিদম এবং উদ্দেশ্যটির জন্য কীমাস্টার হার্ডওয়্যার বাস্তবায়নের দ্বারা সমর্থিত প্যাডিং মোডগুলির তালিকাটি ফেরত দেয়।

এইচএমএসি এবং ইসির প্যাডিংয়ের কোনও ধারণা নেই তাই পদ্ধতিটি সমস্ত বৈধ উদ্দেশ্যে খালি তালিকা দেয়। অবৈধ উদ্দেশ্যগুলির ফলে পদ্ধতিটি ErrorCode::INVALID_PURPOSE

আরএসএর জন্য, কিমাস্টার 1 বাস্তবায়ন সমর্থন:

  • আনপ্যাডেড এনক্রিপশন, ডিক্রিপশন, স্বাক্ষর এবং যাচাইকরণ। আনপ্যাডেড এনক্রিপশন এবং স্বাক্ষর করার জন্য, যদি বার্তাটি সর্বজনীন মডুলাসের চেয়ে কম হয় তবে বাস্তবায়নগুলি অবশ্যই এটি জিরো দিয়ে বাম-প্যাড করতে হবে। আনপ্যাডেড ডিক্রিপশন এবং যাচাইয়ের জন্য, ইনপুট দৈর্ঘ্য অবশ্যই পাবলিক মডুলাস আকারের সাথে মেলে।
  • পিকেসিএস#1 ভি 1.5 এনক্রিপশন এবং স্বাক্ষর প্যাডিং মোড
  • ন্যূনতম 20 এর দৈর্ঘ্য সহ পিএসএস
  • Oaep

ইসিবি এবং সিবিসি মোডে এইএসের জন্য, কেমাস্টার 1 বাস্তবায়ন কোনও প্যাডিং এবং পিকেসিএস#7-প্যাডিং সমর্থন করে না। সিটিআর এবং জিসিএম মোডগুলি কেবল কোনও প্যাডিং সমর্থন করে না।

get_supported_digests

সংস্করণ : 1

একটি নির্দিষ্ট অ্যালগরিদম এবং উদ্দেশ্যটির জন্য কীমাস্টার হার্ডওয়্যার বাস্তবায়নের দ্বারা সমর্থিত ডাইজেস্ট মোডগুলির তালিকা প্রদান করে।

কোনও এইএস মোডগুলি সমর্থন করে বা হজমের প্রয়োজন নেই, তাই পদ্ধতিটি বৈধ উদ্দেশ্যে একটি খালি তালিকা ফেরত দেয়।

কিমাস্টার 1 বাস্তবায়ন সংজ্ঞায়িত হজমের একটি উপসেট প্রয়োগ করতে পারে। বাস্তবায়নগুলি SHA-256 সরবরাহ করে এবং MD5, SHA1, SHA-224, SHA-256, SHA384 এবং SHA512 (সংজ্ঞায়িত ডাইজেস্টের সম্পূর্ণ সেট) সরবরাহ করতে পারে।

get_supported_import_formats

সংস্করণ : 1

একটি নির্দিষ্ট অ্যালগরিদমের কিমাস্টার হার্ডওয়্যার বাস্তবায়ন দ্বারা সমর্থিত আমদানি ফর্ম্যাটগুলির তালিকা প্রদান করে।

কিমাস্টার 1 বাস্তবায়নগুলি আরএসএ এবং ইসি কী জোড়া আমদানির জন্য পিকেসিএস#8 ফর্ম্যাট (পাসওয়ার্ড সুরক্ষা ছাড়াই) সমর্থন করে এবং এইএস এবং এইচএমএসি কী উপাদানগুলির কাঁচা আমদানি সমর্থন করে।

get_supported_export_formats

সংস্করণ : 1

একটি নির্দিষ্ট অ্যালগরিদমের কিমাস্টার হার্ডওয়্যার বাস্তবায়ন দ্বারা সমর্থিত রফতানি ফর্ম্যাটগুলির তালিকা প্রদান করে।

কিমাস্টার 1 বাস্তবায়নগুলি আরএসএ এবং ইসি পাবলিক কীগুলি রফতানির জন্য x.509 ফর্ম্যাটকে সমর্থন করে। প্রাইভেট কী বা অসমমিত কীগুলির রফতানি সমর্থিত নয়।

Functions তিহাসিক ফাংশন

কিমাস্টার 0

নিম্নলিখিত ফাংশনগুলি মূল কীমাস্টার 0 সংজ্ঞা সম্পর্কিত। তারা কিমাস্টার 1 স্ট্রাক্ট কিমাস্টার 1_ডিভাইস_টি -তে উপস্থিত ছিল। যাইহোক, কিমাস্টার 1.0 এ এগুলি প্রয়োগ করা হয়নি, এবং তাদের ফাংশন পয়েন্টারগুলি বাতিল হয়ে গেছে।

  • generate_keypair
  • import_keypair
  • get_keypair_public
  • delete_keypair
  • delete_all
  • sign_data
  • Verify_data

কিমাস্টার 1

নিম্নলিখিত ফাংশনগুলি কিমাস্টার 1 সংজ্ঞার অন্তর্গত, তবে কিমাস্টার 2 এ উপরে তালিকাভুক্ত কেমাস্টার 0 ফাংশন সহ সরানো হয়েছে।

  • get_supported_algorithms
  • get_supported_block_modes
  • get_supported_padding_modes
  • get_supported_digests
  • get_supported_import_formats
  • get_supported_export_formats

কিমাস্টার 2

নিম্নলিখিত ফাংশনগুলি কিমাস্টার 2 সংজ্ঞার অন্তর্গত, তবে কিমাস্টার 3 এ উপরে তালিকাভুক্ত কিমাস্টার 1 ফাংশন সহ সরানো হয়েছে।

  • configure