Невозможно проверить, существует ли профиль конфигурации на iPhone
Я пытаюсь проверить, существует ли профиль конфигурации на iPhone, я нашел следующее руководство о том, как это сделать: http://alex.tapmania.org/2011/09/check_conf_prof_is_installed_ios.html
который для меня переводится в следующий код:
NSString * certPath = [[NSBundle mainBundle] pathForResource:@"certificate" ofType:@"mobileconfig"];
SecTrustRef trust;
NSData * certData = [NSData dataWithContentsOfFile:certPath];
SecCertificateRef cert = SecCertificateCreateWithData(NULL, (__bridge CFDataRef) certData);
SecPolicyRef policy = SecPolicyCreateBasicX509();
OSStatus err = SecTrustCreateWithCertificates((__bridge CFArrayRef) [NSArray arrayWithObject:(__bridge id)cert],policy, &trust);
SecTrustResultType trustResult = -1;
err = SecTrustEvaluate(trust, &trustResult);
if (trustResult ==4) {
label.text=@"Profile installed";
}
else{
label.text=@"Profile not installed";
}
приложение вылетает на линии:
OSStatus err = SecTrustCreateWithCertificates((__bridge CFArrayRef) [NSArray arrayWithObject:(__bridge id)cert],policy, &trust);
Я также заметил, что на этом этапе cert
в нем нет выделенной памяти.
Что случилось? это правильная процедура? если нет, есть ли другой учебник, который является более полезным?
Спасибо!
2 ответа
Я не уверен, почему вы хотите сделать это с помощью кода. Есть приложения Mac OSx, которые уже делают это для вас. Если то, что вы намереваетесь сделать, не должно включать код, вы можете загрузить это приложение Mac под названием iPhone Configuration Utility по этой ссылке Apple. Имеет много функций, включая настройку / просмотр / и т.д. профилей, установленных на iPhone.
Я недавно решил ту же проблему, что и вы. Код, который вы опубликовали, и рекомендации по вашей ссылке действительно могут быть использованы для проверки существования профиля конфигурации. Загвоздка, с которой вы столкнулись, несомненно, является проблемой с вашим сертификатом.
Я создал свою пару сертификатов, используя openSSL для win32 от ShiningLight. Полные инструкции о том, как это сделать, можно найти здесь: http://www.dylanbeattie.net/docs/openssl_iis_ssl_howto.html
заметьте, однако, что есть несколько ошибок:
при создании корневого сертификата для параметра basicconstraints=CA в файле конфигурации должно быть задано значение TRUE (FALSE требуется для другого сертификата).
Чтобы их можно было прочитать, оба сертификата должны быть закодированы с использованием DER. Для этого с помощью openssl необходимо выполнить команду, аналогичную openssl x509 -in certs/cert.cer -out certs/certDER.cer -outform DER для обоих сертификатов. Я сильно подозреваю, что это неправильная кодировка, которая разрушает ваш код.