2017-06-05 4 views
0

Ich habe iOS 11 und dieser Code wird mein installiert benutzerdefiniertes Zertifikat nicht erkennen:Detect installierte Zertifikat auf iOS 11 Gerät

- (BOOL)IsMobileConfigInstalled { 
    NSString *certPath = [[NSBundle mainBundle] pathForResource:@"cert" ofType:@"der"]; 
    NSData *certData = [NSData dataWithContentsOfFile:certPath]; 
    SecCertificateRef cert = NULL; 
    if ([certData length]) { 
     cert = SecCertificateCreateWithData(NULL, (__bridge CFDataRef) certData); 
     if (cert != NULL) { 
      CFStringRef certSummary = SecCertificateCopySubjectSummary(cert); 
      NSString *summaryString = [[NSString alloc] initWithString:(__bridge NSString *) certSummary]; 
      CFRelease(certSummary); 
     } 
    } 
    SecPolicyRef policy = SecPolicyCreateBasicX509(); 
    SecTrustRef trust; 
    OSStatus err = SecTrustCreateWithCertificates((__bridge CFArrayRef) @[ 
      (__bridge id) cert 
    ], policy, &trust); 
    SecTrustResultType trustResult = (SecTrustResultType) -1; 
    err = SecTrustEvaluate(trust, &trustResult); 
    CFRelease(trust); 
    CFRelease(policy); 
    CFRelease(cert); 
    return kSecTrustResultUnspecified == trustResult; 
} 

Was ist das Problem?

+0

Das Problem ist, dass Sie nicht erklären, was es soll mach und was es stattdessen tut. Das andere Problem ist, dass Sie dies zuerst auf iOS 10 versuchen sollten. – deadbeef

+0

@deadbeef natürlich in ios 10 es funktioniert. Und schon diese App veröffentlicht ... – MeGaPk

Antwort

0

Problem gelöst. Apple nur "behoben" Ergebnis in TrustResult.

So, jetzt corrent Antwort: kSecTrustResultProceed

Meine feste Codeversion: Arbeiten an ios 10 und 11.

- (BOOL)IsMobileConfigInstalled { NSString *certPath = [[NSBundle mainBundle] pathForResource:@"cert" ofType:@"der"]; NSData *certData = [NSData dataWithContentsOfFile:certPath]; SecCertificateRef cert = NULL; if ([certData length]) { cert = SecCertificateCreateWithData(NULL, (__bridge CFDataRef) certData); if (cert != NULL) { CFStringRef certSummary = SecCertificateCopySubjectSummary(cert); NSString *summaryString = [[NSString alloc] initWithString:(__bridge NSString *) certSummary]; CFRelease(certSummary); } } SecPolicyRef policy = SecPolicyCreateBasicX509(); SecTrustRef trust; OSStatus err = SecTrustCreateWithCertificates((__bridge CFArrayRef) @[ (__bridge id) cert ], policy, &trust); SecTrustResultType trustResult = (SecTrustResultType) -1; err = SecTrustEvaluate(trust, &trustResult); CFRelease(trust); CFRelease(policy); CFRelease(cert); NSString *ver = [[UIDevice currentDevice] systemVersion]; float ver_float = [ver floatValue]; if (ver_float >= 11) return kSecTrustResultProceed == trustResult; return kSecTrustResultUnspecified == trustResult; }