Obtenga los detalles del certificate SSL

Quiero examinar el certificate SSL que -(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge recibe y tengo el siguiente fragment que me da el nombre común del emisor y el DER.

 SecTrustRef trustRef = [[challenge protectionSpace] serverTrust]; SecTrustEvaluate(trustRef, NULL); CFIndex count = SecTrustGetCertificateCount(trustRef); for (CFIndex i = 0; i < count; i++) { SecCertificateRef certRef = SecTrustGetCertificateAtIndex(trustRef, i); CFStringRef certSummary = SecCertificateCopySubjectSummary(certRef); CFDataRef certData = SecCertificateCopyData(certRef); } 

Además, me gustaría get la huella digital y la firma. Mi conocimiento de SSL no es tan profundo; ¿Acaso puedo extraer lo anterior de la representación DER?

La documentation no ayuda. http://developer.apple.com/library/ios/#documentation/Security/Reference/certifkeytrustservices/Reference/reference.html .

Puede get la huella sha1 de esta manera.

 // #import <CommonCrypto/CommonDigest.h> +(NSString*)sha1:(NSData*)certData { unsigned char sha1Buffer[CC_SHA1_DIGEST_LENGTH]; CC_SHA1(certData.bytes, certData.length, sha1Buffer); NSMutableString *fingerprint = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 3]; for (int i = 0; i < CC_SHA1_DIGEST_LENGTH; ++i) [fingerprint appendFormat:@"%02x ",sha1Buffer[i]]; return [fingerprint stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; } 

La huella digital md5 se puede get de manera similar. Los hashes sha1 y md5 obtenidos de esta manera coinciden con las huellas dactilares que muestran Safari y Chrome para un certificate no confiable.