/* * Copyright (c) 2003-2009 Apple Inc. All Rights Reserved. * * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License * Version 2.0 (the 'License'). You may not use this file except in * compliance with the License. Please obtain a copy of the License at * http://www.opensource.apple.com/apsl/ and read it before using this * file. * * The Original Code and all software distributed under the License are * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. * Please see the License for the specific language governing rights and * limitations under the License. * * @APPLE_LICENSE_HEADER_END@ * * trusted_cert_dump.c */ #include "trusted_cert_dump.h" #include "trusted_cert_utils.h" #include #include #include #include #include #include #include #include // SecCertificateInferLabel #include /* print cert's label (the one SecCertificate infers) */ static OSStatus printCertLabel( SecCertificateRef certRef) { OSStatus ortn; CFStringRef label; ortn = SecCertificateInferLabel(certRef, &label); if(ortn) { cssmPerror("SecCertificateInferLabel", ortn); return ortn; } printCfStr(label); CFRelease(label); return noErr; } /* * Display a Trust Settings array as obtained from * SecTrustSettingsCopyTrustSettings(). */ static int displayTrustSettings( CFArrayRef trustSettings) { /* must always be there though it may be empty */ if(trustSettings == NULL) { fprintf(stderr, "***displayTrustSettings: missing trust settings array"); return -1; } if(CFGetTypeID(trustSettings) != CFArrayGetTypeID()) { fprintf(stderr, "***displayTrustSettings: malformed trust settings array"); return -1; } int ourRtn = 0; CFIndex numUseConstraints = CFArrayGetCount(trustSettings); indentIncr(); indent(); printf("Number of trust settings : %ld\n", (long)numUseConstraints); OSStatus ortn; SecPolicyRef certPolicy; SecTrustedApplicationRef certApp; CFDictionaryRef ucDict; CFStringRef policyStr; CFNumberRef cfNum; CFIndex ucDex; /* grind thru the trust settings dictionaries */ for(ucDex=0; ucDex