+ CFMutableArrayRef certs = CFArrayCreateMutableCopy(kCFAllocatorDefault, CFArrayGetCount(certList), certList);
+
+ if(certs){
+ //reorder certificates:
+ tsn = CFArrayGetCount(certs);
+ good = tsn > 0 && Security::CodeSigning::isAppleCA(SecCertificateRef(CFArrayGetValueAtIndex(certs, tsn-1)));
+
+ if ( good == false )
+ {
+ //change TS certificate ordering.
+ for (CFIndex n = 0; n < tsn; n++)
+ {
+ if (SecCertificateRef tsRoot = SecCertificateRef(CFArrayGetValueAtIndex(certs, n)))
+ if ((good = Security::CodeSigning::isAppleCA(tsRoot))) {
+ CFArrayExchangeValuesAtIndices(certs, n, tsn-1);
+ break;
+ }
+ }
+ }
+
+ *certificateRefs = CFArrayCreateCopy(kCFAllocatorDefault, certs);
+ CFRelease(certs);
+ status = errSecSuccess;
+ }