+++ /dev/null
-/*
- * 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_ */