2009-11-23 14 views
6

पर विफल रहता है जब मैं मैक ओएस एक्स 10.6 द्वारा प्रदान की गई सुरक्षा ढांचे से SecPKCS12Import() का उपयोग करने का प्रयास करता हूं, तो परिणाम कोड हमेशा errSecUnimplemented प्रदान किए गए तर्कों के बावजूद होता है।सुरक्षा.फ्रेमवर्क से SecPKCS12Import() ओएस एक्स 10.6

इसके अलावा, लिंकर SecImportExport.h (यानी kSecImportExportPassphrase, kSecImportItemIdentity, et al।) में घोषित इस फ़ंक्शन के लिए प्रासंगिक स्थिरांक के प्रतीक नहीं ढूंढ पा रहा है।

इस पुस्तकालय के साथ पृथ्वी पर क्या चल रहा है - क्या यह क्रिया लागू है या नहीं? लिंकर ढांचे में अन्य सभी प्रतीकों को क्यों हल कर सकता है, लेकिन ये नहीं? मुझे एक PKCS12-स्वरूपित बाइनरी ब्लॉब को SecIdentityRef या SecCertificateRef और SecKeyRef जोड़ी में कैसे परिवर्तित करना चाहिए?

मैं क्या गलत कर रहा हूं? मुझे यकीन है कि यह एक पीईबीकेएसी मुद्दा है। :-)


संपादित करें: मुझे लगता है कि मैं अपने प्रश्न में बहुत अस्पष्ट था। मुझे पता है कि सुरक्षा। फ्रेमवर्क लागू किया गया है, यह देखते हुए कि मैं बिना किसी समस्या के अन्य कार्यक्षमता का उपयोग करने में सक्षम हूं। यह देखते हुए, मैं काफी हद तक निश्चित हूं कि मैं ढांचे के खिलाफ सही तरीके से लिंक कर रहा हूं, क्योंकि यदि मैं लिंक हटा देता हूं, तो प्रतीकों में से कोई भी नहीं पाया जा सकता है - जैसा कि अपेक्षित है। जब मैं ढांचे को फिर से जोड़ता हूं, तो SecPKCS12Import() से संबंधित स्थिरांक के अपवाद के साथ सभी प्रतीकों पाए जाते हैं, उदाहरण के लिए kSecImportExportPassphrase, kSecImportItemIdentity, आदि

यह देखते हुए कि मैं इन प्रतीकों का उपयोग नहीं कर सकते हैं, मैं क्या हो सकता था गलत तार (@"kSecImportItemIdentity", आदि) में पारित कर दिया है, लेकिन त्रुटि कोड errSecUnimplemented था। इससे मुझे विश्वास हुआ कि शायद यह विशिष्ट कार्यक्षमता लागू नहीं की गई है।

मैंने 10.5 एसडीके का उपयोग करने की कोशिश की, लेकिन यह निश्चित रूप से काम नहीं किया। :-)


संपादित करें: मेरी आयात सिर्फ एक नियमित रूप से #import <Security/Security.h> है। किक्स के लिए, मैंने #import <Security/SecImportExport.h> भी कोशिश की, लेकिन इससे कोई बदलाव नहीं हुआ। उस ने कहा, त्रुटि लिंकर द्वारा जारी की जाती है, संकलक नहीं।

मैंने लाइब्रेरी द्वारा निर्यात किए गए प्रतीकों की सूची के लिए dyldinfo -export Security.framework/Security चलाया और new प्रतीकों में से कई पाया, लेकिन kSecImportExportPassphrase और दोस्तों को स्पष्ट रूप से याद आ रही थी। यह समझा सकता है कि लिंकर प्रतीक क्यों नहीं ढूंढ सकता है। SecPKCS12Import के लिए प्रतीक प्रतीक तालिका में प्रकट होता है और मैं इसे बिना किसी समस्या के कॉल कर सकता हूं, यह केवल कार्यक्षमता नहीं है।

+0

कम से कम 10.6.2 के रूप में अनुपूरक होने की पुष्टि की गई - कृपया इस पर एक रडार दर्ज करें। नीचे मेरे जवाब में विवरण। –

उत्तर

3

