get le file pfx inclus dans un certificate de mobilisation dans iOS

J'essaie de me connecter à un server en utilisant un .pfx qui est stocké dans un file .mobileconfig sur mon iPhone.

Lorsque le server le request

-(void)connection:(NSURLConnection*)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge*)challenge{ 

Comment puis-je créer le NSURLCredential avec le .pfx? Dois-je utiliser

 + (NSURLCredential *)credentialWithIdentity:(SecIdentityRef)identity certificatees:(NSArray *)certArray persistence:(NSURLCredentialPersistence)persistence 

Si c'est le cas, comment puis-je extraire le .pfx pour le mettre dans le tableau.

Merci d'avance.

Vous pouvez utiliser mon code:

  - (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { NSSsortingng *path = [[NSBundle mainBundle] pathForResource:@"torbix" ofType:@"pfx"]; NSData *pfxdata = [NSData dataWithContentsOfFile:path]; CFDataRef inpfxdata = (CFDataRef)pfxdata; SecIdentityRef myIdentity; SecTrustRef myTrust; OSStatus status = extractIdentityAndTrust(inpfxdata, &myIdentity, &myTrust); SecCertificateRef myCertificate; SecIdentityCopyCertificate(myIdentity, &myCertificate); const void *certs[] = { myCertificate }; CFArrayRef certsArray = CFArrayCreate(NULL, certs, 1, NULL); NSURLCredential *credential = [NSURLCredential credentialWithIdentity:myIdentity certificatees:(NSArray *)myCertificate persistence:NSURLCredentialPersistencePermanent]; [challenge.sender useCredential:credential forAuthenticationChallenge:challenge]; CFRelease(myIdentity); CFRelease(myCertificate); CFRelease(certsArray); } //extractIdentityAndTrust method. -(OSStatus) extractIdentityAndTrust:(CFDataRef)inpfxdata identity:(SecIdentityRef *)identity trust:(SecTrustRef *)trust { OSStatus securityError = errSecSuccess; CFSsortingngRef password = CFSTR("password"); const void *keys[] = { kSecImportExportPassphrase }; const void *values[] = { password }; CFDictionaryRef options = CFDictionaryCreate(NULL, keys, values, 1, NULL, NULL); CFArrayRef items = CFArrayCreate(NULL, 0, 0, NULL); securityError = SecPKCS12Import(inpfxdata, options, &items); if (securityError == 0) { CFDictionaryRef myIdentityAndTrust = CFArrayGetValueAtIndex(items, 0); const void *tempIdentity = NULL; tempIdentity = CFDictionaryGetValue(myIdentityAndTrust, kSecImportItemIdentity); *identity = (SecIdentityRef)tempIdentity; const void *tempTrust = NULL; tempTrust = CFDictionaryGetValue(myIdentityAndTrust, kSecImportItemTrust); *trust = (SecTrustRef)tempTrust; } if (options) { CFRelease(options); } return securityError; } 

bonne chance! ^ – ^

Donc non, il n'y a aucun moyen d'get le certificate du file mobileconfig. Les applications iOS utilisent son propre access et stockage au trousseau. Seuls les e-mails et autres services téléphoniques comme Internet peuvent utiliser ces certificates