|
@@ -497,30 +497,37 @@ static CFAbsoluteTime getExpiredDate(SecCertificateRef cert) {
|
|
|
return NO;
|
|
|
}
|
|
|
|
|
|
++ (NSString *)stringFromDNwithSubjectName:(CFArrayRef)array {
|
|
|
+ if (!array || CFArrayGetCount(array) == 0) {
|
|
|
+ return @"";
|
|
|
+ }
|
|
|
|
|
|
-+ (NSString *)stringFromDNwithSubjectName:(CFArrayRef)array
|
|
|
-{
|
|
|
- NSMutableString * out = [[NSMutableString alloc] init];
|
|
|
- const void *keys[] = { kSecOIDCommonName, kSecOIDOrganizationName,kSecOIDOrganizationalUnitName,kSecOIDEmailAddress, kSecOIDLocalityName, kSecOIDStateProvinceName, kSecOIDCountryName };
|
|
|
- const void *labels[] = { "cn", "o", "ou", "email","l", "s", "c" };
|
|
|
+ NSMutableString *out = [NSMutableString string];
|
|
|
+ const void *keys[] = { kSecOIDCommonName, kSecOIDOrganizationName, kSecOIDOrganizationalUnitName, kSecOIDEmailAddress, kSecOIDLocalityName, kSecOIDStateProvinceName, kSecOIDCountryName };
|
|
|
+ const char *labels[] = { "cn", "o", "ou", "email", "l", "s", "c" };
|
|
|
|
|
|
- for(int i = 0; i < sizeof(keys)/sizeof(keys[0]); i++) {
|
|
|
- for (CFIndex n = 0 ; n < CFArrayGetCount(array); n++) {
|
|
|
+ for (int i = 0; i < sizeof(keys) / sizeof(keys[0]); i++) {
|
|
|
+ for (CFIndex n = 0; n < CFArrayGetCount(array); n++) {
|
|
|
CFDictionaryRef dict = CFArrayGetValueAtIndex(array, n);
|
|
|
- if (CFGetTypeID(dict) != CFDictionaryGetTypeID())
|
|
|
+ if (!dict || CFGetTypeID(dict) != CFDictionaryGetTypeID()) {
|
|
|
continue;
|
|
|
+ }
|
|
|
CFTypeRef dictkey = CFDictionaryGetValue(dict, kSecPropertyKeyLabel);
|
|
|
- if (!CFEqual(dictkey, keys[i]))
|
|
|
+ if (!dictkey || !CFEqual(dictkey, keys[i])) {
|
|
|
continue;
|
|
|
- CFStringRef str = (CFStringRef) CFDictionaryGetValue(dict, kSecPropertyKeyValue);
|
|
|
- if (out.length< 1) {
|
|
|
- [out appendFormat:@"%s=%@", labels[i], (__bridge NSString*)str];
|
|
|
- } else {
|
|
|
- [out appendFormat:@",%s=%@", labels[i], (__bridge NSString*)str];
|
|
|
+ }
|
|
|
+ CFStringRef str = CFDictionaryGetValue(dict, kSecPropertyKeyValue);
|
|
|
+ if (str) {
|
|
|
+ NSString *keyValue = [NSString stringWithFormat:@"%s=%@", labels[i], (__bridge NSString *)str];
|
|
|
+ if (out.length < 1) {
|
|
|
+ [out appendString:keyValue];
|
|
|
+ } else {
|
|
|
+ [out appendFormat:@",%@", keyValue];
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- return [NSString stringWithString:out];
|
|
|
+ return out;
|
|
|
}
|
|
|
|
|
|
@end
|