में प्रोग्रामिक रूप से रूट सीए प्रमाण पत्र पढ़ें निम्नलिखित कोड मैकोज़ में रूट प्रमाणपत्र पढ़ता है।आईओएस
मुझे आश्चर्य है कि आईओएस में समकक्ष कोड क्या हैं?
https://github.com/HaxeFoundation/hxcpp/blob/7bd5ff3/src/hx/libs/ssl/SSL.cpp#L455-L491
CFMutableDictionaryRef search;
CFArrayRef result;
SecKeychainRef keychain;
SecCertificateRef item;
CFDataRef dat;
sslcert *chain = NULL;
// Load keychain
if(SecKeychainOpen("/System/Library/Keychains/SystemRootCertificates.keychain",&keychain) != errSecSuccess)
return null();
// Search for certificates
search = CFDictionaryCreateMutable(NULL, 0, NULL, NULL);
CFDictionarySetValue(search, kSecClass, kSecClassCertificate);
CFDictionarySetValue(search, kSecMatchLimit, kSecMatchLimitAll);
CFDictionarySetValue(search, kSecReturnRef, kCFBooleanTrue);
CFDictionarySetValue(search, kSecMatchSearchList, CFArrayCreate(NULL, (const void **)&keychain, 1, NULL));
if(SecItemCopyMatching(search, (CFTypeRef *)&result) == errSecSuccess){
CFIndex n = CFArrayGetCount(result);
for(CFIndex i = 0; i < n; i++){
item = (SecCertificateRef)CFArrayGetValueAtIndex(result, i);
// Get certificate in DER format
dat = SecCertificateCopyData(item);
if(dat){
if(chain == NULL){
chain = new sslcert();
chain->create(NULL);
}
mbedtls_x509_crt_parse_der(chain->c, (unsigned char *)CFDataGetBytePtr(dat), CFDataGetLength(dat));
CFRelease(dat);
}
}
}
CFRelease(keychain);
if(chain != NULL)
return chain;
चूंकि आपने जो कोड दिखाया है वह सीपीपी में लिखा गया है, तब भी आप इसका उपयोग सीधे कर सकते हैं क्योंकि सीपीपी में उपयोग किए गए सभी कीवर्ड ऐप्पल से 'सुरक्षा.फ्रेमवर्क' से आते हैं, क्या आपने इसका उपयोग करने की कोशिश की है, आप पूरी तरह से उपयोग कर सकते हैं 'SSL.cpp'? मुझे लगता है कि यह आपके लिए काम करेगा। – iphonic
'/ सिस्टम/लाइब्रेरी/कीचेन्स/SystemRootCertificates.keychain' बस आईओएस पर मौजूद नहीं है। या कम से कम आप इसे पढ़ नहीं सकते हैं क्योंकि सब कुछ सैंडबॉक्स है। – KevinResoL