TL; DR यह डेवलपर के लिए है कि ऐप के कौन से टुकड़ों पर हस्ताक्षर किए जाएं और उन टुकड़ों के साथ छेड़छाड़ की जाए या नहीं, जब ऐप लॉन्च किया जाता है। ऐप-दर-ऐप आधार पर इसका पता लगाने के लिए आपको परीक्षण और त्रुटि का उपयोग करना होगा।
यह मोटे तौर पर डेवलपर को तय करना है कि उनके आवेदन बंडल में कौन से घटक सील में दर्शाए गए हैं जो उनके आवेदन देने से पहले हस्ताक्षरित हो जाते हैं। सील में कुछ भी प्रभावी रूप से छेड़छाड़-प्रूफ है क्योंकि इन चीजों को अपने हैश हस्ताक्षर को बदलने के बिना संशोधित करना ज्यादातर असंभव है। लेकिन इसका मतलब यह नहीं है कि आप उनके साथ छेड़छाड़ नहीं कर सकते।
Apple डेवलपर गाइड इस बारे में कहना चाहिए कि आपको क्या हस्ताक्षर करना चाहिए:
आपको अपने उत्पाद में प्रत्येक निष्पादन योग्य पर हस्ताक्षर करना चाहिए, जिसमें शामिल हैं
अनुप्रयोगों, उपकरण, छिपा सहायक उपकरण, उपयोगिताओं और आगे।
एक एप्लिकेशन बंडल पर हस्ताक्षर करना उसके संसाधनों को कवर करता है, लेकिन इसके नहीं
उपकरण और उप-बंडलों जैसे सब-कंप्यूटर्स। इनमें से प्रत्येक होना चाहिए
स्वतंत्र रूप से हस्ताक्षर किए।
यदि आपके एप्लिकेशन में एक या अधिक छोटे के साथ बड़ा UI हिस्सा है
सहायक उपकरण जो उपयोगकर्ता को एक एकल चेहरा पेश करने की कोशिश करते हैं, आप कर सकते हैं
उन सभी को देकर कोड हस्ताक्षर करने के लिए उन्हें अप्रभेद्य बनाएं
समान कोड हस्ताक्षरकर्ता पहचानकर्ता। (आप यह सुनिश्चित करके कर सकते हैं
वे सभी में एक ही CFBundleIdentifier मान है
Info.plist, या codeign कमांड में -i विकल्प का उपयोग करके, को
समान पहचानकर्ता असाइन करें।) उस स्थिति में, आपके सभी प्रोग्राम घटक
उसी किचेन आइटम तक पहुंचें और उसी के रूप में मान्य करें
कार्यक्रम। यह केवल तभी करें जब शामिल कार्यक्रम वास्तव में बनने के लिए हों
कोई एकल इकाई, जिसमें कोई अंतर नहीं है।
एक सार्वभौमिक बाइनरी (बंडल या टूल) में स्वचालित रूप से व्यक्ति होता है
हस्ताक्षर प्रत्येक वास्तुकला घटक पर लागू होते हैं। य़े हैं
स्वतंत्र, और आमतौर पर अंत में केवल मूल वास्तुकला
उपयोगकर्ता की प्रणाली सत्यापित है।
इंस्टॉलर पैकेज (.pkg और .mpkg बंडल) के मामले में, सब कुछ
अनुमानित रूप से हस्ताक्षरित है: CPIO संग्रह जिसमें पेलोड है,
CPIO संग्रह जिसमें स्क्रिप्ट स्थापित हो, और सामग्री का बिल हो
(बीओएम) प्रत्येक के पास एक्सएआर हैडर में एक हैश दर्ज होता है, और उस हेडर में
बारी हस्ताक्षरित है। इसलिए, यदि आप एक स्थापित स्क्रिप्ट को संशोधित करते हैं (के लिए)
उदाहरण) पैकेज पर हस्ताक्षर किए जाने के बाद, हस्ताक्षर होगा
अवैध।
आप अपने प्लग-इन और पुस्तकालयों पर हस्ताक्षर करना भी चाह सकते हैं। हालांकी यह
वर्तमान में आवश्यक नहीं है, यह भविष्य में होगा, और नहीं है
इन घटकों पर हस्ताक्षर होने का नुकसान।
स्थिति के आधार पर, कोडसाइन आपके Mach-O निष्पादन योग्य में जोड़ सकता है
फ़ाइल, इसमें विस्तारित विशेषताएँ जोड़ें, या अपने में नई फ़ाइलें बनाएँ
बंडल की सामग्री निर्देशिका। आपकी कोई अन्य फाइल संशोधित नहीं है।
भी यहां से यह जरूरी नहीं है कि एक आवेदन के लिए अमान्य हस्ताक्षर होने का मतलब यह लॉन्च करने में विफल होगा। पृष्ठ कहता है:
यह उस सिस्टम या प्रोग्राम पर निर्भर है जो हस्ताक्षरित या लॉन्च या लोड हो रहा है
यह निर्धारित करने के लिए कोड कि क्या हस्ताक्षर को सत्यापित करना है और, अगर यह करता है, तो
निर्धारित करें कि उस सत्यापन के परिणामों का मूल्यांकन कैसे करें।
एक आवेदन संशोधनों की अनुमति देने के लिए चुन सकता है।
आपका सबसे अच्छा दांव किसी भी आवेदन के साथ परीक्षण और त्रुटि दृष्टिकोण है जिसे आप संशोधित करने का प्रयास कर रहे हैं। यह काम कर सकता है, यह नहीं हो सकता है। कोई भी हमेशा सही जवाब नहीं दिया जा सकता है।
अगर कोई ऐप साइन किया गया है तो आप उसकी तलाश कर सकते हैं Contents/CodeResources
फ़ाइल या ए Contents/_CodeSignature/CodeResources
बंडल में फ़ाइल। यह फ़ाइल बंडल में सभी हस्ताक्षरित घटकों और उनके अपेक्षित हैश मूल्यों को सूचीबद्ध करती है। यह समझने के लिए शुरू करने के लिए एक अच्छी जगह है कि डेवलपर के कौन से टुकड़े महत्वपूर्ण हैं जो परिवर्तनों के लिए देखने के लिए महत्वपूर्ण हैं।