]> git.saurik.com Git - apple/security.git/blobdiff - libsecurity_ssl/lib/SecureTransportPriv.h
Security-57031.1.35.tar.gz
[apple/security.git] / libsecurity_ssl / lib / SecureTransportPriv.h
diff --git a/libsecurity_ssl/lib/SecureTransportPriv.h b/libsecurity_ssl/lib/SecureTransportPriv.h
deleted file mode 100644 (file)
index 01035af..0000000
+++ /dev/null
@@ -1,758 +0,0 @@
-/*
- * Copyright (c) 1999-2001,2005-2012 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@
- */
-
-/*
- * SecureTransportPriv.h - Apple-private exported routines
- */
-
-#ifndef        _SECURE_TRANSPORT_PRIV_H_
-#define _SECURE_TRANSPORT_PRIV_H_      1
-
-#include <Security/SecureTransport.h>
-#include <Security/SecTrust.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "sslTypes.h"
-
-/* Create an SSL Context with an external record layer - eg: kernel accelerated layer */
-SSLContextRef
-SSLCreateContextWithRecordFuncs(CFAllocatorRef alloc,
-                                SSLProtocolSide protocolSide,
-                                SSLConnectionType connectionType,
-                                const struct SSLRecordFuncs *recFuncs);
-
-/* Set the external record layer context */
-OSStatus
-SSLSetRecordContext         (SSLContextRef          ctx,
-                             SSLRecordContextRef    recCtx);
-
-/* The size of of client- and server-generated random numbers in hello messages. */
-#define SSL_CLIENT_SRVR_RAND_SIZE              32
-
-/* The size of the pre-master and master secrets. */
-#define SSL_RSA_PREMASTER_SECRET_SIZE  48
-#define SSL_MASTER_SECRET_SIZE                 48
-
-/*
- * For the following three functions, *size is the available
- * buffer size on entry and the actual size of the data returned
- * on return. The above consts are for convenience.
- */
-OSStatus SSLInternalMasterSecret(
-   SSLContextRef context,
-   void *secret,         // mallocd by caller, SSL_MASTER_SECRET_SIZE
-   size_t *secretSize);  // in/out
-
-OSStatus SSLInternalServerRandom(
-   SSLContextRef context,
-   void *randBuf,                      // mallocd by caller, SSL_CLIENT_SRVR_RAND_SIZE
-   size_t *randSize);  // in/out
-
-OSStatus SSLInternalClientRandom(
-   SSLContextRef context,
-   void *randBuf,              // mallocd by caller, SSL_CLIENT_SRVR_RAND_SIZE
-   size_t *randSize);  // in/out
-
-/*
- * Obtain the sizes of the currently negotiated HMAC digest, session
- * key, and session key IV.
- */
-OSStatus SSLGetCipherSizes(
-       SSLContextRef context,
-       size_t *digestSize,
-       size_t *symmetricKeySize,
-       size_t *ivSize);
-
-OSStatus SSLInternal_PRF(
-   SSLContextRef context,
-   const void *secret,
-   size_t secretLen,
-   const void *label,
-   size_t labelLen,
-   const void *seed,
-   size_t seedLen,
-   void *out,                  // mallocd by caller, length >= outLen
-   size_t outLen);
-
-/*
- * Obtain a SecTrustRef representing peer certificates. Valid anytime,
- * subsequent to a handshake attempt. The returned SecTrustRef is valid
- * only as long as the SSLContextRef is.
- */
-OSStatus
-SSLGetPeerSecTrust                     (SSLContextRef          context,
-                                                        SecTrustRef            *secTrust);     /* RETURNED */
-
-/*
- * Obtain resumable session info. Can be called anytime subsequent to
- * handshake attempt.
- *
- * if sessionWasResumed is True on return, the session is indeed a
- * resumed session; the sessionID (an opaque blob generated by the
- * server) is returned in *sessionID. The length of the sessionID
- * is returned in *sessionIDLength. Caller must allocate the
- * sessionID buffer; it max size is MAX_SESSION_ID_LENGTH bytes.
- */
-#define MAX_SESSION_ID_LENGTH  32
-
-OSStatus
-SSLGetResumableSessionInfo     (
-       SSLContextRef   context,
-       Boolean                 *sessionWasResumed,             // RETURNED
-       void                    *sessionID,                             // RETURNED, mallocd by caller
-       size_t                  *sessionIDLength);              // IN/OUT
-
-/*
- * Getters for SSLSetCertificate() and SSLSetEncryptionCertificate()
- */
-OSStatus
-SSLGetCertificate (
-       SSLContextRef   context,
-       CFArrayRef              *certRefs);                             // RETURNED, *not* retained
-
-OSStatus
-SSLGetEncryptionCertificate (
-       SSLContextRef   context,
-       CFArrayRef              *certRefs);                             // RETURNED, *not* retained
-
-/*
- * Getter for SSLSetClientSideAuthenticate()
- */
-OSStatus
-SSLGetClientSideAuthenticate (
-       SSLContextRef   context,
-       SSLAuthenticate *auth);                                 // RETURNED
-
-/*
- * Get/set array of trusted leaf certificates.
- *
- * If none have been set previously with SSLSetTrustedLeafCertificates(),
- * then SSLCopyTrustedLeafCertificates() will return NULL with errSecSuccess.
- */
-OSStatus
-SSLSetTrustedLeafCertificates (
-       SSLContextRef   context,
-       CFArrayRef              certRefs);
-
-OSStatus
-SSLCopyTrustedLeafCertificates (
-       SSLContextRef   context,
-       CFArrayRef              *certRefs);                             // RETURNED, caller must release
-
-/*
- * Get/set enable of anonymous ciphers. Default is enabled.
- *
- * SSLSetAllowAnonymousCiphers() returns errSecBadReq if SSLSetEnabledCiphers()
- * has already been called.
- *
- * The enable state set by SSLSetAllowAnonymousCiphers() is ignored if
- * SSLSetEnabledCiphers() is called after SSLSetAllowAnonymousCiphers() is
- * called, i.e., SSLSetEnabledCiphers() overrides SSLSetAllowAnonymousCiphers().
- *
- * NOTE: "Anonymous" ciphers include those ciphers that perform no encryption,
- * as well as ciphers that perform no authentication, since neither are secure.
- */
-OSStatus
-SSLSetAllowAnonymousCiphers(
-       SSLContextRef   context,
-       Boolean                 enable);
-
-OSStatus
-SSLGetAllowAnonymousCiphers(
-       SSLContextRef   context,
-       Boolean                 *enable);
-
-/*
- * Override the default session cache timeout for a cache entry created for
- * the current session.
- */
-OSStatus
-SSLSetSessionCacheTimeout(
-       SSLContextRef context,
-       uint32_t timeoutInSeconds);
-
-/*
- * Callback function for EAP-style PAC-based session resumption.
- * This function is called by SecureTransport to obtain the
- * master secret.
- */
-typedef void (*SSLInternalMasterSecretFunction)(
-       SSLContextRef ctx,
-       const void *arg,                /* opaque to SecureTransport; app-specific */
-       void *secret,                   /* mallocd by caller, SSL_MASTER_SECRET_SIZE */
-       size_t *secretLength);  /* in/out */
-
-/*
- * Register a callback for obtaining the master_secret when performing
- * PAC-based session resumption. At the time the callback is called,
- * the following are guaranteed to be valid:
- *
- *  -- serverRandom (via SSLInternalServerRandom())
- *  -- clientRandom (via SSLInternalClientRandom())
- *  -- negotiated protocol version (via SSLGetNegotiatedProtocolVersion())
- *  -- negotiated CipherSuite (via SSLGetNegotiatedCipher())
- *
- * Currently, PAC-based session resumption is only implemented on
- * the client side for Deployment builds.
- *
- * On the client side, this callback occurs if/when the server sends a
- * ChangeCipherSpec message immediately following its ServerHello
- * message (i.e., it's skipped the entire Key Exchange phase of
- * negotiation).
- *
- * On the server side (Development builds only) this callback occurs
- * immediately upon receipt of the Client Hello message, before we send
- * the Server Hello.
- */
-OSStatus
-SSLInternalSetMasterSecretFunction(
-       SSLContextRef ctx,
-       SSLInternalMasterSecretFunction mFunc,
-       const void *arg);               /* opaque to SecureTransport; app-specific */
-
-/*
- * Provide an opaque SessionTicket for use in PAC-based session
- * resumption. Client side only. The provided ticket is sent in
- * the ClientHello message as a SessionTicket extension.
- * The maximum ticketLength is 2**16-1.
- */
-OSStatus SSLInternalSetSessionTicket(
-   SSLContextRef ctx,
-   const void *ticket,
-   size_t ticketLength);
-
-/*
- * Support for specifying and obtaining ECC curves, used with the ECDH-based
- * ciphersuites.
- */
-
-/*
- * These are the named curves from RFC 4492
- * section 5.1.1, with the exception of SSL_Curve_None which means
- * "ECDSA not negotiated".
- */
-typedef enum
-{
-       SSL_Curve_None = -1,
-
-    SSL_Curve_sect163k1 = 1,
-    SSL_Curve_sect163r1 = 2,
-    SSL_Curve_sect163r2 = 3,
-    SSL_Curve_sect193r1 = 4,
-    SSL_Curve_sect193r2 = 5,
-    SSL_Curve_sect233k1 = 6,
-    SSL_Curve_sect233r1 = 7,
-    SSL_Curve_sect239k1 = 8,
-    SSL_Curve_sect283k1 = 9,
-    SSL_Curve_sect283r1 = 10,
-    SSL_Curve_sect409k1 = 11,
-    SSL_Curve_sect409r1 = 12,
-    SSL_Curve_sect571k1 = 13,
-    SSL_Curve_sect571r1 = 14,
-    SSL_Curve_secp160k1 = 15,
-    SSL_Curve_secp160r1 = 16,
-    SSL_Curve_secp160r2 = 17,
-    SSL_Curve_secp192k1 = 18,
-    SSL_Curve_secp192r1 = 19,
-    SSL_Curve_secp224k1 = 20,
-    SSL_Curve_secp224r1 = 21,
-    SSL_Curve_secp256k1 = 22,
-
-    /* These are the ones we actually support */
-       SSL_Curve_secp256r1 = 23,
-       SSL_Curve_secp384r1 = 24,
-       SSL_Curve_secp521r1 = 25
-} SSL_ECDSA_NamedCurve;
-
-/*
- * Obtain the SSL_ECDSA_NamedCurve negotiated during a handshake.
- * Returns errSecParam if no ECDH-related ciphersuite was negotiated.
- */
-extern OSStatus SSLGetNegotiatedCurve(
-   SSLContextRef ctx,
-   SSL_ECDSA_NamedCurve *namedCurve);    /* RETURNED */
-
-/*
- * Obtain the number of currently enabled SSL_ECDSA_NamedCurves.
- */
-extern OSStatus SSLGetNumberOfECDSACurves(
-   SSLContextRef ctx,
-   unsigned *numCurves);                               /* RETURNED */
-
-/*
- * Obtain the ordered list of currently enabled SSL_ECDSA_NamedCurves.
- * Caller allocates returned array and specifies its size (in
- * SSL_ECDSA_NamedCurves) in *numCurves on entry; *numCurves
- * is the actual size of the returned array on successful return.
- */
-extern OSStatus SSLGetECDSACurves(
-   SSLContextRef ctx,
-   SSL_ECDSA_NamedCurve *namedCurves,  /* RETURNED */
-   unsigned *numCurves);                               /* IN/OUT */
-
-/*
- * Specify ordered list of allowable named curves.
- */
-extern OSStatus SSLSetECDSACurves(
-   SSLContextRef ctx,
-   const SSL_ECDSA_NamedCurve *namedCurves,
-   unsigned numCurves);
-
-/*
- * Server-specified client authentication mechanisms.
- */
-typedef enum {
-       /* doesn't appear on the wire */
-       SSLClientAuthNone = -1,
-       /* RFC 2246 7.4.6 */
-       SSLClientAuth_RSASign = 1,
-       SSLClientAuth_DSSSign = 2,
-       SSLClientAuth_RSAFixedDH = 3,
-       SSLClientAuth_DSS_FixedDH = 4,
-       /* RFC 4492 5.5 */
-       SSLClientAuth_ECDSASign = 64,
-       SSLClientAuth_RSAFixedECDH = 65,
-       SSLClientAuth_ECDSAFixedECDH = 66
-} SSLClientAuthenticationType;
-
-/* TLS 1.2 Signature Algorithms extension values for hash field. */
-typedef enum {
-    SSL_HashAlgorithmNone = 0,
-    SSL_HashAlgorithmMD5 = 1,
-    SSL_HashAlgorithmSHA1 = 2,
-    SSL_HashAlgorithmSHA224 = 3,
-    SSL_HashAlgorithmSHA256 = 4,
-    SSL_HashAlgorithmSHA384 = 5,
-    SSL_HashAlgorithmSHA512 = 6
-} SSL_HashAlgorithm;
-
-/* TLS 1.2 Signature Algorithms extension values for signature field. */
-typedef enum {
-    SSL_SignatureAlgorithmAnonymous = 0,
-    SSL_SignatureAlgorithmRSA = 1,
-    SSL_SignatureAlgorithmDSA = 2,
-    SSL_SignatureAlgorithmECDSA = 3
-} SSL_SignatureAlgorithm;
-
-typedef struct {
-    SSL_HashAlgorithm hash;
-    SSL_SignatureAlgorithm signature;
-} SSLSignatureAndHashAlgorithm;
-
-/*
- * Obtain the number of client authentication mechanisms specified by
- * the server in its Certificate Request message.
- * Returns errSecParam if server hasn't sent a Certificate Request message
- * (i.e., client certificate state is kSSLClientCertNone).
- */
-extern OSStatus SSLGetNumberOfClientAuthTypes(
-       SSLContextRef ctx,
-       unsigned *numTypes);
-
-/*
- * Obtain the client authentication mechanisms specified by
- * the server in its Certificate Request message.
- * Caller allocates returned array and specifies its size (in
- * SSLClientAuthenticationTypes) in *numType on entry; *numTypes
- * is the actual size of the returned array on successful return.
- */
-extern OSStatus SSLGetClientAuthTypes(
-   SSLContextRef ctx,
-   SSLClientAuthenticationType *authTypes,             /* RETURNED */
-   unsigned *numTypes);                                                        /* IN/OUT */
-
-/*
- * Obtain the SSLClientAuthenticationType actually performed.
- * Only valid if client certificate state is kSSLClientCertSent
- * or kSSLClientCertRejected; SSLClientAuthNone is returned as
- * the negotiated auth type otherwise.
- */
-extern OSStatus SSLGetNegotiatedClientAuthType(
-   SSLContextRef ctx,
-   SSLClientAuthenticationType *authType);             /* RETURNED */
-
-/*
- * Obtain the number of supported_signature_algorithms specified by
- * the server in its Certificate Request message.
- * Returns errSecParam if server hasn't sent a Certificate Request message
- * (i.e., client certificate state is kSSLClientCertNone).
- */
-extern OSStatus SSLGetNumberOfSignatureAlgorithms(
-    SSLContextRef ctx,
-    unsigned *numSigAlgs);
-
-/*
- * Obtain the supported_signature_algorithms specified by
- * the server in its Certificate Request message.
- * Caller allocates returned array and specifies its size (in
- * SSLClientAuthenticationTypes) in *numType on entry; *numTypes
- * is the actual size of the returned array on successful return.
- */
-extern OSStatus SSLGetSignatureAlgorithms(
-    SSLContextRef ctx,
-    SSLSignatureAndHashAlgorithm *sigAlgs,             /* RETURNED */
-    unsigned *numSigAlgs);                                                     /* IN/OUT */
-
-/* PSK SPIs */
-
-/* Set the Shared Secret for PSK CipherSuite.
-   This need to be set before the handshake starts. */
-OSStatus SSLSetPSKSharedSecret(SSLContextRef ctx,
-                               const void *secret,
-                               size_t secretLen);
-
-/* Set the Client identity for PSK CipherSuite.
-   This need to be set before the handshake starts.
-   Only useful for client side.*/
-OSStatus SSLSetPSKIdentity(SSLContextRef ctx,
-                           const void *pskIdentity,
-                           size_t pskIdentityLen);
-
-/* For client side, get the identity previously set by SSLSetPSKIdentity.
-   For server side, get the identity provided by the client during the handshake.
-   Might be NULL if not set. identity is owned by the SSLContext and is invalid once
-   the SSLContext is released.
- */
-OSStatus SSLGetPSKIdentity(SSLContextRef ctx,
-                           const void **pskIdentity,
-                           size_t *pskIdentityLen);
-    
-#if TARGET_OS_IPHONE
-
-/* Following are SPIs on iOS */
-
-/*
- * Set allowed SSL protocol versions. Optional.
- * Specifying kSSLProtocolAll for SSLSetProtocolVersionEnabled results in
- * specified 'enable' boolean to be applied to all supported protocols.
- * The default is "all supported protocols are enabled".
- * This can only be called when no session is active.
- *
- * Legal values for protocol are :
- *             kSSLProtocol2
- *             kSSLProtocol3
- *             kTLSProtocol1
- *             kSSLProtocolAll
- *
- * This is deprecated in favor of SSLSetProtocolVersionMax/SSLSetProtocolVersionMin
- */
-OSStatus
-_SSLSetProtocolVersionEnabled (SSLContextRef   context,
-                              SSLProtocol              protocol,
-                               Boolean                 enable);
-
-/*
- * Obtain a value specified in SSLSetProtocolVersionEnabled.
- *
- * This is deprecated in favor of SSLGetProtocolVersionMax/SSLGetProtocolVersionMin
- */
-OSStatus
-_SSLGetProtocolVersionEnabled(SSLContextRef            context,
-                             SSLProtocol               protocol,
-                              Boolean                  *enable);               /* RETURNED */
-
-/*
- * Get/set SSL protocol version; optional. Default is kSSLProtocolUnknown,
- * in which case the highest possible version (currently kTLSProtocol1)
- * is attempted, but a lower version is accepted if the peer requires it.
- *
- * SSLSetProtocolVersion can not be called when a session is active.
- *
- * This is deprecated in favor of SSLSetProtocolVersionEnabled.
- *
- * This is deprecated in favor of SSLSetProtocolVersionMax/SSLSetProtocolVersionMin
- */
-OSStatus
-_SSLSetProtocolVersion         (SSLContextRef          context,
-                             SSLProtocol               version);
-
-/*
- * Obtain the protocol version specified in SSLSetProtocolVersion.
- * This is deprecated in favor of SSLGetProtocolVersionEnabled.
- * If SSLSetProtocolVersionEnabled() has been called for this session,
- * SSLGetProtocolVersion() may return errSecParam if the protocol enable
- * state can not be represented by the SSLProtocol enums (e.g.,
- * SSL2 and TLS1 enabled, SSL3 disabled).
- *
- * This is deprecated in favor of SSLGetProtocolVersionMax/SSLGetProtocolVersionMin
- */
-OSStatus
-_SSLGetProtocolVersion         (SSLContextRef          context,
-                             SSLProtocol               *protocol);             /* RETURNED */
-
-/* API REVIEW:
- The following 15 calls were used to change the behaviour of the trust
- evaluation of the certificate chain.
- The proper alternative is to break out of the handshake, get the
- peer's SecTrustRef with SSLCopyPeerTrust and evaluate that.
- */
-
-/*
- * Enable/disable peer certificate chain validation. Default is enabled.
- * If caller disables, it is the caller's responsibility to call
- * SSLCopyPeerTrust() upon successful completion of the handshake
- * and then to perform external validation of the peer certificate
- * chain before proceeding with data transfer.
- */
-OSStatus
-_SSLSetEnableCertVerify                (SSLContextRef                  context,
-                             Boolean                           enableVerify);
-
-OSStatus
-_SSLGetEnableCertVerify                (SSLContextRef                  context,
-                             Boolean                           *enableVerify); /* RETURNED */
-
-/*
- * Specify the option of ignoring certificates' "expired" times.
- * This is a common failure in the real SSL world. Default for
- * this flag is false, meaning expired certs result in a
- * errSSLCertExpired error.
- */
-OSStatus
-_SSLSetAllowsExpiredCerts      (SSLContextRef          context,
-                             Boolean                   allowsExpired);
-
-/*
- * Obtain the current value of an SSLContext's "allowExpiredCerts" flag.
- */
-OSStatus
-_SSLGetAllowsExpiredCerts      (SSLContextRef          context,
-                             Boolean                   *allowsExpired); /* RETURNED */
-
-/*
- * Similar to SSLSetAllowsExpiredCerts(), this function allows the
- * option of ignoring "expired" status for root certificates only.
- * Default is false, i.e., expired root certs result in an
- * errSSLCertExpired error.
- */
-OSStatus
-_SSLSetAllowsExpiredRoots      (SSLContextRef          context,
-                             Boolean                   allowsExpired);
-
-OSStatus
-_SSLGetAllowsExpiredRoots      (SSLContextRef          context,
-                             Boolean                   *allowsExpired); /* RETURNED */
-
-/*
- * Specify option of allowing for an unknown root cert, i.e., one which
- * this software can not verify as one of a list of known good root certs.
- * Default for this flag is false, in which case one of the following two
- * errors may occur:
- *    -- The peer returns a cert chain with a root cert, and the chain
- *       verifies to that root, but the root is not one of our trusted
- *       roots. This results in errSSLUnknownRootCert on handshake.
- *    -- The peer returns a cert chain which does not contain a root cert,
- *       and we can't verify the chain to one of our trusted roots. This
- *       results in errSSLNoRootCert on handshake.
- *
- * Both of these error conditions are ignored when the AllowAnyRoot flag is true,
- * allowing connection to a totally untrusted peer.
- */
-OSStatus
-_SSLSetAllowsAnyRoot                   (SSLContextRef          context,
-                                 Boolean                       anyRoot);
-
-/*
- * Obtain the current value of an SSLContext's "allow any root" flag.
- */
-OSStatus
-_SSLGetAllowsAnyRoot                   (SSLContextRef          context,
-                                 Boolean                       *anyRoot); /* RETURNED */
-
-/*
- * Augment or replace the system's default trusted root certificate set
- * for this session. If replaceExisting is true, the specified roots will
- * be the only roots which are trusted during this session. If replaceExisting
- * is false, the specified roots will be added to the current set of trusted
- * root certs. If this function has never been called, the current trusted
- * root set is the same as the system's default trusted root set.
- * Successive calls with replaceExisting false result in accumulation
- * of additional root certs.
- *
- * The trustedRoots array contains SecCertificateRefs.
- */
-OSStatus
-_SSLSetTrustedRoots                    (SSLContextRef          context,
-                             CFArrayRef                trustedRoots,
-                             Boolean                   replaceExisting);
-
-/*
- * Obtain an array of SecCertificateRefs representing the current
- * set of trusted roots. If SSLSetTrustedRoots() has never been called
- * for this session, this returns the system's default root set.
- *
- * Caller must CFRelease the returned CFArray.
- */
-OSStatus
-_SSLCopyTrustedRoots                   (SSLContextRef          context,
-                                 CFArrayRef            *trustedRoots); /* RETURNED */
-
-/*
- * Add a SecCertificateRef, or a CFArray of them, to a server's list
- * of acceptable Certificate Authorities (CAs) to present to the client
- * when client authentication is performed.
- *
- * If replaceExisting is true, the specified certificate(s) will replace
- * a possible existing list of acceptable CAs. If replaceExisting is
- * false, the specified certificate(s) will be appended to the existing
- * list of acceptable CAs, if any.
- *
- * Returns errSecParam is this is called on an SSLContextRef which
- * is configured as a client, or when a session is active.
- */
-OSStatus
-_SSLSetCertificateAuthorities(SSLContextRef            context,
-                             CFTypeRef                 certificateOrArray,
-                              Boolean                  replaceExisting);
-
-/*
- * Obtain the certificates specified in SSLSetCertificateAuthorities(),
- * if any. Returns a NULL array if SSLSetCertificateAuthorities() has not
- * been called.
- * Caller must CFRelease the returned array.
- */
-
-OSStatus
-_SSLCopyCertificateAuthorities(SSLContextRef           context,
-                              CFArrayRef               *certificates); /* RETURNED */
-
-/*
- * Request peer certificates. Valid anytime, subsequent to
- * a handshake attempt.
- *
- * The certs argument is a CFArray containing SecCertificateRefs.
- * Caller must CFRelease the returned array.
- *
- * The cert at index 0 of the returned array is the subject (end
- * entity) cert; the root cert (or the closest cert to it) is at
- * the end of the returned array.
- */
-/* API REVIEW:
- This should be removed so that applications are not tempted to
- use this to evaluate trust, they should use the SecTrustRef returned
- by SSLCopyPeerTrust instead.
- But this maybe useful to know which certs where returned by the server
- vs which where pulled internally.
- This would be a debug feature, so we deprecate this in iOS. There
- should be an API in SecTrust to allow getting the original certificates
- for debug purpose.
- */
-OSStatus
-_SSLCopyPeerCertificates               (SSLContextRef          context,
-                             CFArrayRef                        *certs);        /* RETURNED */
-
-/*
- * Specify Diffie-Hellman parameters. Optional; if we are configured to allow
- * for D-H ciphers and a D-H cipher is negotiated, and this function has not
- * been called, a set of process-wide parameters will be calculated. However
- * that can take a long time (30 seconds).
- */
-OSStatus _SSLSetDiffieHellmanParams    (SSLContextRef                  context,
-                                     const void                        *dhParams,
-                                     size_t                                    dhParamsLen);
-
-/*
- * Return parameter block specified in SSLSetDiffieHellmanParams.
- * Returned data is not copied and belongs to the SSLContextRef.
- */
-OSStatus _SSLGetDiffieHellmanParams    (SSLContextRef                  context,
-                                     const void                        **dhParams,
-                                     size_t                                    *dhParamsLen);
-
-/*
- * Enable/Disable RSA blinding. This feature thwarts a known timing
- * attack to which RSA keys are vulnerable; enabling it is a tradeoff
- * between performance and security. The default for RSA blinding is
- * enabled.
- */
-OSStatus _SSLSetRsaBlinding                    (SSLContextRef                  context,
-                                     Boolean                           blinding);
-
-OSStatus _SSLGetRsaBlinding                    (SSLContextRef                  context,
-                                     Boolean                           *blinding);
-
-/*
- * Create a new SSL/TLS session context.
- * Deprecated: please use the allocator based functions, when available.
- */
-OSStatus
-_SSLNewContext                         (Boolean                        isServer,
-                             SSLContextRef             *tlsContextPtr);     /* RETURNED */
-
-/*
- * Dispose of an SSLContextRef.  This is effectivly a CFRelease.
- * Deprecated.
- */
-OSStatus
-_SSLDisposeContext                     (SSLContextRef          context);
-
-/* We redefine the names of all SPIs to avoid collision with unavailable APIs */
-#define SSLSetProtocolVersionEnabled _SSLSetProtocolVersionEnabled
-#define SSLGetProtocolVersionEnabled _SSLGetProtocolVersionEnabled
-#define SSLSetProtocolVersion _SSLSetProtocolVersion
-#define SSLGetProtocolVersion _SSLGetProtocolVersion
-#define SSLSetEnableCertVerify _SSLSetEnableCertVerify
-#define SSLGetEnableCertVerify _SSLGetEnableCertVerify
-#define SSLSetAllowsExpiredCerts _SSLSetAllowsExpiredCerts
-#define SSLGetAllowsExpiredCerts _SSLGetAllowsExpiredCerts
-#define SSLSetAllowsExpiredRoots _SSLSetAllowsExpiredRoots
-#define SSLGetAllowsExpiredRoots _SSLGetAllowsExpiredRoots
-#define SSLSetAllowsAnyRoot _SSLSetAllowsAnyRoot
-#define SSLGetAllowsAnyRoot _SSLGetAllowsAnyRoot
-#define SSLSetTrustedRoots _SSLSetTrustedRoots
-#define SSLCopyTrustedRoots _SSLCopyTrustedRoots
-#define SSLSetCertificateAuthorities _SSLSetCertificateAuthorities
-#define SSLCopyCertificateAuthorities _SSLCopyCertificateAuthorities
-#define SSLCopyPeerCertificates _SSLCopyPeerCertificates
-#define SSLSetDiffieHellmanParams _SSLSetDiffieHellmanParams
-#define SSLGetDiffieHellmanParams _SSLGetDiffieHellmanParams
-#define SSLSetRsaBlinding   _SSLSetRsaBlinding
-#define SSLGetRsaBlinding      _SSLGetRsaBlinding
-#define SSLNewContext _SSLNewContext
-#define SSLNewDatagramContext _SSLNewDatagramContext
-#define SSLDisposeContext _SSLDisposeContext
-
-#endif /* TARGET_OS_IPHONE */
-
-
-/*
- * Create a new Datagram TLS session context.
- * Use in place of SSLNewContext to create a DTLS session.
- * Deprecated: please use the allocator based functions, when available.
- * Also note: the symbol is prefixed with underscore in iOS (historical)
- */
-OSStatus
-SSLNewDatagramContext          (Boolean                        isServer,
-                             SSLContextRef             *dtlsContextPtr);       /* RETURNED */
-
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _SECURE_TRANSPORT_PRIV_H_ */