X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/80e2389990082500d76eb566d4946be3e786c3ef..d8f41ccd20de16f8ebe2ccc84d47bf1cb2b26bbb:/SecurityTool/trusted_cert_dump.c?ds=inline diff --git a/SecurityTool/trusted_cert_dump.c b/SecurityTool/trusted_cert_dump.c new file mode 100644 index 00000000..0fd4429d --- /dev/null +++ b/SecurityTool/trusted_cert_dump.c @@ -0,0 +1,265 @@ +/* + * Copyright (c) 2003-2009,2012,2014 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