/ SecurityTool / macOS / trusted_cert_utils.h
trusted_cert_utils.h
 1  /*
 2   * Copyright (c) 2003-2004,2006,2014-2019 Apple Inc. All Rights Reserved.
 3   *
 4   * @APPLE_LICENSE_HEADER_START@
 5   *
 6   * This file contains Original Code and/or Modifications of Original Code
 7   * as defined in and that are subject to the Apple Public Source License
 8   * Version 2.0 (the 'License'). You may not use this file except in
 9   * compliance with the License. Please obtain a copy of the License at
10   * http://www.opensource.apple.com/apsl/ and read it before using this
11   * file.
12   *
13   * The Original Code and all software distributed under the License are
14   * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15   * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16   * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17   * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18   * Please see the License for the specific language governing rights and
19   * limitations under the License.
20   *
21   * @APPLE_LICENSE_HEADER_END@
22   *
23   * trusted_cert_utils.h
24   */
25  #ifndef _TRUSTED_CERT_UTILS_H_
26  #define _TRUSTED_CERT_UTILS_H_  1
27  
28  #include <Security/SecCertificate.h>
29  #include <Security/SecPolicy.h>
30  #include <Security/SecTrust.h>
31  #include <Security/SecTrustedApplication.h>
32  
33  #ifdef __cplusplus
34  extern "C" {
35  #endif
36  
37  #define CFRELEASE(cf)	if(cf != NULL) { CFRelease(cf); }
38  
39  extern void indentIncr(void);
40  extern void indentDecr(void);
41  extern void indent(void);
42  void printAscii(const char *buf, unsigned len, unsigned maxLen);
43  void printHex(const unsigned char *buf, unsigned len, unsigned maxLen);
44  void printCfStr(CFStringRef cfstr);
45  void printCFDate(CFDateRef dateRef);
46  void printCfNumber(CFNumberRef cfNum);
47  void printResultType(CFNumberRef cfNum);
48  void printKeyUsage(CFNumberRef cfNum);
49  void printCssmErr(CFNumberRef cfNum);
50  void printCertLabel(SecCertificateRef certRef);
51  void printCertDescription(SecCertificateRef certRef);
52  void printCertText(SecCertificateRef certRef);
53  void printCertChain(SecTrustRef trustRef, bool printPem, bool printText);
54  
55  /* convert an OID to a SecPolicyRef */
56  extern SecPolicyRef oidToPolicy(const CSSM_OID *oid);
57  
58  /* convert a policy string to a SecPolicyRef */
59  extern SecPolicyRef oidStringToPolicy(const char *oidStr);
60  
61  /* CSSM_OID --> OID string */
62  extern const char *oidToOidString(const CSSM_OID *oid);
63  
64  /* compare OIDs; returns 1 if identical, else returns 0 */
65  extern int compareOids(const CSSM_OID *oid1, const CSSM_OID *oid2);
66  
67  /* app path string to SecTrustedApplicationRef */
68  extern SecTrustedApplicationRef appPathToAppRef(const char *appPath);
69  
70  /* read a file --> SecCertificateRef */
71  int readCertFile(const char *fileName, SecCertificateRef *certRef);
72  
73  /* policy string --> CSSM_OID */
74  const CSSM_OID *policyStringToOid(const char *policy, bool *useTLS);
75  
76  /* revocation option string --> revocation option flag */
77  CFOptionFlags revCheckOptionStringToFlags(const char *revCheckOption);
78  
79  #ifdef __cplusplus
80  }
81  #endif
82  
83  #endif /* _TRUSTED_CERT_UTILS_H_ */