не може да провери дали съществува конфигурационен профил на 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 няма разпределена памет в него.

Какво не е наред? това ли е правилната процедура? ако не, има ли друг урок, който е по-полезен?

Благодаря!


person user1415780    schedule 08.11.2012    source източник
comment
Бихте ли успели с горната задача?   -  person Meet    schedule 20.08.2013
comment
Пич, намери ли решението??   -  person vishnuvarthan    schedule 11.08.2014


Отговори (2)


Не съм сигурен защо бихте искали да направите това чрез код. Има приложения за Mac OSx, които вече правят това вместо вас. Ако това, което възнамерявате да направите, не трябва да включва код, можете да изтеглите това приложение за Mac, наречено Помощна програма за конфигуриране на iPhone от този Връзка към Apple. Има много функции, включително профили за конфигуриране/преглед/и т.н., инсталирани на iPhone.

person Just a coder    schedule 12.03.2013

Наскоро реших същия проблем, който имате. Кодът, който сте публикували, и съветът от вашата връзка наистина могат да се използват за проверка за съществуването на конфигурационен профил. Проблемът, на който сте се натъкнали, несъмнено е проблем с вашия сертификат.

Създадох своя чифт сертификати, използвайки openSSL за win32 от ShiningLight. Пълни инструкции как да го направите можете да намерите тук: http://www.dylanbeattie.net/docs/openssl_iis_ssl_howto.html

имайте предвид обаче, че има няколко грешки:

  1. когато създавате вашия основен сертификат, настройката basicconstraints=CA в конфигурационния файл трябва да бъде зададена на TRUE (FALSE е необходима за другия сертификат).

  2. За да могат IO да ги четат, и двата сертификата трябва да бъдат кодирани с помощта на DER. За да направите това с помощта на openssl, трябва да изпълните команда, подобна на openssl x509 -in certs/cert.cer -out certs/certDER.cer -outform DER и на двата сертификата. Силно подозирам, че грешното кодиране срива кода ви.

person Daz Eddy    schedule 11.12.2013