--- /dev/null
+/*
+ * Copyright (c) 2003-2015 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@
+ */
+
+/*!
+ @header SecPolicyPriv
+ Private part of SecPolicy.h
+*/
+
+#ifndef _SECURITY_SECPOLICYPRIV_H_
+#define _SECURITY_SECPOLICYPRIV_H_
+
+#include <Security/SecPolicy.h>
+#include <CoreFoundation/CFArray.h>
+
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/*!
+ @enum Policy Constants (Private)
+ @discussion Predefined constants used to specify a policy.
+ @constant kSecPolicyAppleMobileStore
+ @constant kSecPolicyAppleTestMobileStore
+ @constant kSecPolicyAppleEscrowService
+ @constant kSecPolicyAppleProfileSigner
+ @constant kSecPolicyAppleQAProfileSigner
+ @constant kSecPolicyAppleServerAuthentication
+ @constant kSecPolicyAppleOTAPKISigner
+ @constant kSecPolicyAppleTestOTAPKISigner
+ @constant kSecPolicyAppleIDValidationRecordSigning
+ @constant kSecPolicyAppleSMPEncryption
+ @constant kSecPolicyAppleTestSMPEncryption
+ @constant kSecPolicyApplePCSEscrowService
+ @constant kSecPolicyApplePPQSigning
+ @constant kSecPolicyAppleTestPPQSigning
+ @constant kSecPolicyAppleSWUpdateSigning
+ @constant kSecPolicyAppleATVAppSigning
+ @constant kSecPolicyAppleTestATVAppSigning
+
+*/
+extern const CFStringRef kSecPolicyAppleMobileStore
+ __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
+extern const CFStringRef kSecPolicyAppleTestMobileStore
+ __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
+extern const CFStringRef kSecPolicyAppleEscrowService
+ __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
+extern const CFStringRef kSecPolicyAppleProfileSigner
+ __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
+extern const CFStringRef kSecPolicyAppleQAProfileSigner
+ __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
+extern const CFStringRef kSecPolicyAppleServerAuthentication
+ __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
+#if TARGET_OS_IPHONE
+extern const CFStringRef kSecPolicyAppleOTAPKISigner
+ __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_7_0);
+extern const CFStringRef kSecPolicyAppleTestOTAPKISigner
+ __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_7_0);
+extern const CFStringRef kSecPolicyAppleIDValidationRecordSigningPolicy
+ __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_7_0);
+extern const CFStringRef kSecPolicyAppleSMPEncryption
+ __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);
+extern const CFStringRef kSecPolicyAppleTestSMPEncryption
+ __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);
+#endif
+extern const CFStringRef kSecPolicyApplePCSEscrowService
+ __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
+extern const CFStringRef kSecPolicyApplePPQSigning
+ __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0);
+extern const CFStringRef kSecPolicyAppleTestPPQSigning
+ __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0);
+extern const CFStringRef kSecPolicyAppleSWUpdateSigning
+ __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0);
+extern const CFStringRef kSecPolicyAppleATVAppSigning
+ __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0);
+extern const CFStringRef kSecPolicyAppleTestATVAppSigning
+ __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0);
+
+/*!
+ @function SecPolicyCopy
+ @abstract Returns a copy of a policy reference based on certificate type and OID.
+ @param certificateType A certificate type.
+ @param policyOID The OID of the policy you want to find. This is a required parameter. See oidsalg.h to see a list of policy OIDs.
+ @param policy The returned policy reference. This is a required parameter.
+ @result A result code. See "Security Error Codes" (SecBase.h).
+ @discussion This function is deprecated in Mac OS X 10.7 and later;
+ to obtain a policy reference, use one of the SecPolicyCreate* functions in SecPolicy.h.
+*/
+OSStatus SecPolicyCopy(CSSM_CERT_TYPE certificateType, const CSSM_OID *policyOID, SecPolicyRef* policy)
+ __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_7, __IPHONE_NA, __IPHONE_NA);
+
+/*!
+ @function SecPolicyCopyAll
+ @abstract Returns an array of all known policies based on certificate type.
+ @param certificateType A certificate type. This is a optional parameter. Pass CSSM_CERT_UNKNOWN if the certificate type is unknown.
+ @param policies The returned array of policies. This is a required parameter.
+ @result A result code. See "Security Error Codes" (SecBase.h).
+ @discussion This function is deprecated in Mac OS X 10.7 and later;
+ to obtain a policy reference, use one of the SecPolicyCreate* functions in SecPolicy.h. (Note: there is normally
+ no reason to iterate over multiple disjointed policies, except to provide a way to edit trust settings for each
+ policy, as is done in certain certificate UI views. In that specific case, your code should call SecPolicyCreateWithOID
+ for each desired policy from the list of supported OID constants in SecPolicy.h.)
+*/
+OSStatus SecPolicyCopyAll(CSSM_CERT_TYPE certificateType, CFArrayRef* policies)
+ __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_7, __IPHONE_NA, __IPHONE_NA);
+
+/* Given a unified SecPolicyRef, return a copy with a legacy
+ C++ ItemImpl-based Policy instance. Only for internal use;
+ legacy references cannot be used by SecPolicy API functions. */
+SecPolicyRef SecPolicyCreateItemImplInstance(SecPolicyRef policy);
+
+/* Given a CSSM_OID pointer, return a string which can be passed
+ to SecPolicyCreateWithProperties. The return value can be NULL
+ if no supported policy was found for the OID argument. */
+CFStringRef SecPolicyGetStringForOID(CSSM_OID* oid);
+
+/*!
+ @function SecPolicyCreateAppleIDSService
+ @abstract Ensure we're appropriately pinned to the IDS service (SSL + Apple restrictions)
+ */
+SecPolicyRef SecPolicyCreateAppleIDSService(CFStringRef hostname);
+
+/*!
+ @function SecPolicyCreateAppleIDSService
+ @abstract Ensure we're appropriately pinned to the IDS service (SSL + Apple restrictions)
+ */
+SecPolicyRef SecPolicyCreateAppleIDSServiceContext(CFStringRef hostname, CFDictionaryRef context);
+
+/*!
+ @function SecPolicyCreateApplePushService
+ @abstract Ensure we're appropriately pinned to the Push service (SSL + Apple restrictions)
+ */
+SecPolicyRef SecPolicyCreateApplePushService(CFStringRef hostname, CFDictionaryRef context);
+
+/*!
+ @function SecPolicyCreateApplePushServiceLegacy
+ @abstract Ensure we're appropriately pinned to the Push service (SSL + Apple restrictions)
+ */
+SecPolicyRef SecPolicyCreateApplePushServiceLegacy(CFStringRef hostname);
+
+/*!
+ @function SecPolicyCreateAppleMMCSService
+ @abstract Ensure we're appropriately pinned to the IDS service (SSL + Apple restrictions)
+ */
+SecPolicyRef SecPolicyCreateAppleMMCSService(CFStringRef hostname, CFDictionaryRef context);
+
+/*!
+ @function SecPolicyCreateAppleGSService
+ @abstract Ensure we're appropriately pinned to the GS service (SSL + Apple restrictions)
+*/
+SecPolicyRef SecPolicyCreateAppleGSService(CFStringRef hostname, CFDictionaryRef context)
+ __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0);
+
+/*!
+ @function SecPolicyCreateApplePPQService
+ @abstract Ensure we're appropriately pinned to the PPQ service (SSL + Apple restrictions)
+*/
+SecPolicyRef SecPolicyCreateApplePPQService(CFStringRef hostname, CFDictionaryRef context);
+
+/*!
+ @function SecPolicyCreateAppleSSLService
+ @abstract Ensure we're appropriately pinned to an Apple server (SSL + Apple restrictions)
+ */
+SecPolicyRef SecPolicyCreateAppleSSLService(CFStringRef hostname);
+
+/*!
+ @function SecPolicyCreateAppleTimeStampingAndRevocationPolicies
+ @abstract Create timeStamping policy array from a given set of policies by applying identical revocation behavior
+ @param policyOrArray can be a SecPolicyRef or a CFArray of SecPolicyRef
+ */
+CFArrayRef SecPolicyCreateAppleTimeStampingAndRevocationPolicies(CFTypeRef policyOrArray);
+
+/*!
+ @function SecPolicyCreateAppleATVAppSigning
+ @abstract Check for intermediate certificate 'Apple Worldwide Developer Relations Certification Authority' by name,
+ and apple anchor.
+ Leaf cert must have Digital Signature usage.
+ Leaf cert must have Apple ATV App Signing marker OID (1.2.840.113635.100.6.1.24).
+ Leaf cert must have 'Apple TVOS Application Signing' common name.
+ */
+SecPolicyRef SecPolicyCreateAppleATVAppSigning(void)
+ __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0);
+
+/*!
+ @function SecPolicyCreateTestAppleATVAppSigning
+ @abstract Check for intermediate certificate 'Apple Worldwide Developer Relations Certification Authority' by name,
+ and apple anchor.
+ Leaf cert must have Digital Signature usage.
+ Leaf cert must have Apple ATV App Signing Test marker OID (1.2.840.113635.100.6.1.24.1).
+ Leaf cert must have 'TEST Apple TVOS Application Signing TEST' common name.
+ */
+SecPolicyRef SecPolicyCreateTestAppleATVAppSigning(void)
+ __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0);
+
+/*!
+ @function SecPolicyCreateApplePayIssuerEncryption
+ @abstract Check for intermediate certificate 'Apple Worldwide Developer Relations CA - G2' by name,
+ and apple anchor.
+ Leaf cert must have Key Encipherment and Key Agreement usage.
+ Leaf cert must have Apple Pay Issuer Encryption marker OID (1.2.840.113635.100.6.39).
+ */
+SecPolicyRef SecPolicyCreateApplePayIssuerEncryption(void)
+ __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* !_SECURITY_SECPOLICYPRIV_H_ */