আমার প্রশ্নটি আইওএসে আইফোন (আইফোন, আইপ্যাড, ...) সম্পর্কিত রয়েছে cha আমি মনে করি (তবে নিশ্চিত না) ম্যাক ওএস এক্স এর অধীনে কীচেনগুলি প্রয়োগ করা একই উত্তর দিয়ে একই প্রশ্ন উত্থাপন করে।
আইওএস পাঁচ ধরণের (ক্লাস) কীচেন আইটেম সরবরাহ করে। কীটি kSecClassটাইপ নির্ধারণ করতে আপনাকে অবশ্যই এই পাঁচটি মানের একটি বেছে নিতে হবে:
kSecClassGenericPassword used to store a generic password
kSecClassInternetPassword used to store an internet password
kSecClassCertificate used to store a certificate
kSecClassKey used to store a kryptographic key
kSecClassIdentity used to store an identity (certificate + private key)
পড়া আপেল ডকুমেন্টেশন, ব্লগ এবং ফোরাম-এন্ট্রির অনেকদিন পর আমি বুঝতে পারলাম যে ধরনের Keychain আইটেমটি kSecClassGenericPasswordবৈশিষ্ট্যাবলী থেকে তার স্বতন্ত্রতা পায় kSecAttrAccessGroup, kSecAttrAccountএবং kSecAttrService।
অনুরোধ 1 এ এই তিনটি বৈশিষ্ট্যটি যদি অনুরোধ 2 এর অনুরূপ হয় তবে আপনি অন্য কোনও বৈশিষ্ট্য নির্বিশেষে একই জেনেরিক পাসওয়ার্ড কীচেইন আইটেমটি পান। যদি এই বৈশিষ্ট্যের একটি (বা দুটি বা সমস্ত) এর মান পরিবর্তন করে তবে আপনি বিভিন্ন আইটেম পাবেন।
তবে kSecAttrServiceকেবল ধরণের আইটেমের জন্যই উপলভ্য kSecClassGenericPassword, তাই এটি অন্য কোনও ধরণের আইটেমের "অনন্য কী" এর অংশ হতে পারে না এবং এমন কোনও ডকুমেন্টেশন নেই যা স্পষ্টভাবে উল্লেখ করে যে কোন বৈশিষ্ট্যটি কীচেন আইটেমটি স্বতন্ত্রভাবে নির্ধারণ করে।
"জেনেরিক্যচেইন" এর "কীচেইনআইটেমব্রেপার" শ্রেণিতে থাকা নমুনা কোডটি kSecAttrGenericকোনও আইটেমটি অনন্য করতে বৈশিষ্ট্যটি ব্যবহার করে , তবে এটি একটি বাগ। এই উদাহরণে দুটি এন্ট্রি কেবল দুটি স্বতন্ত্র এন্ট্রি হিসাবে সংরক্ষণ করা হয়, কারণ তাদের kSecAttrAccessGroupআলাদা (একটিতে অ্যাক্সেস গ্রুপ সেট রয়েছে, অন্যটি এটি বিনামূল্যে দেয়)। আপনি যদি অ্যাপলের ব্যবহার করে অ্যাক্সেস গোষ্ঠী ছাড়াই ২ য় পাসওয়ার্ড যুক্ত করার চেষ্টা করেন তবে KeychainItemWrapperআপনি ব্যর্থ হবেন।
সুতরাং, দয়া করে, আমার প্রশ্নের উত্তর দিন:
- এটা কি সত্যি যে সমন্বয়
kSecAttrAccessGroup,kSecAttrAccountএবংkSecAttrServiceএকটি Keychain আইটেমটি যার kSecClass হয় "অনন্য কী" হয়kSecClassGenericPassword? - কীচেন আইটেমটি
kSecClassনা থাকলে কোন বৈশিষ্ট্যগুলি অনন্য করে তোলেkSecClassGenericPassword?