सुरक्षा.फ्रेमवर्क सबसे निश्चित रूप से कार्यान्वित किया गया है - Security Reference Update देखें जो ढांचे में 10.6 और इससे पहले के ढांचे में क्या बदल गया है। चूंकि आप हेडर का उपयोग करने के बारे में जानते हैं, मुझे लगता है कि आपने पहले ही Security Framework Reference से परामर्श लिया है।

क्या आप वाकई ढांचे के खिलाफ उचित रूप से आयात और लिंक कर रहे हैं? (यह /System/Library/Security.framework में है, इसलिए आपको पथ निर्दिष्ट नहीं करना चाहिए।)

क्या संकलक समस्या चेतावनियां या त्रुटियां बताती हैं कि SecImportExport.h में प्रतीकों को अनिर्धारित किया गया है? (यदि नहीं, तो आप कैसे जानते हैं कि वे "घोषित लेकिन अपरिभाषित" हैं?)

जब आप कहते हैं कि यह 10.6 पर विफल रहता है, तो क्या आपने इसे ओएस के पहले संस्करण पर सफलतापूर्वक आजमाया है?


संपादित: ठीक है, जब से तुम Security.framework के अन्य भागों का उपयोग कर रहे सफलतापूर्वक, और एपीआई और स्थिरांक आप का उपयोग करने की कोशिश कर रहे हैं कर रहे हैं 10.6 केवल, यह एक जोड़ने मुद्दे की तरह प्रतीत नहीं होता । आपका आयात कैसा दिखता है? क्या आप वाकई SecImportExport.h आयात कर रहे हैं? स्थिरांक SecPKCS12Import() फ़ंक्शन से ऊपर घोषित किए गए हैं, इसलिए यदि आपको स्थिरांक के लिए चेतावनियां मिलती हैं, तो आपको कार्य को अनिर्धारित करने के लिए भी एक प्राप्त करना चाहिए।


संपादित: मैं एप्पल में टीम कि Security.framework कि यह कार्यक्षमता वर्तमान में लागू नहीं किया गया है पर काम करता है के एक सदस्य के साथ की पुष्टि की है। घटक Security (New Bugs), संस्करण X के विरुद्ध http://bugreport.apple.com पर इस बारे में गड़बड़ करने के लिए कृपया एक बग फ़ाइल करें। अपनी रिपोर्ट में इस प्रश्न का यूआरएल शामिल करें। क्षमा करें इस समय एक बेहतर जवाब नहीं है।

+0

मेरी अक्षमता के कारण, मैंने नीचे दिए गए उत्तर के उत्तर के साथ इस उत्तर का जवाब दिया है। –

+0

मैंने तब से प्रश्न को फिर से संशोधित किया है। उम्मीद है कि यह मदद करता है। :-) –

+0

आपका नवीनतम अपडेट काफी उपयोगी है, विशेष रूप से ये लिंकर त्रुटियां हैं। तथ्य यह है कि कुछ प्रतीकों को निर्यात नहीं किया जाता है। मैं यह देखने के लिए गहरी खुदाई करूँगा कि मुझे एक निश्चित उत्तर मिल सकता है ... –

1

मेरे ज्ञान के लिए, ऐप्पल आंशिक रूप से चीजों को लागू करने या कोई दस्तावेज़ीकरण छोड़ने में बहुत अच्छा है। यदि आपको वास्तव में वास्तविक कार्यान्वयन की आवश्यकता नहीं है, तो आप ब्लॉब्स निकालने के लिए ओपनएसएसएल का उपयोग कर सकते हैं और फिर सुरक्षा सेवाओं को सुरक्षा/सीडीएसए विधियों के साथ एक कीचेन या आगे की प्रक्रिया में आयात करने के लिए उपयोग कर सकते हैं। यह आपको जा रहा है और यदि आपके पास संभावना है तो आप आगे के सवालों के साथ ऐप्पल देव कनेक्शन को पिंग कर सकते हैं।

इसके अलावा, मेरी 10.6.2 मशीन पर /System/Library/Frameworks/Security.framework/Headers/SecImportExport.h को देखते हुए, मैं PKCS # 12 के लिए संदर्भ SecKeychainItemImport()

खोजें के प्रलेखन में देखते हैं अधिक जानकारी के लिए "पीकेसीएस 12" के लिए वह फ़ाइल।