]> git.saurik.com Git - apple/security.git/blobdiff - Security/libsecurity_keychain/lib/SecTrust.h
Security-57336.1.9.tar.gz
[apple/security.git] / Security / libsecurity_keychain / lib / SecTrust.h
diff --git a/Security/libsecurity_keychain/lib/SecTrust.h b/Security/libsecurity_keychain/lib/SecTrust.h
deleted file mode 100644 (file)
index 4a71e29..0000000
+++ /dev/null
@@ -1,686 +0,0 @@
-/*
- * Copyright (c) 2002-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@
- */
-
-/*!
-    @header SecTrust
-    The functions and data types in SecTrust implement trust computation
-    and allow the caller to apply trust decisions to the evaluation.
- */
-
-#ifndef _SECURITY_SECTRUST_H_
-#define _SECURITY_SECTRUST_H_
-
-#include <Security/SecBase.h>
-#include <CoreFoundation/CoreFoundation.h>
-#include <AvailabilityMacros.h>
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
-    @typedef SecTrustResultType
-    @abstract Specifies the trust result type.
-    @discussion SecTrustResultType results have two dimensions.  They specify
-    both whether evaluation suceeded and whether this is because of a user
-    decision.  The commonly expected result is kSecTrustResultUnspecified,
-    which indicates a positive result that wasn't decided by the user.  The
-    common failure is kSecTrustResultRecoverableTrustFailure, which means a
-    negative result.  kSecTrustResultProceed and kSecTrustResultDeny are the
-    positive and negative result respectively when decided by the user.  User
-    decisions are persisted through the use of SecTrustCopyExceptions() and
-    SecTrustSetExceptions().  Finally, kSecTrustResultFatalTrustFailure is a
-    negative result that must not be circumvented.
-    @constant kSecTrustResultInvalid Indicates an invalid setting or result.
-    This result usually means that SecTrustEvaluate has not yet been called.
-    @constant kSecTrustResultProceed Indicates you may proceed.  This value
-    may be returned by the SecTrustEvaluate function or stored as part of
-    the user trust settings.
-    @constant kSecTrustResultConfirm Indicates confirmation with the user
-    is required before proceeding.  Important: this value is no longer returned
-    or supported by SecTrustEvaluate or the SecTrustSettings API starting in
-    OS X 10.5; its use is deprecated in OS X 10.9 and later, as well as in iOS.
-    @constant kSecTrustResultDeny Indicates a user-configured deny; do not
-    proceed. This value may be returned by the SecTrustEvaluate function
-    or stored as part of the user trust settings.
-    @constant kSecTrustResultUnspecified Indicates the evaluation succeeded
-    and the certificate is implicitly trusted, but user intent was not
-    explicitly specified.  This value may be returned by the SecTrustEvaluate
-    function or stored as part of the user trust settings.
-    @constant kSecTrustResultRecoverableTrustFailure Indicates a trust policy
-    failure which can be overridden by the user.  This value may be returned
-    by the SecTrustEvaluate function but not stored as part of the user
-    trust settings.
-    @constant kSecTrustResultFatalTrustFailure Indicates a trust failure
-    which cannot be overridden by the user.  This value may be returned by the
-    SecTrustEvaluate function but not stored as part of the user trust
-    settings.
-    @constant kSecTrustResultOtherError Indicates a failure other than that
-    of trust evaluation. This value may be returned by the SecTrustEvaluate
-    function but not stored as part of the user trust settings.
- */
-
-typedef uint32_t SecTrustResultType;
-enum {
-    kSecTrustResultInvalid = 0,
-    kSecTrustResultProceed = 1,
-    kSecTrustResultConfirm CF_ENUM_DEPRECATED(10_0, 10_9, NA, NA) = 2,
-    kSecTrustResultDeny = 3,
-    kSecTrustResultUnspecified = 4,
-    kSecTrustResultRecoverableTrustFailure = 5,
-    kSecTrustResultFatalTrustFailure = 6,
-    kSecTrustResultOtherError = 7
-};
-
-/*!
-    @typedef SecTrustRef
-    @abstract CFType used for performing X.509 certificate trust evaluations.
- */
-typedef struct __SecTrust *SecTrustRef;
-
-/*!
-    @enum Trust Property Constants
-    @discussion Predefined key constants used to obtain values in a
-        per-certificate dictionary of trust evaluation results,
-        as retrieved from a call to SecTrustCopyProperties.
-    @constant kSecPropertyTypeTitle Specifies a key whose value is a
-        CFStringRef containing the title (display name) of this certificate.
-    @constant kSecPropertyTypeError Specifies a key whose value is a
-        CFStringRef containing the reason for a trust evaluation failure.
- */
-extern CFTypeRef kSecPropertyTypeTitle
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_7_0);
-extern CFTypeRef kSecPropertyTypeError
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_7_0);
-
-/*!
-    @enum Trust Result Constants
-    @discussion Predefined key constants used to obtain values in a
-        dictionary of trust evaluation results for a certificate chain,
-        as retrieved from a call to SecTrustCopyResult.
-    @constant kSecTrustEvaluationDate
-        This key will be present if a trust evaluation has been performed
-        and results are available. Its value is a CFDateRef representing
-        when the evaluation for this trust object took place.
-    @constant kSecTrustExtendedValidation
-        This key will be present and have a value of kCFBooleanTrue
-        if this chain was validated for EV.
-    @constant kSecTrustOrganizationName
-        Organization name field of subject of leaf certificate. This
-        field is meant to be displayed to the user as the validated
-        name of the company or entity that owns the certificate if the
-        kSecTrustExtendedValidation key is present.
-    @constant kSecTrustResultValue
-        This key will be present if a trust evaluation has been performed.
-        Its value is a CFNumberRef representing the SecTrustResultType result
-        for the evaluation.
-    @constant kSecTrustRevocationChecked
-        This key will be present iff this chain had its revocation checked.
-        The value will be a kCFBooleanTrue if revocation checking was
-        successful and none of the certificates in the chain were revoked.
-        The value will be kCFBooleanFalse if no current revocation status
-        could be obtained for one or more certificates in the chain due
-        to connection problems or timeouts.  This is a hint to a client
-        to retry revocation checking at a later time.
-    @constant kSecTrustRevocationValidUntilDate
-        This key will be present iff kSecTrustRevocationChecked has a
-        value of kCFBooleanTrue. The value will be a CFDateRef representing
-        the earliest date at which the revocation info for one of the
-        certificates in this chain might change.
- */
-extern CFTypeRef kSecTrustEvaluationDate
-    __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
-extern CFTypeRef kSecTrustExtendedValidation
-    __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
-extern CFTypeRef kSecTrustOrganizationName
-    __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
-extern CFTypeRef kSecTrustResultValue
-    __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
-extern CFTypeRef kSecTrustRevocationChecked
-    __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
-extern CFTypeRef kSecTrustRevocationValidUntilDate
-    __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
-
-#ifdef __BLOCKS__
-/*!
-    @typedef SecTrustCallback
-    @abstract Delivers the result from an asynchronous trust evaluation.
-    @param trustRef A reference to the trust object which has been evaluated.
-    @param trustResult The trust result of the evaluation. Additional status
-    information can be obtained by calling SecTrustCopyProperties().
- */
-typedef void (^SecTrustCallback)(SecTrustRef trustRef, SecTrustResultType trustResult);
-#endif /* __BLOCKS__ */
-
-
-/*!
-    @function SecTrustGetTypeID
-    @abstract Returns the type identifier of SecTrust instances.
-    @result The CFTypeID of SecTrust instances.
- */
-CFTypeID SecTrustGetTypeID(void)
-    __OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_2_0);
-
-/*!
-    @function SecTrustCreateWithCertificates
-    @abstract Creates a trust object based on the given certificates and
-    policies.
-    @param certificates The group of certificates to verify.  This can either
-    be a CFArrayRef of SecCertificateRef objects or a single SecCertificateRef
-    @param policies An array of one or more policies. You may pass a
-    SecPolicyRef to represent a single policy.
-    @param trust On return, a pointer to the trust management reference.
-    @result A result code.  See "Security Error Codes" (SecBase.h).
-    @discussion If multiple policies are passed in, all policies must verify
-    for the chain to be considered valid.
- */
-OSStatus SecTrustCreateWithCertificates(CFTypeRef certificates,
-    CFTypeRef policies, SecTrustRef *trust)
-    __OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_2_0);
-
-/*!
-    @function SecTrustSetPolicies
-    @abstract Set the policies for which trust should be verified.
-    @param trust A trust reference.
-    @param policies An array of one or more policies. You may pass a
-    SecPolicyRef to represent a single policy.
-    @result A result code. See "Security Error Codes" (SecBase.h).
-    @discussion This function will invalidate the existing trust result,
-    requiring a fresh evaluation for the newly-set policies.
- */
-OSStatus SecTrustSetPolicies(SecTrustRef trust, CFTypeRef policies)
-    __OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_6_0);
-
-/*!
-    @function SecTrustCopyPolicies
-    @abstract Returns an array of policies used for this evaluation.
-    @param trust  A reference to a trust object.
-    @param policies On return, an array of policies used by this trust.
-    Call the CFRelease function to release this reference.
-    @result A result code. See "Security Error Codes" (SecBase.h).
- */
-OSStatus SecTrustCopyPolicies(SecTrustRef trust, CFArrayRef *policies)
-    __OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_7_0);
-
-/*!
-    @function SecTrustSetNetworkFetchAllowed
-    @abstract Specifies whether a trust evaluation is permitted to fetch missing
-    intermediate certificates from the network.
-    @param trust A trust reference.
-    @param allowFetch If true, and a certificate's issuer is not present in the
-    trust reference but its network location is known, the evaluation is permitted
-    to attempt to download it automatically. Pass false to disable network fetch
-    for this trust evaluation.
-    @result A result code. See "Security Error Codes" (SecBase.h).
-    @discussion By default, network fetch of missing certificates is enabled if
-    the trust evaluation includes the SSL policy, otherwise it is disabled.
- */
-OSStatus SecTrustSetNetworkFetchAllowed(SecTrustRef trust,
-    Boolean allowFetch)
-    __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
-
-/*!
-    @function SecTrustGetNetworkFetchAllowed
-    @abstract Returns whether a trust evaluation is permitted to fetch missing
-    intermediate certificates from the network.
-    @param trust A trust reference.
-    @param allowFetch On return, the boolean pointed to by this parameter is
-    set to true if the evaluation is permitted to download missing certificates.
-    @result A result code. See "Security Error Codes" (SecBase.h).
-    @discussion By default, network fetch of missing certificates is enabled if
-    the trust evaluation includes the SSL policy, otherwise it is disabled.
- */
-OSStatus SecTrustGetNetworkFetchAllowed(SecTrustRef trust,
-    Boolean *allowFetch)
-    __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
-
-/*!
-    @function SecTrustSetAnchorCertificates
-    @abstract Sets the anchor certificates for a given trust.
-    @param trust A reference to a trust object.
-    @param anchorCertificates An array of anchor certificates.
-    @result A result code.  See "Security Error Codes" (SecBase.h).
-    @discussion Calling this function without also calling
-    SecTrustSetAnchorCertificatesOnly() will disable trusting any
-    anchors other than the ones in anchorCertificates.
- */
-OSStatus SecTrustSetAnchorCertificates(SecTrustRef trust,
-    CFArrayRef anchorCertificates)
-    __OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_2_0);
-
-/*!
-    @function SecTrustSetAnchorCertificatesOnly
-    @abstract Reenables trusting anchor certificates in addition to those
-    passed in via the SecTrustSetAnchorCertificates API.
-    @param trust A reference to a trust object.
-    @param anchorCertificatesOnly If true, disables trusting any anchors other
-    than the ones passed in via SecTrustSetAnchorCertificates().  If false,
-    the built in anchor certificates are also trusted.
-    @result A result code.  See "Security Error Codes" (SecBase.h).
- */
-OSStatus SecTrustSetAnchorCertificatesOnly(SecTrustRef trust,
-    Boolean anchorCertificatesOnly)
-    __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_2_0);
-
-/*!
-    @function SecTrustCopyCustomAnchorCertificates
-    @abstract Returns an array of custom anchor certificates used by a given
-    trust, as set by a prior call to SecTrustSetAnchorCertificates, or NULL if
-    no custom anchors have been specified.
-    @param trust  A reference to a trust object.
-    @param anchors On return, an array of custom anchor certificates (roots)
-    used by this trust, or NULL if no custom anchors have been specified. Call
-    the CFRelease function to release this reference.
-    @result A result code. See "Security Error Codes" (SecBase.h).
- */
-OSStatus SecTrustCopyCustomAnchorCertificates(SecTrustRef trust,
-    CFArrayRef *anchors)
-    __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_7_0);
-
-/*!
-    @function SecTrustSetVerifyDate
-    @abstract Set the date for which the trust should be verified.
-    @param trust A reference to a trust object.
-    @param verifyDate The date for which to verify trust.
-    @result A result code.  See "Security Error Codes" (SecBase.h).
-    @discussion This function lets you evaluate certificate validity for a
-    given date (for example, to determine if a signature was valid on the date
-    it was signed, even if the certificate has since expired.) If this function
-    is not called, the time at which SecTrustEvaluate() is called is used
-    implicitly as the verification time.
- */
-OSStatus SecTrustSetVerifyDate(SecTrustRef trust, CFDateRef verifyDate)
-    __OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_2_0);
-
-/*!
-    @function SecTrustGetVerifyTime
-    @abstract Returns the verify time.
-    @param trust A reference to the trust object being verified.
-    @result A CFAbsoluteTime value representing the time at which certificates
-    should be checked for validity.
-    @discussion This function retrieves the verification time for the given
-    trust reference, as set by a prior call to SecTrustSetVerifyDate(). If the
-    verification time has not been set, this function returns a value of 0,
-    indicating that the current date/time is implicitly used for verification.
- */
-CFAbsoluteTime SecTrustGetVerifyTime(SecTrustRef trust)
-    __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_2_0);
-
-/*!
-    @function SecTrustEvaluate
-    @abstract Evaluates a trust reference synchronously.
-    @param trust A reference to the trust object to evaluate.
-    @param result A pointer to a result type.
-    @result A result code. See "Security Error Codes" (SecBase.h).
-    @discussion This function will completely evaluate trust before returning,
-    possibly including network access to fetch intermediate certificates or to
-    perform revocation checking. Since this function can block during those
-    operations, you should call it from within a function that is placed on a
-    dispatch queue, or in a separate thread from your application's main
-    run loop. Alternatively, you can use the SecTrustEvaluateAsync function.
- */
-OSStatus SecTrustEvaluate(SecTrustRef trust, SecTrustResultType *result)
-    __OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_2_0);
-
-#ifdef __BLOCKS__
-/*!
-    @function SecTrustEvaluateAsync
-    @abstract Evaluates a trust reference asynchronously.
-    @param trust A reference to the trust object to evaluate.
-    @param queue A dispatch queue on which the result callback should be
-    executed. Pass NULL to use the current dispatch queue.
-    @param result A SecTrustCallback block which will be executed when the
-    trust evaluation is complete.
-    @result A result code. See "Security Error Codes" (SecBase.h).
- */
-OSStatus SecTrustEvaluateAsync(SecTrustRef trust,
-    dispatch_queue_t queue, SecTrustCallback result)
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_7_0);
-#endif
-
-/*!
-    @function SecTrustGetTrustResult
-    @param trust A reference to a trust object.
-    @param result A pointer to the result from the most recent call to
-    SecTrustEvaluate for this trust reference. If SecTrustEvaluate has not been
-    called or trust parameters have changed, the result is kSecTrustResultInvalid.
-    @result A result code. See "Security Error Codes" (SecBase.h).
-    @discussion This function replaces SecTrustGetResult for the purpose of
-    obtaining the current evaluation result of a given trust reference.
- */
-OSStatus SecTrustGetTrustResult(SecTrustRef trust,
-    SecTrustResultType *result)
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_7_0);
-
-/*!
-    @function SecTrustCopyPublicKey
-    @abstract Return the public key for a leaf certificate after it has
-    been evaluated.
-    @param trust A reference to the trust object which has been evaluated.
-    @result The certificate's public key, or NULL if it the public key could
-    not be extracted (this can happen with DSA certificate chains if the
-    parameters in the chain cannot be found).  The caller is responsible
-    for calling CFRelease on the returned key when it is no longer needed.
- */
-SecKeyRef SecTrustCopyPublicKey(SecTrustRef trust)
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_2_0);
-
-/*!
-    @function SecTrustGetCertificateCount
-    @abstract Returns the number of certificates in an evaluated certificate
-    chain.
-    @param trust A reference to a trust object.
-    @result The number of certificates in the trust chain, including the anchor.
-    @discussion Important: if the trust reference has not yet been evaluated,
-    this function will evaluate it first before returning. If speed is critical,
-    you may want to call SecTrustGetTrustResult first to make sure that a
-    result other than kSecTrustResultInvalid is present for the trust object.
- */
-CFIndex SecTrustGetCertificateCount(SecTrustRef trust)
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_2_0);
-
-/*!
-    @function SecTrustGetCertificateAtIndex
-    @abstract Returns a certificate from the trust chain.
-    @param trust Reference to a trust object.
-    @param ix The index of the requested certificate.  Indices run from 0
-    (leaf) to the anchor (or last certificate found if no anchor was found).
-    The leaf cert (index 0) is always present regardless of whether the trust
-    reference has been evaluated or not.
-    @result A SecCertificateRef for the requested certificate.
- */
-SecCertificateRef SecTrustGetCertificateAtIndex(SecTrustRef trust, CFIndex ix)
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_2_0);
-
-/*!
-    @function SecTrustCopyExceptions
-    @abstract Returns an opaque cookie which will allow future evaluations
-    of the current certificate to succeed.
-    @param trust A reference to an evaluated trust object.
-    @result An opaque cookie which when passed to SecTrustSetExceptions() will
-    cause a call to SecTrustEvaluate() return kSecTrustResultProceed.  This
-    will happen upon subsequent evaluation of the current certificate unless
-    some new error starts happening that wasn't being reported when the cookie
-    was returned from this function (for example, if the certificate expires
-    then evaluation will start failing again until a new cookie is obtained.)
-    @discussion Normally this API should only be called once the errors have
-    been presented to the user and the user decided to trust the current
-    certificate chain regardless of the errors being presented, for the
-    current application/server/protocol combination.
- */
-CFDataRef SecTrustCopyExceptions(SecTrustRef trust)
-    __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_4_0);
-
-/*!
-    @function SecTrustSetExceptions
-    @abstract Set a trust cookie to be used for evaluating this certificate chain.
-    @param trust A reference to a trust object.
-    @param exceptions An exceptions cookie as returned by a call to
-    SecTrustCopyExceptions() in the past.
-    @result Upon calling SecTrustEvaluate(), any failures that where present at the
-    time the exceptions object was created are ignored, and instead of returning
-    kSecTrustResultRecoverableTrustFailure, kSecTrustResultProceed will be returned
-    (if the certificate for which exceptions was created matches the current leaf
-    certificate).
-    @result Returns true if the exceptions cookies was valid and matches the current
-    leaf certificate, false otherwise.  This function will invalidate the existing
-    trust result, requiring a subsequent evaluation for the newly-set exceptions.
-    Note that this function returning true doesn't mean the caller can skip calling
-    SecTrustEvaluate, as there may be new errors since the exceptions cookie was
-    created (for example, a certificate may have subsequently expired.)
-    @discussion Clients of this interface will need to establish the context of this
-    exception to later decide when this exception cookie is to be used.
-    Examples of this context would be the server we are connecting to, the ssid
-    of the wireless network for which this cert is needed, the account for which
-    this cert should be considered valid, and so on.
- */
-bool SecTrustSetExceptions(SecTrustRef trust, CFDataRef exceptions)
-    __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_4_0);
-
-/*!
-    @function SecTrustCopyProperties
-    @abstract Return a property array for this trust evaluation.
-    @param trust A reference to a trust object. If the trust has not been
-    evaluated, the returned property array will be empty.
-    @result A property array. It is the caller's responsibility to CFRelease
-    the returned array when it is no longer needed.
-    @discussion This function returns an ordered array of CFDictionaryRef
-    instances for each certificate in the chain. Indices run from 0 (leaf) to
-    the anchor (or last certificate found if no anchor was found.) See the
-    "Trust Property Constants" section for a list of currently defined keys.
- */
-CFArrayRef SecTrustCopyProperties(SecTrustRef trust)
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_2_0);
-
-/*!
-    @function SecTrustCopyResult
-    @abstract Returns a dictionary containing information about the
-    evaluated certificate chain for use by clients.
-    @param trust A reference to a trust object.
-    @result A dictionary with various fields that can be displayed to the user,
-    or NULL if no additional info is available or the trust has not yet been
-    validated.  The caller is responsible for calling CFRelease on the value
-    returned when it is no longer needed.
-    @discussion Returns a dictionary for the overall trust evaluation. See the
-    "Trust Result Constants" section for a list of currently defined keys.
- */
-CFDictionaryRef SecTrustCopyResult(SecTrustRef trust)
-    __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
-
-/*!
-    @function SecTrustSetOCSPResponse
-    @abstract Attach OCSPResponse data to a trust object.
-    @param trust A reference to a trust object.
-    @param responseData This may be either a CFData object containing a single
-    DER-encoded OCSPResponse (per RFC 2560), or a CFArray of these.
-    @result A result code. See "Security Error Codes" (SecBase.h).
-    @discussion Allows the caller to provide OCSPResponse data (which may be
-    obtained during a TLS/SSL handshake, per RFC 3546) as input to a trust
-    evaluation. If this data is available, it can obviate the need to contact
-    an OCSP server for current revocation information.
- */
-OSStatus SecTrustSetOCSPResponse(SecTrustRef trust, CFTypeRef responseData)
-    __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
-
-
-/*
- *  Legacy functions (OS X only)
- */
-#if TARGET_OS_MAC && !TARGET_OS_IPHONE
-#include <Security/cssmtype.h>
-#include <Security/cssmapple.h>
-
-/*!
-    @typedef SecTrustUserSetting
-    @abstract Specifies a user-specified trust setting value.
-    @discussion Deprecated in OS X 10.9. User trust settings are managed by
-    functions in SecTrustSettings.h (starting with OS X 10.5), and by the
-    SecTrustCopyExceptions and SecTrustSetExceptions functions (starting with
-    iOS 4 and OS X 10.9). The latter two functions are recommended for both OS X
-    and iOS, as they avoid the need to explicitly specify these values.
- */
-typedef SecTrustResultType SecTrustUserSetting
-    __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_9, __IPHONE_NA, __IPHONE_NA);
-
-/*!
-    @typedef SecTrustOptionFlags
-    @abstract Options for customizing trust evaluation.
-    @constant kSecTrustOptionAllowExpired Allow expired certificates.
-    @constant kSecTrustOptionLeafIsCA Allow CA as leaf certificate.
-    @constant kSecTrustOptionFetchIssuerFromNet Allow network fetch of CA cert.
-    @constant kSecTrustOptionAllowExpiredRoot Allow expired roots.
-    @constant kSecTrustOptionRequireRevPerCert Require positive revocation
-    check per certificate.
-    @constant kSecTrustOptionUseTrustSettings Use TrustSettings instead of
-    anchors.
-    @constant kSecTrustOptionImplicitAnchors Properly self-signed certs are
-    treated as anchors implicitly.
- */
-typedef uint32_t SecTrustOptionFlags;
-enum {
-    kSecTrustOptionAllowExpired       = 0x00000001,
-    kSecTrustOptionLeafIsCA           = 0x00000002,
-    kSecTrustOptionFetchIssuerFromNet = 0x00000004,
-    kSecTrustOptionAllowExpiredRoot   = 0x00000008,
-    kSecTrustOptionRequireRevPerCert  = 0x00000010,
-    kSecTrustOptionUseTrustSettings   = 0x00000020,
-    kSecTrustOptionImplicitAnchors    = 0x00000040
-};
-
-/*!
-    @function SecTrustSetOptions
-    @abstract Sets optional flags for customizing a trust evaluation.
-    @param trustRef A trust reference.
-    @param options Flags to change evaluation behavior for this trust.
-    @result A result code. See "Security Error Codes" (SecBase.h).
-    @discussion This function is not available on iOS. Use SecTrustSetExceptions
-    and SecTrustCopyExceptions to modify default trust results, and
-    SecTrustSetNetworkFetchAllowed to specify whether missing CA certificates
-    can be fetched from the network.
- */
-OSStatus SecTrustSetOptions(SecTrustRef trustRef, SecTrustOptionFlags options)
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_NA);
-
-/*!
-    @function SecTrustSetParameters
-    @abstract Sets the action and action data for a trust object.
-    @param trustRef The reference to the trust to change.
-    @param action A trust action.
-    @param actionData A reference to data associated with this action.
-    @result A result code. See "Security Error Codes" (SecBase.h).
-    @discussion This function is deprecated in OS X 10.7 and later, where it
-    was replaced by SecTrustSetOptions, and is not available on iOS. Your code
-    should use SecTrustSetExceptions and SecTrustCopyExceptions to modify default
-    trust results, and SecTrustSetNetworkFetchAllowed to specify whether missing
-    CA certificates can be fetched from the network.
- */
-OSStatus SecTrustSetParameters(SecTrustRef trustRef,
-    CSSM_TP_ACTION action, CFDataRef actionData)
-    __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_7, __IPHONE_NA, __IPHONE_NA);
-
-/*!
-    @function SecTrustSetKeychains
-    @abstract Sets the keychains for a given trust object.
-    @param trust A reference to a trust object.
-    @param keychainOrArray A reference to an array of keychains to search, a
-    single keychain, or NULL to use the default keychain search list.
-    @result A result code. See "Security Error Codes" (SecBase.h).
-    @discussion By default, the user's keychain search list and the system
-    anchors keychain are searched for certificates to complete the chain. You
-    can specify a zero-element array if you do not want any keychains searched.
-    Note: this function is not applicable to iOS.
- */
-OSStatus SecTrustSetKeychains(SecTrustRef trust, CFTypeRef keychainOrArray)
-    __OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_NA);
-
-/*!
-    @function SecTrustGetResult
-    @abstract Returns detailed information on the outcome of an evaluation.
-    @param trustRef A reference to a trust object.
-    @param result A pointer to the result from the call to SecTrustEvaluate.
-    @param certChain On return, a pointer to the certificate chain used to
-    validate the input certificate. Call the CFRelease function to release
-    this pointer.
-    @param statusChain On return, a pointer to the status of the certificate
-    chain. Do not attempt to free this pointer; it remains valid until the
-    trust is destroyed or the next call to SecTrustEvaluate.
-    @result A result code. See "Security Error Codes" (SecBase.h).
-    @discussion This function is deprecated in OS X 10.7 and later,
-    and is not available on iOS.
-    To get the complete certificate chain, use SecTrustGetCertificateCount and
-    SecTrustGetCertificateAtIndex. To get detailed status information for each
-    certificate, use SecTrustCopyProperties. To get the overall trust result
-    for the evaluation, use SecTrustGetTrustResult.
- */
-OSStatus SecTrustGetResult(SecTrustRef trustRef, SecTrustResultType *result,
-    CFArrayRef *certChain, CSSM_TP_APPLE_EVIDENCE_INFO **statusChain)
-    __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_7, __IPHONE_NA, __IPHONE_NA);
-
-/*!
-    @function SecTrustGetCssmResult
-    @abstract Gets the CSSM trust result.
-    @param trust A reference to a trust.
-    @param result On return, a pointer to the CSSM trust result.
-    @result A result code. See "Security Error Codes" (SecBase.h).
-    @discussion This function is deprecated in OS X 10.7 and later,
-    and is not available on iOS.
-    To get detailed status information for each certificate, use
-    SecTrustCopyProperties. To get the overall trust result for the evaluation,
-    use SecTrustGetTrustResult.
- */
-OSStatus SecTrustGetCssmResult(SecTrustRef trust,
-    CSSM_TP_VERIFY_CONTEXT_RESULT_PTR *result)
-    __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_7, __IPHONE_NA, __IPHONE_NA);
-
-/*!
-    @function SecTrustGetCssmResultCode
-    @abstract Gets the result code from the most recent call to SecTrustEvaluate
-    for the specified trust.
-    @param trust A reference to a trust.
-    @param resultCode On return, the result code produced by the most recent
-    evaluation of the given trust (cssmerr.h). The value of resultCode is
-    undefined if SecTrustEvaluate has not been called.
-    @result A result code. See "Security Error Codes" (SecBase.h). Returns
-    errSecTrustNotAvailable if SecTrustEvaluate has not been called for the
-    specified trust.
-    @discussion This function is deprecated in OS X 10.7 and later,
-    and is not available on iOS.
-    To get detailed status information for each certificate, use
-    SecTrustCopyProperties. To get the overall trust result for the evaluation,
-    use SecTrustGetTrustResult.
- */
-OSStatus SecTrustGetCssmResultCode(SecTrustRef trust, OSStatus *resultCode)
-    __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_7, __IPHONE_NA, __IPHONE_NA);
-
-/*!
-    @function SecTrustGetTPHandle
-    @abstract Gets the CSSM trust handle
-    @param trust A reference to a trust.
-    @param handle On return, a CSSM trust handle.
-    @result A result code. See "Security Error Codes" (SecBase.h).
-    @discussion This function is deprecated in OS X 10.7 and later.
- */
-OSStatus SecTrustGetTPHandle(SecTrustRef trust, CSSM_TP_HANDLE *handle)
-    __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_7, __IPHONE_NA, __IPHONE_NA);
-
-/*!
-    @function SecTrustCopyAnchorCertificates
-    @abstract Returns an array of default anchor (root) certificates used by
-    the system.
-    @param anchors On return, an array containing the system's default anchors
-    (roots). Call the CFRelease function to release this pointer.
-    @result A result code. See "Security Error Codes" (SecBase.h).
-    @discussion This function is not available on iOS, as certificate data
-    for system-trusted roots is currently unavailable on that platform.
- */
-OSStatus SecTrustCopyAnchorCertificates(CFArrayRef *anchors)
-    __OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_NA);
-
-#endif /* TARGET_OS_MAC && !TARGET_OS_IPHONE */
-
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* !_SECURITY_SECTRUST_H_ */