В настоящее время я использую SocketRocket в качестве реализации WebSocket для своих приложений iOS и хотел бы привязать CA моего сервера к доверенному сертификату с помощью свойства SR_SSLPinnedCertificates. Я ищу хороший пример загрузки одного или нескольких сертификатов для передачи в SocketRocket. У меня есть следующий код для работы, но я не уверен, что это правильно или если есть более прямой подход.SocketRocket и iOS сертификат pinning
CFArrayRef keyref = NULL;
NSString *path = [[NSBundle mainBundle] pathForResource:@"certificate" ofType:@"p12"];
NSData *data = [[NSData alloc] initWithContentsOfFile:path];
OSStatus status = SecPKCS12Import((__bridge CFDataRef)data, (__bridge CFDictionaryRef)[NSDictionary dictionaryWithObject:@"eftl_key_pass" forKey:(__bridge id)kSecImportExportPassphrase], &keyref);
if (status == noErr) {
CFDictionaryRef identityDict = CFArrayGetValueAtIndex(keyref, 0);
SecIdentityRef identityRef = (SecIdentityRef)CFDictionaryGetValue(identityDict, kSecImportItemIdentity);
SecCertificateRef certRef = NULL;
SecIdentityCopyCertificate(identityRef, &certRef);
}
Отличный вопрос! Надеюсь, на это скоро на него назовут ответ ... – arik